Explorar o código

部门、栋舍

Newspaper hai 1 ano
pai
achega
83ee21eb2e
Modificáronse 15 ficheiros con 239 adicións e 78 borrados
  1. 2 1
      snowy-plugin/snowy-plugin-dev/src/main/java/vip/xiaonuo/dev/modular/file/entity/DevFile.java
  2. 0 1
      snowy-web-app/pom.xml
  3. 6 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseConfig/service/impl/BaseConfigServiceImpl.java
  4. 3 3
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseSeason/controller/BaseSeasonController.java
  5. 1 10
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseSeason/param/BaseSeasonEditParam.java
  6. 0 4
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseSeason/param/BaseSeasonTypeParam.java
  7. 2 2
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseSeason/service/BaseSeasonService.java
  8. 71 14
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseSeason/service/impl/BaseSeasonServiceImpl.java
  9. 55 25
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/controller/DepartmentController.java
  10. 16 3
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/entity/Department.java
  11. 3 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/param/DepartmentAddParam.java
  12. 4 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/param/DepartmentPageParam.java
  13. 6 5
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/service/DepartmentService.java
  14. 46 10
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/service/impl/DepartmentServiceImpl.java
  15. 24 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/pigpen/controller/BasePigpenController.java

+ 2 - 1
snowy-plugin/snowy-plugin-dev/src/main/java/vip/xiaonuo/dev/modular/file/entity/DevFile.java

@@ -13,6 +13,7 @@
 package vip.xiaonuo.dev.modular.file.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fhs.core.trans.vo.TransPojo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
@@ -27,7 +28,7 @@ import vip.xiaonuo.common.pojo.CommonEntity;
 @Getter
 @Setter
 @TableName("DEV_FILE")
