From 786ee0e73509f54805520e911df93841e9148166 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期日, 28 四月 2024 17:05:56 +0800
Subject: [PATCH] 点位优化

---
 ycl-server/src/main/java/com/ycl/system/controller/SysDeptController.java      |    8 +
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java             |    8 
 ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java           |   20 ++
 ycl-pojo/src/main/java/com/ycl/platform/base/Cascader.java                     |   30 ++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java               |   13 +
 ycl-pojo/src/main/java/com/ycl/platform/base/BaseSelect.java                   |    3 
 ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java   |   76 ++++++++--
 ycl-pojo/src/main/java/com/ycl/platform/base/AbsForm.java                      |    3 
 ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml                    |   35 +++++
 ycl-server/src/main/java/com/ycl/system/service/ISysDeptService.java           |   37 +++--
 ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java                        |    1 
 ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java            |    4 
 ycl-server/src/main/java/com/ycl/system/mapper/SysDeptMapper.java              |   44 ++++--
 ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java |   46 ++---
 ycl-server/src/main/resources/mapper/system/SysDeptMapper.xml                  |   52 +++++--
 15 files changed, 271 insertions(+), 109 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsForm.java b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsForm.java
index d22ecf2..643708e 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsForm.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsForm.java
@@ -3,6 +3,7 @@
 import com.ycl.system.domain.group.Update;
 import io.swagger.annotations.ApiModelProperty;
 import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 /**
@@ -15,7 +16,7 @@
 public abstract class AbsForm {
 
     @ApiModelProperty(value = "id,淇敼蹇呬紶", required = false)
-    @NotBlank(message = "璇烽�夋嫨鏁版嵁", groups = {Update.class})
+    @NotNull(message = "璇烽�夋嫨鏁版嵁", groups = {Update.class})
     private Integer id;
 
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java
index dada523..8824fd9 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java
@@ -4,6 +4,7 @@
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 鍩虹鍝嶅簲
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/base/BaseSelect.java b/ycl-pojo/src/main/java/com/ycl/platform/base/BaseSelect.java
index 94c3200..3812972 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/base/BaseSelect.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/base/BaseSelect.java
@@ -15,8 +15,9 @@
     private Integer id;
 
     /**
-     * 鍊�
+     * 灞曠ず鍐呭
      */
     private String value;
 