-public class DevFile extends CommonEntity {
+public class DevFile extends CommonEntity implements TransPojo {
 
     /** id */
     @ApiModelProperty(value = "id", position = 1)

+ 0 - 1
snowy-web-app/pom.xml

@@ -123,7 +123,6 @@
             <artifactId>jsch</artifactId>
             <version>0.1.54</version>
         </dependency>
-
     </dependencies>
 
     <build>

+ 6 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseConfig/service/impl/BaseConfigServiceImpl.java

@@ -72,6 +72,9 @@ public class BaseConfigServiceImpl extends ServiceImpl<BaseConfigMapper, BaseCon
     @Override
     public void add(BaseConfigAddParam baseConfigAddParam) {
         BaseConfig baseConfig = BeanUtil.toBean(baseConfigAddParam, BaseConfig.class);
+        if (this.count(new QueryWrapper<BaseConfig>().lambda().eq(BaseConfig::getConfigName,baseConfig.getConfigName())) > 0) {
+            throw new CommonException("存在重复配置名称!");
+        }
         this.save(baseConfig);
 
         // 发布增加事件
@@ -83,6 +86,9 @@ public class BaseConfigServiceImpl extends ServiceImpl<BaseConfigMapper, BaseCon
     public void edit(BaseConfigEditParam baseConfigEditParam) {
         BaseConfig baseConfig = this.queryEntity(baseConfigEditParam.getId());
         BeanUtil.copyProperties(baseConfigEditParam, baseConfig);
+        if (this.count(new QueryWrapper<BaseConfig>().lambda().ne(BaseConfig::getId,baseConfig.getId()).eq(BaseConfig::getConfigName,baseConfig.getConfigName())) > 0) {
+            throw new CommonException("存在重复配置名称!");
+        }
         this.updateById(baseConfig);
 
         // 发布更新事件

+ 3 - 3
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseSeason/controller/BaseSeasonController.java

@@ -60,8 +60,8 @@ public class BaseSeasonController {
     @ApiOperation("获取季节详情")
     @CommonLog("获取季节详情")
     @GetMapping("/base/baseSeason/getSeason")
-    public CommonResult<BaseSeason> getSeason(BaseSeasonTypeParam baseSeasonTypeParam) throws ParseException {
-        return CommonResult.data(baseSeasonService.getSeason(baseSeasonTypeParam));
+    public CommonResult<BaseSeason> getSeason() throws ParseException {
+        return CommonResult.data(baseSeasonService.getSeason());
     }
 
 
@@ -75,7 +75,7 @@ public class BaseSeasonController {
     @ApiOperation("编辑季节")
     @CommonLog("编辑季节")
     @PostMapping("/base/baseSeason/edit")
-    public CommonResult<String> edit(@RequestBody @Valid BaseSeasonEditParam baseSeasonEditParam) {
+    public CommonResult<String> edit(@RequestBody @Valid BaseSeasonEditParam baseSeasonEditParam) throws ParseException {
         baseSeasonService.edit(baseSeasonEditParam);
         return CommonResult.ok();
     }

+ 1 - 10
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseSeason/param/BaseSeasonEditParam.java

@@ -34,55 +34,46 @@ public class BaseSeasonEditParam {
 
     /** id */
     @ApiModelProperty(value = "id", required = true, position = 1)
-    @NotBlank(message = "id不能为空")
     private String id;
 
     /** 春季开始时间 */
     @ApiModelProperty(value = "春季开始时间", required = true, position = 2)
     @JsonFormat(pattern = "MM-dd",timezone = "GMT+8")
-    @NotNull(message = "springStartTime不能为空")
     private Date springStartTime;
 
     /** 春季结束时间 */
     @ApiModelProperty(value = "春季结束时间", required = true, position = 3)
     @JsonFormat(pattern = "MM-dd",timezone = "GMT+8")
-    @NotNull(message = "springEndTime不能为空")
     private Date springEndTime;
 
     /** 夏季开始时间 */
     @ApiModelProperty(value = "夏季开始时间", required = true, position = 4)
     @JsonFormat(pattern = "MM-dd",timezone = "GMT+8")
-    @NotNull(message = "summerStartTime不能为空")
     private Date summerStartTime;
 
     /** 夏季结束时间 */
     @ApiModelProperty(value = "夏季结束时间", required = true, position = 5)
     @JsonFormat(pattern = "MM-dd",timezone = "GMT+8")
-    @NotNull(message = "summerEndTime不能为空")
     private Date summerEndTime;
 
     /** 秋季开始时间 */
     @ApiModelProperty(value = "秋季开始时间", required = true, position = 6)
     @JsonFormat(pattern = "MM-dd",timezone = "GMT+8")
-    @NotNull(message = "autumnStartTime不能为空")
     private Date autumnStartTime;
 
     /** 秋季结束时间 */
     @ApiModelProperty(value = "秋季结束时间", required = true, position = 7)
     @JsonFormat(pattern = "MM-dd",timezone = "GMT+8")
-    @NotNull(message = "autumnEndTime不能为空")
     private Date autumnEndTime;
 
     /** 冬季开始时间 */
     @ApiModelProperty(value = "冬季开始时间", required = true, position = 8)
     @JsonFormat(pattern = "MM-dd",timezone = "GMT+8")
-    @NotNull(message = "winterStartTime不能为空")
     private Date winterStartTime;
 
     /** 冬季结束时间 */
     @ApiModelProperty(value = "冬季结束时间", required = true, position = 9)
     @JsonFormat(pattern = "MM-dd",timezone = "GMT+8")
-    @NotNull(message = "winterEndTime不能为空")
     private Date winterEndTime;
 
     /** 状态 */
@@ -90,7 +81,7 @@ public class BaseSeasonEditParam {
     private Integer status;
 
     /** 季节类型 */
-    @ApiModelProperty(value = "季节类型", position = 11)
+    @ApiModelProperty(value = "季节类型", position = 11, example = "0:自定义 1:两分两至法 2:阳历划分法 3:四立划分法")
     private Integer seasonType;
 
 }

+ 0 - 4
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseSeason/param/BaseSeasonTypeParam.java

@@ -29,8 +29,4 @@ import javax.validation.constraints.NotBlank;
 @Setter
 public class BaseSeasonTypeParam {
 
-    /** seasonType */
-    @ApiModelProperty(value = "seasonType", required = true)
-    @NotBlank(message = "seasonType不能为空")
-    private Integer seasonType;
 }

+ 2 - 2
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseSeason/service/BaseSeasonService.java

@@ -34,7 +34,7 @@ public interface BaseSeasonService extends IService<BaseSeason> {
      * @author newspaper
      * @date  2023/12/18 11:14
      */
-    void edit(BaseSeasonEditParam baseSeasonEditParam);
+    void edit(BaseSeasonEditParam baseSeasonEditParam) throws ParseException;
 
     /**
      * 获取季节详情
@@ -44,5 +44,5 @@ public interface BaseSeasonService extends IService<BaseSeason> {
      **/
     BaseSeason queryEntity(String id);
 
-    BaseSeason getSeason(BaseSeasonTypeParam baseSeasonTypeParam) throws ParseException;
+    BaseSeason getSeason() throws ParseException;
 }

+ 71 - 14
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseSeason/service/impl/BaseSeasonServiceImpl.java

@@ -52,10 +52,9 @@ import java.util.List;
 @Service
 public class BaseSeasonServiceImpl extends ServiceImpl<BaseSeasonMapper, BaseSeason> implements BaseSeasonService {
     @Override
-    public BaseSeason getSeason(BaseSeasonTypeParam baseSeasonTypeParam) throws ParseException {
+    public BaseSeason getSeason() throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
         LocalDate currentDate = LocalDate.now();
-
         // 获取下一年的二月的最后一天
         LocalDate nextYearFebruaryLastDay = currentDate
                 .plusYears(1)          // 加一年
@@ -63,12 +62,11 @@ public class BaseSeasonServiceImpl extends ServiceImpl<BaseSeasonMapper, BaseSea
                 .with(TemporalAdjusters.lastDayOfMonth());  // 获取月份的最后一天
 
         String orgId = StpLoginUserUtil.getLoginUser().getOrgId();
-        Integer seasonType = baseSeasonTypeParam.getSeasonType();
-        BaseSeason baseSeason = this.getOne(new QueryWrapper<BaseSeason>().lambda().eq(BaseSeason::getOrgId, orgId).eq(BaseSeason::getSeasonType, seasonType));
+        BaseSeason baseSeason = this.getOne(new QueryWrapper<BaseSeason>().lambda().eq(BaseSeason::getOrgId, orgId).eq(BaseSeason::getSeasonType, 0));
         if (ObjectUtil.isEmpty(baseSeason)){
             baseSeason = new BaseSeason();
             baseSeason.setOrgId(orgId);
-            baseSeason.setSeasonType(seasonType);
+            baseSeason.setSeasonType(0);
             baseSeason.setSpringStartTime(sdf.parse("03-01"));
             baseSeason.setSpringEndTime(sdf.parse("05-31"));
             baseSeason.setSummerStartTime(sdf.parse("06-01"));
@@ -84,15 +82,75 @@ public class BaseSeasonServiceImpl extends ServiceImpl<BaseSeasonMapper, BaseSea
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void edit(BaseSeasonEditParam baseSeasonEditParam) {
-        BaseSeason baseSeason = this.queryEntity(baseSeasonEditParam.getId());
-        BeanUtil.copyProperties(baseSeasonEditParam, baseSeason);
-        if (baseSeason.getStatus() == 1){
-            this.update(new UpdateWrapper<BaseSeason>().lambda().set(BaseSeason::getStatus,0)
-                    .eq(BaseSeason::getOrgId,baseSeason.getOrgId()).ne(BaseSeason::getId,baseSeason.getId()));
-        }
-        this.updateById(baseSeason);
+    public void edit(BaseSeasonEditParam baseSeasonEditParam) throws ParseException {
+        String orgId = StpLoginUserUtil.getLoginUser().getOrgId();
+        Integer seasonType = baseSeasonEditParam.getSeasonType();
+        SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
+        LocalDate currentDate = LocalDate.now();
+        // 获取下一年的二月的最后一天
+        LocalDate nextYearFebruaryLastDay = currentDate
+                .plusYears(1)          // 加一年
+                .withMonth(Month.FEBRUARY.getValue())  // 设置月份为二月
+                .with(TemporalAdjusters.lastDayOfMonth());  // 获取月份的最后一天
 
+        BaseSeason baseSeason;
+        Integer status = baseSeasonEditParam.getStatus();
+        if (seasonType == 0){
+//          自定义
+            baseSeason = this.queryEntity(baseSeasonEditParam.getId());
+            BeanUtil.copyProperties(baseSeasonEditParam, baseSeason);
+            if (baseSeason.getStatus() == 1){
+                this.update(new UpdateWrapper<BaseSeason>().lambda().set(BaseSeason::getStatus,0)
+                        .eq(BaseSeason::getOrgId,baseSeason.getOrgId()).ne(BaseSeason::getId,baseSeason.getId()));
+            }
+            this.updateById(baseSeason);
+        }else {
+//          其他
+            baseSeason = this.getOne(new QueryWrapper<BaseSeason>().lambda().eq(BaseSeason::getOrgId, orgId).eq(BaseSeason::getSeasonType, seasonType));
+            if (ObjectUtil.isEmpty(baseSeason)){
+//              没有此类型
+                baseSeason = new BaseSeason();
+                baseSeason.setSeasonType(seasonType);
+                baseSeason.setStatus(status);
+                if (status == 1){
+                    this.update(new UpdateWrapper<BaseSeason>().lambda().set(BaseSeason::getStatus,0)
+                            .eq(BaseSeason::getOrgId,orgId));
+                }
+                switch (seasonType){
+//              0:自定义 1:两分两至法 2:阳历划分法 3:四立划分法
+                    case 1:
+                        baseSeason.setSpringStartTime(sdf.parse("03-21"));
+                        baseSeason.setSpringEndTime(sdf.parse("06-21"));
+                        baseSeason.setSummerStartTime(sdf.parse("06-22"));
+                        baseSeason.setSummerEndTime(sdf.parse("09-22"));
+                        baseSeason.setAutumnStartTime(sdf.parse("09-23"));
+                        baseSeason.setAutumnEndTime(sdf.parse("12-21"));
+                        baseSeason.setWinterStartTime(sdf.parse("12-22"));
+                        baseSeason.setWinterEndTime(sdf.parse("03-20"));
+                        break;
+                    case 2:
+                        baseSeason.setSpringStartTime(sdf.parse("03-01"));
+                        baseSeason.setSpringEndTime(sdf.parse("05-31"));
+                        baseSeason.setSummerStartTime(sdf.parse("06-01"));
+                        baseSeason.setSummerEndTime(sdf.parse("08-31"));
+                        baseSeason.setAutumnStartTime(sdf.parse("09-01"));
+                        baseSeason.setAutumnEndTime(sdf.parse("11-30"));
+                        baseSeason.setWinterStartTime(sdf.parse("12-01"));
+                        baseSeason.setWinterEndTime(Date.valueOf(nextYearFebruaryLastDay));
+                        break;
+                    case 3:
+                        break;
+                }
+                this.save(baseSeason);
+            }else {
+//              存在
+                baseSeason.setStatus(status);
+                if (status == 1){
+                    this.update(new UpdateWrapper<BaseSeason>().lambda().set(BaseSeason::getStatus,0)
+                            .eq(BaseSeason::getOrgId,orgId).ne(BaseSeason::getId,baseSeason.getId()));
+                }
+            }
+        }
         CommonDataChangeEventCenter.doUpdateWithData(BaseDataTypeEnum.SEASON.getValue(), JSONUtil.createArray().put(baseSeason));
     }
 
@@ -105,5 +163,4 @@ public class BaseSeasonServiceImpl extends ServiceImpl<BaseSeasonMapper, BaseSea
         return baseSeason;
     }
 
-
 }

+ 55 - 25
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/controller/DepartmentController.java

@@ -12,6 +12,7 @@
  */
 package vip.xiaonuo.modular.base.department.controller;
 
+import cn.hutool.core.lang.tree.Tree;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
@@ -26,11 +27,9 @@ import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
 import vip.xiaonuo.modular.base.department.entity.Department;
-import vip.xiaonuo.modular.base.department.param.DepartmentAddParam;
-import vip.xiaonuo.modular.base.department.param.DepartmentEditParam;
-import vip.xiaonuo.modular.base.department.param.DepartmentIdParam;
-import vip.xiaonuo.modular.base.department.param.DepartmentPageParam;
+import vip.xiaonuo.modular.base.department.param.*;
 import vip.xiaonuo.modular.base.department.service.DepartmentService;
+import vip.xiaonuo.sys.modular.user.entity.SysUser;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -44,7 +43,7 @@ import java.util.List;
  * @date  2023/12/13 08:44
  */
 @Api(tags = "部门控制器")
-@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@ApiSupport(author = "HUIMV", order = 1)
 @RestController
 @Validated
 public class DepartmentController {
@@ -53,12 +52,40 @@ public class DepartmentController {
     private DepartmentService departmentService;
 
     /**
-     * 获取部门分页
+     * 获取部门
      *
      * @author newspaper
      * @date  2023/12/13 08:44
      */
     @ApiOperationSupport(order = 1)
+    @ApiOperation("获取部门树")
+    @GetMapping("/base/department/tree")
+    public CommonResult<List<Tree<String>>> tree() {
+        return CommonResult.data(departmentService.tree());
+    }
+
+    /**
+     * 获取所有部门
+     *
+     * @author newspaper
+     * @date  2023/12/13 08:44
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("获取下级部门")
+    @GetMapping("/base/department/listChild")
+    public CommonResult<Page<Department>> listChild(DepartmentChildParam departmentChildParam) {
+        return CommonResult.data(departmentService.listChild(departmentChildParam));
+    }
+
+
+
+    /**
+     * 获取部门分页
+     *
+     * @author newspaper
+     * @date  2023/12/13 08:44
+     */
+    @ApiOperationSupport(order = 3)
     @ApiOperation("获取部门分页")
     @GetMapping("/base/department/page")
     public CommonResult<Page<Department>> page(DepartmentPageParam departmentPageParam) {
@@ -70,19 +97,19 @@ public class DepartmentController {
      * @author newspaper
      * @date  2023/12/13 08:44
      */
-    @ApiOperationSupport(order = 2)
+    @ApiOperationSupport(order = 4)
     @ApiOperation("添加部门")
     @CommonLog("添加部门")
     @PostMapping("/base/department/add")
-    public CommonResult<String> add(@RequestParam @ApiParam(value = "部门名称") String departmentName,
-                                    @RequestParam @ApiParam(value = "上级部门ID") String parentId,
-                                    @RequestParam @ApiParam(value = "所在区域") String departmentRegion,
-                                    @RequestParam @ApiParam(value = "详细地址") String detailLocation,
-                                    @RequestParam(required = false) @ApiParam(value = "部门电话") String departmentPhone,
-                                    @RequestParam(required = false) @ApiParam(value = "部门负责人") String departmentManager,
-                                    @RequestParam(required = false) @ApiParam(value = "描述") String remarks,
-                                    @RequestParam(required = false) @ApiParam(value = "排序码") Integer sortCode,
-                                    @RequestParam(value = "departmentImgUrl", required = false) @ApiParam(value = "部门图片") MultipartFile departmentImgUrl) {
+    public CommonResult<String> add(@RequestPart @ApiParam(value = "部门名称") String departmentName,
+                                    @RequestPart @ApiParam(value = "上级部门ID") String parentId,
+                                    @RequestPart @ApiParam(value = "所在区域") String departmentRegion,
+                                    @RequestPart @ApiParam(value = "详细地址") String detailLocation,
+                                    @RequestPart(required = false) @ApiParam(value = "部门电话") String departmentPhone,
+                                    @RequestPart(required = false) @ApiParam(value = "部门负责人") String departmentManager,
+                                    @RequestPart(required = false) @ApiParam(value = "描述") String remarks,
+                                    @RequestPart(required = false) @ApiParam(value = "排序码") Integer sortCode,
+                                    @RequestPart(value = "departmentImgUrl", required = false) @ApiParam(value = "部门图片") MultipartFile departmentImgUrl) {
         departmentService.add(departmentName,parentId,departmentRegion,detailLocation,departmentPhone,departmentManager,remarks,sortCode,departmentImgUrl);
         return CommonResult.ok();
     }
@@ -93,7 +120,7 @@ public class DepartmentController {
      * @author newspaper
      * @date  2023/12/13 08:44
      */
-    @ApiOperationSupport(order = 3)
+    @ApiOperationSupport(order = 5)
     @ApiOperation("编辑部门")
     @CommonLog("编辑部门")
     @PostMapping("/base/department/edit")
@@ -117,7 +144,7 @@ public class DepartmentController {
      * @author newspaper
      * @date  2023/12/13 08:44
      */
-    @ApiOperationSupport(order = 4)
+    @ApiOperationSupport(order = 6)
     @ApiOperation("删除部门")
     @CommonLog("删除部门")
     @PostMapping("/base/department/delete")
@@ -133,7 +160,7 @@ public class DepartmentController {
      * @author newspaper
      * @date  2023/12/13 08:44
      */
-    @ApiOperationSupport(order = 5)
+    @ApiOperationSupport(order = 7)
     @ApiOperation("获取部门详情")
     @GetMapping("/base/department/detail")
     public CommonResult<Department> detail(@Valid DepartmentIdParam departmentIdParam) {
@@ -141,15 +168,18 @@ public class DepartmentController {
     }
 
     /**
-     * 获取所有部门
+     * 获取人员选择器
      *
      * @author newspaper
      * @date  2023/12/13 08:44
      */
-    @ApiOperationSupport(order = 6)
-    @ApiOperation("获取所有部门")
-    @GetMapping("/base/department/departmentSelector")
-    public CommonResult<List<Department>> departmentSelector() {
-        return CommonResult.data(departmentService.departmentSelector());
+    @ApiOperationSupport(order = 7)
+    @ApiOperation("获取人员选择器")
+    @GetMapping("/base/department/userSelector")
+    public CommonResult<List<SysUser>> userSelector() {
+        return CommonResult.data(departmentService.userSelector());
     }
+
+
+
 }

+ 16 - 3
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/entity/Department.java

@@ -20,6 +20,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 import vip.xiaonuo.common.pojo.CommonEntity;
+import vip.xiaonuo.dev.modular.file.entity.DevFile;
 import vip.xiaonuo.sys.modular.user.entity.SysUser;
 
 import java.util.Date;
@@ -45,11 +46,13 @@ public class Department extends CommonEntity implements TransPojo {
     private String departmentName;
 
     /** 部门照片 */
-    @ApiModelProperty(value = "部门照片", position = 3)
-    private String departmentImgUrl;
+    @ApiModelProperty(value = "部门照片id", position = 3)
+    @Trans(type = TransType.SIMPLE, target = DevFile.class, fields = "thumbnail", alias = "img", ref = "departmentImgUrl")
+    private String departmentImgId;
 
     /** 上级部门ID */
     @ApiModelProperty(value = "上级部门ID", position = 4)
+    @Trans(type = TransType.SIMPLE, target = Department.class, fields = "departmentName", alias = "parent", ref = "parentName")
     private String parentId;
 
     /** 所在区域 */
@@ -83,7 +86,17 @@ public class Department extends CommonEntity implements TransPojo {
     private String orgId;
 
     /** 负责人名称 */
-    @ApiModelProperty(value = "负责人名称", position = 12)
+    @ApiModelProperty(value = "负责人", position = 12)
     @TableField(exist = false)
     private String managerName;
+
+    /** 上级部门 */
+    @ApiModelProperty(value = "上级部门", position = 13)
+    @TableField(exist = false)
+    private String parentName;
+
+    /** 部门照片 */
+    @ApiModelProperty(value = "部门照片", position = 3)
+    @TableField(exist = false)
+    private String departmentImgUrl;
 }

+ 3 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/param/DepartmentAddParam.java

@@ -66,5 +66,8 @@ public class DepartmentAddParam {
     @NotNull(message = "sortCode不能为空")
     private Integer sortCode;
 
+    @ApiModelProperty(value = "部门照片", position = 10)
+    private String departmentImgUrl;
+
 
 }

+ 4 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/param/DepartmentPageParam.java

@@ -46,4 +46,8 @@ public class DepartmentPageParam {
     @ApiModelProperty(value = "关键词")
     private String searchKey;
 
+    /** 父id */
+    @ApiModelProperty(value = "父id")
+    private String parentId;
+
 }

+ 6 - 5
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/service/DepartmentService.java

@@ -12,14 +12,13 @@
  */
 package vip.xiaonuo.modular.base.department.service;
 
+import cn.hutool.core.lang.tree.Tree;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.modular.base.department.entity.Department;
-import vip.xiaonuo.modular.base.department.param.DepartmentAddParam;
-import vip.xiaonuo.modular.base.department.param.DepartmentEditParam;
-import vip.xiaonuo.modular.base.department.param.DepartmentIdParam;
-import vip.xiaonuo.modular.base.department.param.DepartmentPageParam;
+import vip.xiaonuo.modular.base.department.param.*;
+import vip.xiaonuo.sys.modular.user.entity.SysUser;
 
 import java.util.List;
 
@@ -79,7 +78,9 @@ public interface DepartmentService extends IService<Department> {
      **/
     Department queryEntity(String id);
 
-    List<Department> departmentSelector();
+    List<Tree<String>> tree();
 
+    Page<Department> listChild(DepartmentChildParam departmentChildParam);
 
+    List<SysUser> userSelector();
 }

+ 46 - 10
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/department/service/impl/DepartmentServiceImpl.java

@@ -14,9 +14,13 @@ package vip.xiaonuo.modular.base.department.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.lang.tree.Tree;
+import cn.hutool.core.lang.tree.TreeNode;
+import cn.hutool.core.lang.tree.TreeUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -24,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
+import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
@@ -32,19 +37,19 @@ import vip.xiaonuo.common.page.CommonPageRequest;
 import vip.xiaonuo.core.enums.BaseDataTypeEnum;
 import vip.xiaonuo.dev.modular.file.enums.DevFileEngineTypeEnum;
 import vip.xiaonuo.dev.modular.file.service.DevFileService;
+import vip.xiaonuo.modular.base.baseConfig.entity.BaseConfig;
 import vip.xiaonuo.modular.base.department.entity.Department;
 import vip.xiaonuo.modular.base.department.mapper.DepartmentMapper;
-import vip.xiaonuo.modular.base.department.param.DepartmentAddParam;
-import vip.xiaonuo.modular.base.department.param.DepartmentEditParam;
-import vip.xiaonuo.modular.base.department.param.DepartmentIdParam;
-import vip.xiaonuo.modular.base.department.param.DepartmentPageParam;
+import vip.xiaonuo.modular.base.department.param.*;
 import vip.xiaonuo.modular.base.department.service.DepartmentService;
 import vip.xiaonuo.sys.core.enums.SysDataTypeEnum;
 import vip.xiaonuo.sys.modular.user.entity.SysUser;
 import vip.xiaonuo.sys.modular.user.mapper.SysUserMapper;
 
 import javax.validation.constraints.NotBlank;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 部门Service接口实现类
@@ -61,6 +66,22 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
     @Autowired
     private DevFileService devFileService;
 
+
+
+    @Override
+    public List<Tree<String>> tree() {
+        String orgId = StpLoginUserUtil.getLoginUser().getOrgId();
+        List<Department> allDepartment= new ArrayList<>();
+        List<Department> baseConfigs = this.list(new LambdaQueryWrapper<Department>().eq(Department::getOrgId, orgId).orderByAsc(Department::getSortCode));
+
+        allDepartment.addAll(baseConfigs);
+        List<TreeNode<String>> treeNodeList = allDepartment.stream().map(department ->
+                new TreeNode<>(department.getId(), department.getParentId(),
+                        department.getDepartmentName(), department.getSortCode()).setExtra(JSONUtil.parseObj(department)))
+                .collect(Collectors.toList());
+        return TreeUtil.build(treeNodeList, "0");
+    }
+
     @Override
     public Page<Department> page(DepartmentPageParam departmentPageParam) {
         QueryWrapper<Department> queryWrapper = new QueryWrapper<>();
@@ -71,6 +92,12 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         } else {
             queryWrapper.lambda().orderByAsc(Department::getSortCode);
         }
+        if (ObjectUtil.isNotEmpty(departmentPageParam.getParentId())){
+            queryWrapper.lambda().eq(Department::getParentId,departmentPageParam.getParentId());
+        }
+        if (ObjectUtil.isNotEmpty(departmentPageParam.getSearchKey())){
+            queryWrapper.lambda().eq(Department::getDepartmentName,departmentPageParam.getSearchKey());
+        }
         return this.page(CommonPageRequest.defaultPage(), queryWrapper);
     }
 
@@ -90,8 +117,8 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         department.setRemarks(remarks);
         department.setSortCode(sortCode);
         if (ObjectUtil.isNotEmpty(departmentImgUrl)){
-            String uploadReturnUrl = devFileService.uploadReturnUrl(DevFileEngineTypeEnum.LOCAL.getValue(), departmentImgUrl);
-            department.setDepartmentImgUrl(uploadReturnUrl);
+            String uploadReturnUrl = devFileService.uploadReturnId(DevFileEngineTypeEnum.LOCAL.getValue(), departmentImgUrl);
+            department.setDepartmentImgId(uploadReturnUrl);
         }
         this.save(department);
 
@@ -115,8 +142,8 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         department.setRemarks(remarks);
         department.setSortCode(sortCode);
         if (ObjectUtil.isNotEmpty(departmentImgUrl)){
-            String uploadReturnUrl = devFileService.uploadReturnUrl(DevFileEngineTypeEnum.LOCAL.getValue(), departmentImgUrl);
-            department.setDepartmentImgUrl(uploadReturnUrl);
+            String uploadReturnUrl = devFileService.uploadReturnId(DevFileEngineTypeEnum.LOCAL.getValue(), departmentImgUrl);
+            department.setDepartmentImgId(uploadReturnUrl);
         }
         this.updateById(department);
 
@@ -158,9 +185,18 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
     }
 
     @Override
-    public List<Department> departmentSelector() {
+    public Page<Department> listChild(DepartmentChildParam departmentChildParam) {
         String orgId = StpLoginUserUtil.getLoginUser().getOrgId();
-        List<Department> departmentList = this.list(new QueryWrapper<Department>().lambda().eq(Department::getOrgId, orgId));
+        Page<Department> departmentList = this.page(CommonPageRequest.defaultPage(),new QueryWrapper<Department>().lambda().eq(Department::getOrgId, orgId).eq(Department::getParentId,departmentChildParam.getParentId()));
         return departmentList;
     }
+
+    @Override
+    public List<SysUser> userSelector() {
+        String orgId = StpLoginUserUtil.getLoginUser().getOrgId();
+        List<SysUser> users = sysUserMapper.selectList(new QueryWrapper<SysUser>().eq("ORG_ID", orgId));
+        return users;
+    }
+
+
 }

+ 24 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/pigpen/controller/BasePigpenController.java

@@ -13,19 +13,24 @@
 package vip.xiaonuo.modular.base.pigpen.controller;
 
 import cn.hutool.core.lang.tree.Tree;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.modular.base.baseConfig.entity.BaseConfig;
+import vip.xiaonuo.modular.base.baseConfig.service.BaseConfigService;
 import vip.xiaonuo.modular.base.pigpen.entity.BasePigpen;
 import vip.xiaonuo.modular.base.pigpen.param.BasePigpenAddParam;
 import vip.xiaonuo.modular.base.pigpen.param.BasePigpenEditParam;
@@ -50,6 +55,9 @@ import java.util.List;
 @Validated
 public class BasePigpenController {
 
+    @Autowired
+    private BaseConfigService baseConfigService;
+
     @Resource
     private BasePigpenService basePigpenService;
 
@@ -137,4 +145,20 @@ public class BasePigpenController {
     public CommonResult<BasePigpen> detail(@Valid BasePigpenIdParam basePigpenIdParam) {
         return CommonResult.data(basePigpenService.detail(basePigpenIdParam));
     }
+
+    /**
+     * 获取栋舍阶段选择器
+     *
+     * @author newspaper
+     * @date  2023/12/22 9:13
+     */
+    @ApiOperationSupport(order = 6)
+    @ApiOperation("获取栋舍阶段选择器")
+    @GetMapping("/biz/pigpen/stageSelector")
+    public CommonResult<List<BaseConfig>> typeSelector() {
+        String orgId = StpLoginUserUtil.getLoginUser().getOrgId();
+        BaseConfig baseConfig = baseConfigService.getOne(new QueryWrapper<BaseConfig>().lambda().eq(BaseConfig::getConfigName, "栋舍阶段").eq(BaseConfig::getParentId, 0));
+        List<BaseConfig> baseConfigs = baseConfigService.list(new QueryWrapper<BaseConfig>().lambda().eq(BaseConfig::getParentId, baseConfig.getId()).eq(BaseConfig::getOrgId, orgId));
+        return CommonResult.data(baseConfigs);
+    }
 }