+
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/base/Cascader.java b/ycl-pojo/src/main/java/com/ycl/platform/base/Cascader.java
new file mode 100644
index 0000000..3641c24
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/base/Cascader.java
@@ -0,0 +1,30 @@
+package com.ycl.platform.base;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 绾ц仈閫夋嫨鏁版嵁鏍煎紡
+ *
+ * @author锛歺p
+ * @date锛�2024/4/28 14:37
+ */
+@Data
+public class Cascader {
+
+    /**
+     * 閫変腑
+     */
+    private Long value;
+
+    /**
+     * 鏄剧ず
+     */
+    private String label;
+
+    private Long parentId;
+
+    private List<Cascader> Children;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java
index ba79866..e041929 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java
@@ -39,7 +39,7 @@
 
     @ApiModelProperty("杩愮淮鍗曚綅")
     @TableField(value = "unit_id", updateStrategy = FieldStrategy.IGNORED)
-    private Integer unitId;
+    private Long unitId;
 
     @ApiModelProperty("杩愮淮鐘舵��")
     @TableField("status")
@@ -48,15 +48,17 @@
     @ApiModelProperty("澶囨敞")
     @TableField("remark")
     private String remark;
+
     @ApiModelProperty("杩愮淮绫诲瀷")
     @TableField("category")
     private Short category;
+
     @ApiModelProperty("涓婃姤閮ㄩ棬")
     @TableField("dept_id")
     private Long deptId;
 
-    @TableField("point_detail")
-    private String pointDetail;
+    @TableField("point_tag")
+    private String pointTag;
 
 
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java
index 7b8274d..b5725f2 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java
@@ -4,6 +4,7 @@
 import com.ycl.system.domain.group.Add;
 import com.ycl.platform.base.AbsForm;
 import com.ycl.platform.domain.entity.YwPoint;
+import jakarta.validation.constraints.NotEmpty;
 import org.springframework.beans.BeanUtils;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
@@ -14,6 +15,7 @@
 import lombok.experimental.Accessors;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * 杩愮淮鐐逛綅琛ㄥ崟
@@ -42,16 +44,22 @@
     @ApiModelProperty("杩愮淮鍗曚綅")
     private Integer unitId;
 
-//    @NotBlank(message = "杩愮淮鐘舵�佷笉鑳戒负绌�", groups = {Add.class, Update.class})
+    @NotNull(message = "鐩戠閮ㄩ棬涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    @ApiModelProperty("鐩戠閮ㄩ棬")
+    private Long deptId;
+
+    @NotEmpty(message = "鐐逛綅鏍囩涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    @ApiModelProperty("鐐逛綅鏍囩")
+    private List<String> pointTag;
+
     @ApiModelProperty("杩愮淮鐘舵��")
     private String status;
 
+    @ApiModelProperty("澶囨敞")
+    private String remark;
 
-    private String pointDetail;
-
-//    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = {Add.class, Update.class})
-//    @ApiModelProperty("澶囨敞")
-//    private String remark;
+    @ApiModelProperty("绫诲瀷")
+    private Short category;
 
     public static YwPoint getEntityByForm(@NonNull YwPointForm form, YwPoint entity) {
         if(entity == null) {
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java
index 0d38715..a67e7dc 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java
@@ -1,6 +1,5 @@
 package com.ycl.platform.domain.vo;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.ycl.platform.base.AbsVo;
 import com.ycl.platform.domain.entity.YwPoint;
 
@@ -8,8 +7,6 @@
 import java.util.List;
 import org.springframework.lang.NonNull;
 import org.springframework.beans.BeanUtils;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -33,7 +30,7 @@
     private LocalDateTime endTime;
 
     /** 杩愮淮鍗曚綅 */
-    private Integer unitId;
+    private Long unitId;
     private String unitName;
 
     /** 杩愮淮鐘舵�� */
@@ -44,8 +41,14 @@
 
     private Short category;
 
+    /** 鐩戠閮ㄩ棬 */
+    private Long deptId;
+    private List<Long> deptIds;
     private String deptName;
-    private String pointDetail;
+
+    /** 鐐逛綅鏍囩 */
+    private String [] pointTags;
+    private String pointTagString;
 
     public static YwPointVO getVoByEntity(@NonNull YwPoint entity, YwPointVO vo) {
         if(vo == null) {
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
index 16e18a6..b7a099a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
@@ -1,8 +1,10 @@
 package com.ycl.platform.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.platform.base.BaseSelect;
 import com.ycl.platform.domain.entity.YwPoint;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.platform.domain.query.YwPointQuery;
 import com.ycl.platform.domain.vo.YwPointVO;
 import com.ycl.platform.domain.form.YwPointForm;
 import java.util.List;
@@ -27,4 +29,6 @@
      * @return
      */
     List<BaseSelect> selectData(@Param("keyword") String keyword, @Param("unitId") Integer unitId);
+
+    IPage page(IPage<YwPointVO> page, @Param("query") YwPointQuery query);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
index b297192..6941537 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
@@ -21,6 +21,7 @@
 import java.util.List;
 
 import com.ycl.system.entity.SysUser;
+import com.ycl.system.mapper.SysDeptMapper;
 import com.ycl.system.service.ISysDeptService;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -48,11 +49,8 @@
 @RequiredArgsConstructor
 public class YwPointServiceImpl extends ServiceImpl<YwPointMapper, YwPoint> implements YwPointService {
 
-    private final YwPointMapper ywPointMapper;
-    private final ISysDeptService deptService;
+    private final SysDeptMapper sysDeptMapper;
     private final YwUnitService unitService;
-    private final YwUnitMapper ywUnitMapper;
-    private final RegionMapper regionMapper;
     private final YwPeopleMapper ywPeopleMapper;
 
     /**
@@ -109,16 +107,12 @@
      */
     @Override
     public Result update(YwPointForm form) {
-
         YwPoint entity = baseMapper.selectById(form.getId());
-
-        // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
         Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
         BeanUtils.copyProperties(form, entity);
-        if (baseMapper.updateById(entity) > 0) {
-            return Result.ok("淇敼鎴愬姛");
-        }
-        return Result.error("淇敼澶辫触");
+        entity.setPointTag(form.getPointTag().stream().collect(Collectors.joining(",")));
+        baseMapper.updateById(entity);
+        return Result.ok("淇敼鎴愬姛");
     }
 
     /**
@@ -154,21 +148,14 @@
      */
     @Override
     public Result page(YwPointQuery query) {
-
-        IPage<YwPoint> page = new LambdaQueryChainWrapper<>(baseMapper)
-                .like(StringUtils.hasText(query.getPointName()), YwPoint::getPointName, query.getPointName())
-                .orderByDesc(YwPoint::getCreateTime)
-                .page(PageUtil.getPage(query, YwPoint.class));
-
-        List<YwPointVO> vos = page.getRecords().stream()
-                .map(
-                        entity -> YwPointVO.getVoByEntity(entity, null)
-                                .setDeptName(deptService.selectDeptById(entity.getDeptId()).getDeptName())
-                                .setUnitName(unitService.getById(entity.getUnitId()).getUnitName())
-                )
-                .collect(Collectors.toList());
-
-        return Result.ok().data(vos).total(page.getTotal());
+        IPage<YwPointVO> page = PageUtil.getPage(query, YwPointVO.class);
+        baseMapper.page(page, query);
+        page.getRecords().stream().forEach(point -> {
+            if (StringUtils.hasText(point.getPointTagString())) {
+                point.setPointTags(point.getPointTagString().split(","));
+            }
+        });
+        return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
     /**
@@ -178,10 +165,15 @@
      */
     @Override
     public Result detail(String id) {
-
         YwPoint entity = baseMapper.selectById(id);
         Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
         YwPointVO vo = YwPointVO.getVoByEntity(entity, null);
+        if (StringUtils.hasText(entity.getPointTag())) {
+            vo.setPointTags(entity.getPointTag().split(","));
+        }
+        if (Objects.nonNull(entity.getDeptId())) {
+            vo.setDeptIds(sysDeptMapper.selectParents(entity.getDeptId()));
+        }
         return Result.ok().data(vo);
     }
 
diff --git a/ycl-server/src/main/java/com/ycl/system/controller/SysDeptController.java b/ycl-server/src/main/java/com/ycl/system/controller/SysDeptController.java
index 8771d99..fa070b0 100644
--- a/ycl-server/src/main/java/com/ycl/system/controller/SysDeptController.java
+++ b/ycl-server/src/main/java/com/ycl/system/controller/SysDeptController.java
@@ -19,7 +19,7 @@
 
 /**
  * 閮ㄩ棬淇℃伅
- * 
+ *
  * @author ruoyi
  */
 @RestController
@@ -134,4 +134,10 @@
     public Result pullList() {
         return deptService.pullList();
     }
+
+    @GetMapping("/cascader")
+    @ApiOperation(value = "閮ㄩ棬绾ц仈閫夋嫨鏁版嵁", notes = "閮ㄩ棬绾ц仈閫夋嫨鏁版嵁")
+    public Result cascader() {
+        return deptService.cascader();
+    }
 }
diff --git a/ycl-server/src/main/java/com/ycl/system/mapper/SysDeptMapper.java b/ycl-server/src/main/java/com/ycl/system/mapper/SysDeptMapper.java
index 42b54da..effeed2 100644
--- a/ycl-server/src/main/java/com/ycl/system/mapper/SysDeptMapper.java
+++ b/ycl-server/src/main/java/com/ycl/system/mapper/SysDeptMapper.java
@@ -1,5 +1,6 @@
 package com.ycl.system.mapper;
 
+import com.ycl.platform.base.Cascader;
 import com.ycl.system.entity.SysDept;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -8,7 +9,7 @@
 
 /**
  * 閮ㄩ棬绠$悊 鏁版嵁灞�
- * 
+ *
  * @author ruoyi
  */
 @Mapper
@@ -16,7 +17,7 @@
 {
     /**
      * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 閮ㄩ棬淇℃伅闆嗗悎
      */
@@ -24,7 +25,7 @@
 
     /**
      * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
-     * 
+     *
      * @param roleId 瑙掕壊ID
      * @param deptCheckStrictly 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�
      * @return 閫変腑閮ㄩ棬鍒楄〃
@@ -33,7 +34,7 @@
 
     /**
      * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 閮ㄩ棬淇℃伅
      */
@@ -41,7 +42,7 @@
 
     /**
      * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 閮ㄩ棬鍒楄〃
      */
@@ -49,7 +50,7 @@
 
     /**
      * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 瀛愰儴闂ㄦ暟
      */
@@ -57,7 +58,7 @@
 
     /**
      * 鏄惁瀛樺湪瀛愯妭鐐�
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉
      */
@@ -65,7 +66,7 @@
 
     /**
      * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉
      */
@@ -73,7 +74,7 @@
 
     /**
      * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴
-     * 
+     *
      * @param deptName 閮ㄩ棬鍚嶇О
      * @param parentId 鐖堕儴闂↖D
      * @return 缁撴灉
@@ -82,7 +83,7 @@
 
     /**
      * 鏂板閮ㄩ棬淇℃伅
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -90,7 +91,7 @@
 
     /**
      * 淇敼閮ㄩ棬淇℃伅
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -98,14 +99,14 @@
 
     /**
      * 淇敼鎵�鍦ㄩ儴闂ㄦ甯哥姸鎬�
-     * 
+     *
      * @param deptIds 閮ㄩ棬ID缁�
      */
     public void updateDeptStatusNormal(Long[] deptIds);
 
     /**
      * 淇敼瀛愬厓绱犲叧绯�
-     * 
+     *
      * @param depts 瀛愬厓绱�
      * @return 缁撴灉
      */
@@ -113,9 +114,24 @@
 
     /**
      * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉
      */
     public int deleteDeptById(Long deptId);
+
+    /**
+     * 绾ц仈鏁版嵁
+     *
+     * @return
+     */
+    List<Cascader> cascader();
+
+    /**
+     * 鏌ヨ鑷繁鐨勭埗绫婚儴闂↖D
+     *
+     * @param deptId
+     * @return
+     */
+    List<Long> selectParents(@Param("id") Long deptId);
 }
diff --git a/ycl-server/src/main/java/com/ycl/system/service/ISysDeptService.java b/ycl-server/src/main/java/com/ycl/system/service/ISysDeptService.java
index bc79014..ad7deb7 100644
--- a/ycl-server/src/main/java/com/ycl/system/service/ISysDeptService.java
+++ b/ycl-server/src/main/java/com/ycl/system/service/ISysDeptService.java
@@ -8,14 +8,14 @@
 
 /**
  * 閮ㄩ棬绠$悊 鏈嶅姟灞�
- * 
+ *
  * @author ruoyi
  */
 public interface ISysDeptService
 {
     /**
      * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 閮ㄩ棬淇℃伅闆嗗悎
      */
@@ -23,7 +23,7 @@
 
     /**
      * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭�
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 閮ㄩ棬鏍戜俊鎭泦鍚�
      */
@@ -31,7 +31,7 @@
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
-     * 
+     *
      * @param depts 閮ㄩ棬鍒楄〃
      * @return 鏍戠粨鏋勫垪琛�
      */
@@ -39,7 +39,7 @@
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
-     * 
+     *
      * @param depts 閮ㄩ棬鍒楄〃
      * @return 涓嬫媺鏍戠粨鏋勫垪琛�
      */
@@ -47,7 +47,7 @@
 
     /**
      * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
-     * 
+     *
      * @param roleId 瑙掕壊ID
      * @return 閫変腑閮ㄩ棬鍒楄〃
      */
@@ -55,7 +55,7 @@
 
     /**
      * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 閮ㄩ棬淇℃伅
      */
@@ -63,7 +63,7 @@
 
     /**
      * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 瀛愰儴闂ㄦ暟
      */
@@ -71,7 +71,7 @@
 
     /**
      * 鏄惁瀛樺湪閮ㄩ棬瀛愯妭鐐�
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉
      */
@@ -79,7 +79,7 @@
 
     /**
      * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
      */
@@ -87,7 +87,7 @@
 
     /**
      * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -95,14 +95,14 @@
 
     /**
      * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄�
-     * 
+     *
      * @param deptId 閮ㄩ棬id
      */
     public void checkDeptDataScope(Long deptId);
 
     /**
      * 鏂板淇濆瓨閮ㄩ棬淇℃伅
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -110,7 +110,7 @@
 
     /**
      * 淇敼淇濆瓨閮ㄩ棬淇℃伅
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -118,7 +118,7 @@
 
     /**
      * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉
      */
@@ -134,4 +134,11 @@
      * @return
      */
     Result pullList();
+
+    /**
+     * 閮ㄩ棬绾ц仈鏁版嵁
+     *
+     * @return
+     */
+    Result cascader();
 }
diff --git a/ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java b/ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
index e513424..0025f7a 100644
--- a/ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
@@ -3,6 +3,7 @@
 import annotation.DataScope;
 import com.ycl.exception.ServiceException;
 import com.ycl.platform.base.BaseSelect;
+import com.ycl.platform.base.Cascader;
 import com.ycl.system.Result;
 import com.ycl.system.domain.TreeSelect;
 import com.ycl.system.entity.SysDept;
@@ -19,14 +20,12 @@
 import org.springframework.stereotype.Service;
 import utils.text.Convert;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
  * 閮ㄩ棬绠$悊 鏈嶅姟瀹炵幇
- * 
+ *
  * @author ruoyi
  */
 @Service
@@ -40,7 +39,7 @@
 
     /**
      * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 閮ㄩ棬淇℃伅闆嗗悎
      */
@@ -53,7 +52,7 @@
 
     /**
      * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭�
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 閮ㄩ棬鏍戜俊鎭泦鍚�
      */
@@ -66,7 +65,7 @@
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
-     * 
+     *
      * @param depts 閮ㄩ棬鍒楄〃
      * @return 鏍戠粨鏋勫垪琛�
      */
@@ -93,7 +92,7 @@
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
-     * 
+     *
      * @param depts 閮ㄩ棬鍒楄〃
      * @return 涓嬫媺鏍戠粨鏋勫垪琛�
      */
@@ -106,7 +105,7 @@
 
     /**
      * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
-     * 
+     *
      * @param roleId 瑙掕壊ID
      * @return 閫変腑閮ㄩ棬鍒楄〃
      */
@@ -119,7 +118,7 @@
 
     /**
      * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 閮ㄩ棬淇℃伅
      */
@@ -131,7 +130,7 @@
 
     /**
      * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 瀛愰儴闂ㄦ暟
      */
@@ -143,7 +142,7 @@
 
     /**
      * 鏄惁瀛樺湪瀛愯妭鐐�
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉
      */
@@ -156,7 +155,7 @@
 
     /**
      * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
      */
@@ -169,7 +168,7 @@
 
     /**
      * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -187,7 +186,7 @@
 
     /**
      * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄�
-     * 
+     *
      * @param deptId 閮ㄩ棬id
      */
     @Override
@@ -207,7 +206,7 @@
 
     /**
      * 鏂板淇濆瓨閮ㄩ棬淇℃伅
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -226,7 +225,7 @@
 
     /**
      * 淇敼淇濆瓨閮ㄩ棬淇℃伅
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -254,7 +253,7 @@
 
     /**
      * 淇敼璇ラ儴闂ㄧ殑鐖剁骇閮ㄩ棬鐘舵��
-     * 
+     *
      * @param dept 褰撳墠閮ㄩ棬
      */
     private void updateParentDeptStatusNormal(SysDept dept)
@@ -266,7 +265,7 @@
 
     /**
      * 淇敼瀛愬厓绱犲叧绯�
-     * 
+     *
      * @param deptId 琚慨鏀圭殑閮ㄩ棬ID
      * @param newAncestors 鏂扮殑鐖禝D闆嗗悎
      * @param oldAncestors 鏃х殑鐖禝D闆嗗悎
@@ -286,7 +285,7 @@
 
     /**
      * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉
      */
@@ -327,6 +326,43 @@
         return Result.ok().data(vos);
     }
 
+    @Override
+    public Result cascader() {
+        List<Cascader> data = deptMapper.cascader();
+        return Result.ok().data(this.buildTree(data));
+    }
+
+    public List<Cascader> buildTree(List<Cascader> cascaders) {
+        // 鍒涘缓涓�涓槧灏勶紝浠arentId涓洪敭锛屽搴旂殑瀛愯妭鐐瑰垪琛ㄤ负鍊�
+        Map<Long, List<Cascader>> map = new HashMap<>();
+        for (Cascader cascader : cascaders) {
+            Long parentId = cascader.getParentId();
+            map.computeIfAbsent(parentId, k -> new ArrayList<>()).add(cascader);
+        }
+
+        // 閫掑綊鍑芥暟锛岀敤浜庢瀯寤烘爲
+        List<Cascader> tree = new ArrayList<>();
+        for (Cascader cascader : cascaders) {
+            if (cascader.getParentId().equals(0L)) { // 鏍硅妭鐐�
+                tree.add(setChildren(cascader, map));
+            }
+        }
+
+        // 鏇存柊鍘熷鍒楄〃涓烘爲褰㈢粨鏋�
+        cascaders.clear();
+        cascaders.addAll(tree);
+        return cascaders;
+    }
+
+    private Cascader setChildren(Cascader cascader, Map<Long, List<Cascader>> map) {
+        List<Cascader> children = map.getOrDefault(cascader.getValue(), new ArrayList<>());
+        for (Cascader child : children) {
+            setChildren(child, map); // 閫掑綊璁剧疆瀛愯妭鐐圭殑瀛愯妭鐐�
+        }
+        cascader.setChildren(children);
+        return cascader;
+    }
+
     /**
      * 閫掑綊鍒楄〃
      */
diff --git a/ycl-server/src/main/resources/mapper/system/SysDeptMapper.xml b/ycl-server/src/main/resources/mapper/system/SysDeptMapper.xml
index 5c2f042..e2aecb8 100644
--- a/ycl-server/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ycl-server/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -22,12 +22,12 @@
 		<result property="updateBy"   column="update_by"   />
 		<result property="updateTime" column="update_time" />
 	</resultMap>
-	
+
 	<sql id="selectDeptVo">
         select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time,d.area
         from sys_dept d
     </sql>
-    
+
 	<select id="selectDeptList" parameterType="com.ycl.system.entity.SysDept" resultMap="SysDeptResult">
         <include refid="selectDeptVo"/>
         where d.del_flag = '0'
@@ -47,7 +47,7 @@
 		${params.dataScope}
 		order by d.parent_id, d.order_num
     </select>
-    
+
     <select id="selectDeptListByRoleId" resultType="Long">
 		select d.dept_id
 		from sys_dept d
@@ -58,36 +58,36 @@
             </if>
 		order by d.parent_id, d.order_num
 	</select>
-    
+
     <select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult">
 		select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,d.area,
 			(select dept_name from sys_dept where dept_id = d.parent_id) parent_name
 		from sys_dept d
 		where d.dept_id = #{deptId}
 	</select>
-    
+
     <select id="checkDeptExistUser" parameterType="Long" resultType="int">
 		select count(1) from sys_user where dept_id = #{deptId} and del_flag = '0'
 	</select>
-	
+
 	<select id="hasChildByDeptId" parameterType="Long" resultType="int">
 		select count(1) from sys_dept
 		where del_flag = '0' and parent_id = #{deptId} limit 1
 	</select>
-	
+
 	<select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult">
 		select * from sys_dept where find_in_set(#{deptId}, ancestors)
 	</select>
-	
+
 	<select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int">
 		select count(*) from sys_dept where status = 0 and del_flag = '0' and find_in_set(#{deptId}, ancestors)
 	</select>
-	
+
 	<select id="checkDeptNameUnique" resultMap="SysDeptResult">
 	    <include refid="selectDeptVo"/>
 		where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1
 	</select>
-    
+
     <insert id="insertDept" parameterType="com.ycl.system.entity.SysDept">
  		insert into sys_dept(
  			<if test="deptId != null and deptId != 0">dept_id,</if>
@@ -115,7 +115,7 @@
  			sysdate()
  		)
 	</insert>
-	
+
 	<update id="updateDept" parameterType="com.ycl.system.entity.SysDept">
  		update sys_dept
  		<set>
@@ -133,7 +133,7 @@
  		</set>
  		where dept_id = #{deptId}
 	</update>
-	
+
 	<update id="updateDeptChildren" parameterType="java.util.List">
 	    update sys_dept set ancestors =
 	    <foreach collection="depts" item="item" index="index"
@@ -146,16 +146,36 @@
 	        #{item.deptId}
 	    </foreach>
 	</update>
-	 
+
 	<update id="updateDeptStatusNormal" parameterType="Long">
- 	    update sys_dept set status = '0' where dept_id in 
+ 	    update sys_dept set status = '0' where dept_id in
  	    <foreach collection="array" item="deptId" open="(" separator="," close=")">
         	#{deptId}
         </foreach>
 	</update>
-	
+
 	<delete id="deleteDeptById" parameterType="Long">
 		update sys_dept set del_flag = '2' where dept_id = #{deptId}
 	</delete>
 
-</mapper> 
\ No newline at end of file
+	<select id="cascader" resultType="com.ycl.platform.base.Cascader">
+		SELECT dept_id as value, dept_name as label, parent_id as parentId FROM sys_dept WHERE status = '0' AND del_flag = '0'
+	</select>
+
+	<select id="selectParents" resultType="long">
+		WITH RECURSIVE temp_table AS (
+			SELECT
+				dept_id, dept_name, parent_id, 0 as level FROM sys_dept WHERE dept_id = 101
+			UNION ALL
+			SELECT
+				sd.dept_id, sd.dept_name, sd.parent_id, tb.level+1 FROM sys_dept sd INNER JOIN temp_table tb ON sd.dept_id = tb.parent_id
+		)
+		SELECT
+			dept_id
+		FROM
+			temp_table
+		ORDER BY
+			level DESC
+	</select>
+
+</mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
index 270f10d..d10f643 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
@@ -9,12 +9,47 @@
         <result column="start_time" property="startTime" />
         <result column="end_time" property="endTime" />
         <result column="unit_id" property="unitId" />
+        <result column="unit_name" property="unitName" />
         <result column="status" property="status" />
+        <result column="dept_id" property="deptId" />
+        <result column="dept_name" property="deptName" />
         <result column="remark" property="remark" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="category" property="category" />
+        <result column="point_tag" property="pointTagString" />
     </resultMap>
 
     <select id="selectData" resultType="com.ycl.platform.base.BaseSelect">
 
     </select>
 
+    <select id="page" resultMap="BaseResultMap">
+        SELECT
+               typ.id,
+               typ.point_name,
+               typ.point_tag,
+               typ.start_time,
+               typ.end_time,
+               typ.unit_id,
+               tyu.unit_name,
+               typ.status,
+               typ.dept_id,
+               sd.dept_name,
+               typ.remark,
+               typ.create_time,
+               typ.update_time,
+               typ.point_tag,
+               typ.category
+        FROM
+             t_yw_point typ
+                 LEFT JOIN t_yw_unit tyu ON typ.unit_id = tyu.id AND tyu.deleted = 0
+                 LEFT JOIN sys_dept sd ON typ.dept_id = sd.dept_id AND sd.del_flag = 0
+        <where>
+            <if test="query.pointName != null and query.pointName != ''">
+                AND typ.point_name like concat('%', #{query.pointName}, '%')
+            </if>
+        </where>
+    </select>
+
 </mapper>

--
Gitblit v1.8.0