From ec5a6ede3f88abebdf7a280744ea762757f310aa Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 30 四月 2024 13:41:27 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-server/src/main/java/com/ycl/system/controller/SysDeptController.java            |    8 
 ycl-server/src/main/java/com/ycl/platform/service/YwUnitService.java                 |    8 
 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java |    2 
 ycl-pojo/src/main/java/com/ycl/platform/domain/form/BatchEditPointForm.java          |    6 
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckResult.java               |  123 ----
 ycl-server/src/main/java/com/ycl/task/ContractResultTask.java                        |  111 ++++
 ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java             |    6 
 ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java |   32 
 ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java         |    7 
 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-common/src/main/java/enumeration/general/UrgentLevelEnum.java                    |   32 +
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Notify.java                    |   69 ++
 ycl-server/src/main/java/com/ycl/system/mapper/SysDeptMapper.java                    |   44 +
 ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml                    |    2 
 ycl-server/src/main/java/com/ycl/platform/mapper/ContractResultRecordMapper.java     |   23 
 ycl-server/src/main/resources/mapper/zgyw/TContractResultRecordMapper.xml            |   14 
 ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java     |   14 
 ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java                 |   28 
 ycl-server/src/main/java/com/ycl/platform/service/ICheckResultService.java           |   22 
 ycl-server/src/main/java/com/ycl/platform/mapper/YwUnitMapper.java                   |    8 
 ycl-server/src/main/resources/mapper/zgyw/ContractScoreMapper.xml                    |   33 +
 ycl-server/src/main/java/com/ycl/platform/mapper/NotifyMapper.java                   |    3 
 ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java            |    2 
 ycl-server/src/main/java/com/ycl/platform/service/impl/NotifyServiceImpl.java        |   44 +
 ycl-server/src/main/java/com/ycl/system/service/UserDetailsServiceImpl.java          |   19 
 ycl-pojo/src/main/java/com/ycl/system/model/LoginUser.java                           |   31 +
 ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml                           |    9 
 ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java        |   22 
 ycl-common/src/main/java/enumeration/general/YesOrNoEnum.java                        |   28 +
 ycl-server/src/main/resources/mapper/system/SysDictTypeMapper.xml                    |   26 
 ycl-pojo/src/main/java/com/ycl/platform/base/Cascader.java                           |   30 +
 ycl-pojo/src/main/java/com/ycl/platform/base/BaseSelect.java                         |    3 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResultVO.java                 |   63 ++
 ycl-pojo/src/main/java/com/ycl/platform/base/AbsForm.java                            |    3 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/NotifyVO.java                      |   24 
 ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml                          |   35 +
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractResultRecord.java      |   32 +
 ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java                  |    4 
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java     |   16 
 ycl-server/src/main/java/com/ycl/platform/controller/CheckResultController.java      |    0 
 ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java       |   48 -
 ycl-server/src/main/resources/mapper/system/SysDeptMapper.xml                        |   52 +
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java                   |    8 
 ycl-common/src/main/java/enumeration/general/NotifyTypeEnum.java                     |    2 
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractScore.java             |    4 
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/NotifyQuery.java                |   13 
 ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java                |    3 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java                     |   13 
 ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java         |   76 ++
 ycl-server/src/main/java/com/ycl/platform/service/impl/CheckResultServiceImpl.java   |   84 ++-
 ycl-server/src/main/java/com/ycl/platform/mapper/CheckResultMapper.java              |   54 --
 ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml                        |    8 
 ycl-common/src/main/java/enumeration/general/NotifyTargetTypeEnum.java               |   32 +
 ycl-server/src/main/resources/mapper/zgyw/CheckResultMapper.xml                      |   27 +
 ycl-server/src/main/resources/mapper/zgyw/NotifyMapper.xml                           |    3 
 ycl-server/src/main/java/com/ycl/platform/controller/NotifyController.java           |   25 +
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java                 |    6 
 58 files changed, 1,067 insertions(+), 415 deletions(-)

diff --git a/ycl-common/src/main/java/enumeration/general/NotifyTargetTypeEnum.java b/ycl-common/src/main/java/enumeration/general/NotifyTargetTypeEnum.java
new file mode 100644
index 0000000..f9260c8
--- /dev/null
+++ b/ycl-common/src/main/java/enumeration/general/NotifyTargetTypeEnum.java
@@ -0,0 +1,32 @@
+package enumeration.general;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 閫氱煡鐩爣绫诲瀷
+ *
+ * @author锛歡onghl
+ * @date锛�2024/4/15 15:15
+ */
+@Getter
+public enum NotifyTargetTypeEnum {
+
+    USER("USER", "鐢ㄦ埛"),
+    UNIT("UNIT", "杩愮淮鍗曚綅"),
+    ;
+
+
+    @EnumValue // 鏍囨槑璇ュ瓧娈靛瓨鍏ユ暟鎹簱
+    @JsonValue // 鏍囨槑鍦ㄨ浆JSON鏃朵娇鐢ㄨ瀛楁锛屽嵆鍝嶅簲鏃�
+    private final String value;
+
+    private final String desc;
+
+    NotifyTargetTypeEnum(String value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+}
diff --git a/ycl-common/src/main/java/enumeration/general/NotifyTypeEnum.java b/ycl-common/src/main/java/enumeration/general/NotifyTypeEnum.java
index 3c7f3b2..1359f36 100644
--- a/ycl-common/src/main/java/enumeration/general/NotifyTypeEnum.java
+++ b/ycl-common/src/main/java/enumeration/general/NotifyTypeEnum.java
@@ -5,7 +5,7 @@
 import lombok.Getter;
 
 /**
- * 閫氱煡鐘舵��
+ * 閫氱煡绫诲瀷
  *
  * @author锛歡onghl
  * @date锛�2024/4/15 15:15
diff --git a/ycl-common/src/main/java/enumeration/general/UrgentLevelEnum.java b/ycl-common/src/main/java/enumeration/general/UrgentLevelEnum.java
new file mode 100644
index 0000000..35dcc94
--- /dev/null
+++ b/ycl-common/src/main/java/enumeration/general/UrgentLevelEnum.java
@@ -0,0 +1,32 @@
+package enumeration.general;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 閫氱煡绱ф�ョ▼搴�
+ *
+ * @author锛歺p
+ * @date锛�2024/4/29 10:44
+ */
+@Getter
+public enum UrgentLevelEnum {
+
+    NORMAL("info", "姝e父"),
+    SUCCESS("success", "濂界殑锛屾垚鍔熺殑"),
+    WARNING("warning", "璀﹀憡"),
+    DANGER("danger", "閿欒"),
+    ;
+
+    @EnumValue
+    @JsonValue
+    private final String value;
+
+    private final String desc;
+
+    UrgentLevelEnum(String value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+}
diff --git a/ycl-common/src/main/java/enumeration/general/YesOrNoEnum.java b/ycl-common/src/main/java/enumeration/general/YesOrNoEnum.java
new file mode 100644
index 0000000..1c285c5
--- /dev/null
+++ b/ycl-common/src/main/java/enumeration/general/YesOrNoEnum.java
@@ -0,0 +1,28 @@
+package enumeration.general;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * @author锛歺p
+ * @date锛�2023/11/28 18:04
+ */
+@Getter
+public enum YesOrNoEnum {
+
+    YES("0", "鏄�"),
+    NO("1", "鍚�")
+    ;
+
+    @EnumValue
+    @JsonValue
+    private String code;
+
+    private String desc;
+
+    YesOrNoEnum(String code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+}
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/CheckResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckResult.java
index f4e22b8..02d972c 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckResult.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckResult.java
@@ -1,140 +1,49 @@
 package com.ycl.platform.domain.entity;
 
 import annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ycl.system.entity.BaseEntity;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
+import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
 
 /**
  * 鑰冩牳缁撴灉瀵硅薄 t_check_result
- * 
+ *
  * @author ruoyi
  * @date 2024-04-01
  */
-public class CheckResult extends BaseEntity
-{
+@TableName("t_contract_result")
+@Data
+public class CheckResult {
     private static final long serialVersionUID = 1L;
 
-    /**  */
     private Long id;
 
-    /** 鑰冩牳瀵硅薄 */
     @Excel(name = "鑰冩牳瀵硅薄")
-    private Long deptId;
+    private Long unitId;
 
-    /** 鑰冩牳鍙戝竷 */
+    @Excel(name = "杩愮淮鍚堝悓")
+    private Long contractId;
+
     @Excel(name = "鑰冩牳鍙戝竷")
     private Long publishId;
 
-    /** 鑰冩牳绫诲瀷 */
-    @Excel(name = "鑰冩牳绫诲瀷")
-    private Long examineCategory;
-
-    /** 鑰冩牳鍒嗘暟 */
     @Excel(name = "鑰冩牳鍒嗘暟")
-    private BigDecimal checkScore;
+    private BigDecimal score;
 
-    /** 鏄惁鍙戝竷 */
     @Excel(name = "鏄惁鍙戝竷")
-    private Long publish;
+    private Integer publish;
 
-    /** 鑰冩牳鏃堕棿 */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "鑰冩牳鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
     private Date checkTime;
 
-    /** 閫昏緫鍒犻櫎 */
+    @TableLogic
     private String deleted;
 
-    public void setId(Long id) 
-    {
-        this.id = id;
-    }
-
-    public Long getId() 
-    {
-        return id;
-    }
-    public void setDeptId(Long deptId) 
-    {
-        this.deptId = deptId;
-    }
-
-    public Long getDeptId() 
-    {
-        return deptId;
-    }
-    public void setPublishId(Long publishId) 
-    {
-        this.publishId = publishId;
-    }
-
-    public Long getPublishId() 
-    {
-        return publishId;
-    }
-    public void setExamineCategory(Long examineCategory) 
-    {
-        this.examineCategory = examineCategory;
-    }
-
-    public Long getExamineCategory() 
-    {
-        return examineCategory;
-    }
-    public void setCheckScore(BigDecimal checkScore) 
-    {
-        this.checkScore = checkScore;
-    }
-
-    public BigDecimal getCheckScore() 
-    {
-        return checkScore;
-    }
-    public void setPublish(Long publish) 
-    {
-        this.publish = publish;
-    }
-
-    public Long getPublish() 
-    {
-        return publish;
-    }
-    public void setCheckTime(Date checkTime) 
-    {
-        this.checkTime = checkTime;
-    }
-
-    public Date getCheckTime() 
-    {
-        return checkTime;
-    }
-    public void setDeleted(String deleted) 
-    {
-        this.deleted = deleted;
-    }
-
-    public String getDeleted() 
-    {
-        return deleted;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("deptId", getDeptId())
-            .append("publishId", getPublishId())
-            .append("examineCategory", getExamineCategory())
-            .append("checkScore", getCheckScore())
-            .append("publish", getPublish())
-            .append("checkTime", getCheckTime())
-            .append("updateTime", getUpdateTime())
-            .append("deleted", getDeleted())
-            .toString();
-    }
+    private Date updateTime;
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractResultRecord.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractResultRecord.java
new file mode 100644
index 0000000..f93b8ab
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractResultRecord.java
@@ -0,0 +1,32 @@
+package com.ycl.platform.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author ghl
+ * @since 2024/4/28 涓嬪崍 5:45
+ */
+
+@Data
+@TableName("t_contract_result_record")
+public class ContractResultRecord {
+
+    @TableId
+    private Long id;
+    private Long resultId;
+    private String ruleIds;
+    private String ruleName;
+    private String deductCategory;
+    private String num;
+    private BigDecimal score;
+    private Date createTime;
+    @TableLogic
+    private String deleted;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractScore.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractScore.java
index 9b0f1d8..190042a 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractScore.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractScore.java
@@ -43,9 +43,11 @@
     private Long[] ruleIdsArray;
 
     @Excel(name = "瑙勫垯")
-    @TableField(exist = false)
     private String ruleName;
 
+    @Excel(name = "鎵e噺鏂瑰紡")
+    private String deductCategory;
+
     @Excel(name = "鎸囨爣")
     private String num;
 
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Notify.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Notify.java
index 5a091d5..ff0d246 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Notify.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Notify.java
@@ -3,7 +3,10 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ycl.platform.base.AbsEntity;
+import enumeration.general.NotifyTargetTypeEnum;
 import enumeration.general.NotifyTypeEnum;
+import enumeration.general.UrgentLevelEnum;
+import enumeration.general.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -36,19 +39,71 @@
     private String content;
 
     @ApiModelProperty("閫氱煡璋�")
-    @TableField("notify_who")
-    private Integer notifyWho;
+    @TableField("notify_user")
+    private Integer notifyUser;
 
     @ApiModelProperty("宸茶")
     @TableField("readed")
-    private String readed;
+    private YesOrNoEnum readed;
 
     @ApiModelProperty("绱ф��")
     @TableField("urgent")
-    private String urgent;
+    private UrgentLevelEnum urgent;
 
-    @ApiModelProperty("宸ュ崟ID")
-    @TableField("work_order_id")
-    private Integer workOrderId;
+    @ApiModelProperty("宸ュ崟鍙�")
+    @TableField("work_order_no")
+    private String workOrderNo;
+
+    @ApiModelProperty("閫氱煡鐩爣绫诲瀷")
+    @TableField("notify_target_type")
+    private NotifyTargetTypeEnum notifyTargetType;
+
+    @ApiModelProperty("閫氱煡杩愮淮鍗曚綅")
+    @TableField("notify_unit")
+    private Integer notifyUnit;
+
+    /**
+     * 閫氱煡鐢ㄦ埛
+     *
+     * @param notifyType
+     * @param content
+     * @param notifyUser
+     * @param urgent
+     * @param workOrderNo
+     * @return
+     */
+    public static Notify genEntityByPeople(NotifyTypeEnum notifyType, String content, Integer notifyUser, UrgentLevelEnum urgent, String workOrderNo) {
+        Notify notify = new Notify();
+        notify.setNotifyType(notifyType);
+        notify.setContent(content);
+        notify.setNotifyUser(notifyUser);
+        notify.setUrgent(urgent);
+        notify.setWorkOrderNo(workOrderNo);
+        notify.setNotifyTargetType(NotifyTargetTypeEnum.USER);
+        notify.setReaded(YesOrNoEnum.NO);
+        return notify;
+    }
+
+    /**
+     * 閫氱煡鍗曚綅
+     *
+     * @param notifyType
+     * @param content
+     * @param notifyUnit
+     * @param urgent
+     * @param workOrderNo
+     * @return
+     */
+    public static Notify genEntityByUnit(NotifyTypeEnum notifyType, String content, Integer notifyUnit, UrgentLevelEnum urgent, String workOrderNo) {
+        Notify notify = new Notify();
+        notify.setNotifyType(notifyType);
+        notify.setContent(content);
+        notify.setUrgent(urgent);
+        notify.setNotifyUnit(notifyUnit);
+        notify.setWorkOrderNo(workOrderNo);
+        notify.setNotifyTargetType(NotifyTargetTypeEnum.UNIT);
+        notify.setReaded(YesOrNoEnum.NO);
+        return notify;
+    }
 
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java
index 61dc0e0..92bab73 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java
@@ -49,7 +49,7 @@
      * 鍗曚綅id
      */
     @NotBlank
-    private Integer unitId;
+    private Long unitId;
 
     @TableField(exist = false)
     private String unitName;
@@ -63,14 +63,14 @@
     /**
      * 寮�濮嬫椂闂�
      */
-    @JsonFormat(pattern = "yyyy-MM-dd hh-mm-ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @NotNull
     private Date startTime;
 
     /**
      * 缁撴潫鏃堕棿
      */
-    @JsonFormat(pattern = "yyyy-MM-dd hh-mm-ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @NotNull
     private Date endTime;
 
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/BatchEditPointForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/BatchEditPointForm.java
index 9e200fb..23e4ed5 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/BatchEditPointForm.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/BatchEditPointForm.java
@@ -23,10 +23,4 @@
 
     private Integer unitId;
 
-    @NotNull(message = "鐐逛綅寮�濮嬫椂闂翠笉鑳戒负绌�", groups = {Add.class, Update.class})
-    private LocalDateTime startTime;
-
-    @NotNull(message = "鐐逛綅缁撴潫鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class})
-    private LocalDateTime endTime;
-
 }
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..2e36314 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;
 
 /**
  * 杩愮淮鐐逛綅琛ㄥ崟
@@ -30,28 +32,26 @@
     @ApiModelProperty("鐐逛綅鍚嶇О")
     private String pointName;
 
-    @NotNull(message = "鐐逛綅寮�濮嬫椂闂翠笉鑳戒负绌�", groups = {Add.class, Update.class})
-    @ApiModelProperty("鐐逛綅寮�濮嬫椂闂�")
-    private LocalDateTime startTime;
-
-    @NotNull(message = "鐐逛綅缁撴潫鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class})
-    @ApiModelProperty("鐐逛綅缁撴潫鏃堕棿")
-    private LocalDateTime endTime;
-
     @NotNull(message = "杩愮淮鍗曚綅涓嶈兘涓虹┖", groups = {Add.class, Update.class})
     @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/query/NotifyQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/NotifyQuery.java
index f4731aa..939aadf 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/NotifyQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/NotifyQuery.java
@@ -1,6 +1,8 @@
 package com.ycl.platform.domain.query;
 
 import com.ycl.platform.base.AbsQuery;
+
+import java.util.Date;
 import java.util.List;
 import org.springframework.lang.NonNull;
 import jakarta.validation.constraints.NotBlank;
@@ -16,8 +18,17 @@
  * @since 2024-04-07
  */
 @Data
-@Accessors(chain = true)
 @ApiModel(value = "Notify鏌ヨ", description = "閫氱煡鏌ヨ")
 public class NotifyQuery extends AbsQuery {
+
+    /** 宸ュ崟鍙� */
+    private String workOrderNo;
+
+    /** 寮�濮嬫椂闂� */
+    private Date start;
+
+    /** 缁撴潫鏃堕棿 */
+    private Date end;
+
 }
 
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResultVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResultVO.java
new file mode 100644
index 0000000..b3ce510
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResultVO.java
@@ -0,0 +1,63 @@
+package com.ycl.platform.domain.vo;
+
+import annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ycl.platform.domain.entity.CheckResult;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author gonghl
+ */
+@Data
+@Accessors(chain = true)
+public class CheckResultVO {
+    private Long id;
+
+    private Long unitId;
+
+    @Excel(name = "鑰冩牳瀵硅薄")
+    private String unitName;
+
+    private Long contractId;
+
+    @Excel(name = "杩愮淮鍚堝悓")
+    private String contractName;
+
+    private Long publishId;
+
+    @Excel(name = "鑰冩牳鍒嗘暟", scale = 2)
+    private BigDecimal score;
+
+    @Excel(name = "鏄惁鍙戝竷", readConverterExp = "0=鏈彂甯�,1=宸插彂甯�")
+    private Integer publish;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鑰冩牳鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkTime;
+
+    private String deleted;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updateTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createStartTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createEndTime;
+
+    public static CheckResultVO getVoByEntity(@NonNull CheckResult entity, CheckResultVO vo) {
+        if (vo == null) {
+            vo = new CheckResultVO();
+        }
+        BeanUtils.copyProperties(entity, vo);
+        return vo;
+    }
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/NotifyVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/NotifyVO.java
index fbe8397..6815160 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/NotifyVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/NotifyVO.java
@@ -2,14 +2,14 @@
 
 import com.ycl.platform.base.AbsVo;
 import com.ycl.platform.domain.entity.Notify;
-import java.util.List;
-import java.time.LocalDateTime;
-import org.springframework.lang.NonNull;
-import org.springframework.beans.BeanUtils;
-import io.swagger.annotations.ApiModel;
+import enumeration.general.NotifyTypeEnum;
+import enumeration.general.UrgentLevelEnum;
+import enumeration.general.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
 
 /**
  * 閫氱煡灞曠ず
@@ -22,22 +22,20 @@
 public class NotifyVO extends AbsVo {
 
     /** 閫氱煡绫诲瀷 */
-    private String notifyType;
+    private NotifyTypeEnum notifyType;
 
     /** 閫氱煡鍐呭 */
     private String content;
 
-    /** 閫氱煡璋� */
-    private Integer notifyWho;
-
     /** 宸茶 */
-    private String readed;
+    private YesOrNoEnum readed;
 
     /** 绱ф�� */
-    private String urgent;
+    private UrgentLevelEnum urgent;
 
-    /** 宸ュ崟ID */
-    private Integer workOrderId;
+    /** 宸ュ崟鍙� */
+    private String workOrderNo;
+
 
     public static NotifyVO getVoByEntity(@NonNull Notify entity, NotifyVO vo) {
         if(vo == 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-pojo/src/main/java/com/ycl/system/model/LoginUser.java b/ycl-pojo/src/main/java/com/ycl/system/model/LoginUser.java
index e680a81..f32a131 100644
--- a/ycl-pojo/src/main/java/com/ycl/system/model/LoginUser.java
+++ b/ycl-pojo/src/main/java/com/ycl/system/model/LoginUser.java
@@ -10,7 +10,7 @@
 
 /**
  * 鐧诲綍鐢ㄦ埛韬唤鏉冮檺
- * 
+ *
  * @author ruoyi
  */
 public class LoginUser implements UserDetails
@@ -26,6 +26,13 @@
      * 閮ㄩ棬ID
      */
     private Long deptId;
+
+    /**
+     * 杩愮淮鍗曚綅ID
+     */
+    private Integer unitId;
+    /** 鏄惁鏄繍缁村崟浣嶇鐞嗗憳璐﹀彿 */
+    private Boolean unitAdmin;
 
     /**
      * 鐢ㄦ埛鍞竴鏍囪瘑
@@ -90,6 +97,22 @@
         this.permissions = permissions;
     }
 
+    public Integer getUnitId() {
+        return unitId;
+    }
+
+    public void setUnitId(Integer unitId) {
+        this.unitId = unitId;
+    }
+
+    public Boolean getUnitAdmin() {
+        return unitAdmin;
+    }
+
+    public void setUnitAdmin(Boolean unitAdmin) {
+        this.unitAdmin = unitAdmin;
+    }
+
     public Long getUserId()
     {
         return userId;
@@ -145,7 +168,7 @@
 
     /**
      * 鎸囧畾鐢ㄦ埛鏄惁瑙i攣,閿佸畾鐨勭敤鎴锋棤娉曡繘琛岃韩浠介獙璇�
-     * 
+     *
      * @return
      */
     @JSONField(serialize = false)
@@ -157,7 +180,7 @@
 
     /**
      * 鎸囩ず鏄惁宸茶繃鏈熺殑鐢ㄦ埛鐨勫嚟鎹�(瀵嗙爜),杩囨湡鐨勫嚟鎹槻姝㈣璇�
-     * 
+     *
      * @return
      */
     @JSONField(serialize = false)
@@ -169,7 +192,7 @@
 
     /**
      * 鏄惁鍙敤 ,绂佺敤鐨勭敤鎴蜂笉鑳借韩浠介獙璇�
-     * 
+     *
      * @return
      */
     @JSONField(serialize = false)
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/CheckResultController.java b/ycl-server/src/main/java/com/ycl/platform/controller/CheckResultController.java
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/CheckResultController.java
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/NotifyController.java b/ycl-server/src/main/java/com/ycl/platform/controller/NotifyController.java
new file mode 100644
index 0000000..7b450b2
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/NotifyController.java
@@ -0,0 +1,25 @@
+package com.ycl.platform.controller;
+
+import com.ycl.platform.domain.query.NotifyQuery;
+import com.ycl.platform.service.NotifyService;
+import com.ycl.system.Result;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/4/29 9:38
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/notify")
+public class NotifyController {
+
+    private final NotifyService notifyService;
+
+    @PostMapping("/page")
+    public Result page(@RequestBody NotifyQuery query) {
+        return notifyService.page(query);
+    }
+
+}
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java
index 4b3fa26..e882f25 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java
@@ -67,5 +67,5 @@
      * @param unitId 杩愮淮鍗曚綅
      * @return 鏁版嵁
      */
-    List<CalculateRuleCascaderVO> getRuleListByUnitId(Integer unitId);
+    List<CalculateRuleCascaderVO> getRuleListByUnitId(Integer unitId, String now);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CheckResultMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CheckResultMapper.java
index 0129ff5..b58337a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CheckResultMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CheckResultMapper.java
@@ -2,62 +2,16 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.platform.domain.entity.CheckResult;
+import com.ycl.platform.domain.vo.CheckResultVO;
 
 import java.util.List;
 
 /**
  * 鑰冩牳缁撴灉Mapper鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2024-04-01
  */
-public interface CheckResultMapper extends BaseMapper<CheckResult>
-{
-    /**
-     * 鏌ヨ鑰冩牳缁撴灉
-     * 
-     * @param id 鑰冩牳缁撴灉涓婚敭
-     * @return 鑰冩牳缁撴灉
-     */
-    public CheckResult selectCheckResultById(Long id);
-
-    /**
-     * 鏌ヨ鑰冩牳缁撴灉鍒楄〃
-     * 
-     * @param checkResult 鑰冩牳缁撴灉
-     * @return 鑰冩牳缁撴灉闆嗗悎
-     */
-    public List<CheckResult> selectCheckResultList(CheckResult checkResult);
-
-    /**
-     * 鏂板鑰冩牳缁撴灉
-     * 
-     * @param checkResult 鑰冩牳缁撴灉
-     * @return 缁撴灉
-     */
-    public int insertCheckResult(CheckResult checkResult);
-
-    /**
-     * 淇敼鑰冩牳缁撴灉
-     * 
-     * @param checkResult 鑰冩牳缁撴灉
-     * @return 缁撴灉
-     */
-    public int updateCheckResult(CheckResult checkResult);
-
-    /**
-     * 鍒犻櫎鑰冩牳缁撴灉
-     * 
-     * @param id 鑰冩牳缁撴灉涓婚敭
-     * @return 缁撴灉
-     */
-    public int deleteCheckResultById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎鑰冩牳缁撴灉
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    public int deleteCheckResultByIds(Long[] ids);
+public interface CheckResultMapper extends BaseMapper<CheckResult> {
+    List<CheckResultVO> selectCheckResultList(CheckResultVO checkResult);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/ContractResultRecordMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/ContractResultRecordMapper.java
new file mode 100644
index 0000000..6739b00
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/ContractResultRecordMapper.java
@@ -0,0 +1,23 @@
+package com.ycl.platform.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.platform.domain.entity.ContractResultRecord;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author gonghl
+ */
+public interface ContractResultRecordMapper extends BaseMapper<ContractResultRecord> {
+
+    /**
+     * 鎵归噺淇濆瓨鑰冩牳缁撴灉
+     * @param contractResultRecord 闆嗗悎
+     */
+    void saveBatch(List<ContractResultRecord> contractResultRecord);
+}
+
+
+
+
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/NotifyMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/NotifyMapper.java
index 92912d8..6f21945 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/NotifyMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/NotifyMapper.java
@@ -1,11 +1,14 @@
 package com.ycl.platform.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.platform.domain.entity.Notify;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.platform.domain.query.NotifyQuery;
 import com.ycl.platform.domain.vo.NotifyVO;
 import com.ycl.platform.domain.form.NotifyForm;
 import java.util.List;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 閫氱煡 Mapper 鎺ュ彛
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java
index fb4a704..919f81e 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.platform.domain.entity.TContract;
 
+import java.util.List;
+
 /**
  * 銆愯濉啓鍔熻兘鍚嶇О銆慚apper鎺ュ彛
  *
@@ -10,4 +12,5 @@
  * @date 2024-03-12
  */
 public interface TContractMapper extends BaseMapper<TContract> {
+    List<TContract> selectAll();
 }
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/mapper/YwUnitMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/YwUnitMapper.java
index 7f39ba0..572c8e6 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/YwUnitMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/YwUnitMapper.java
@@ -23,4 +23,12 @@
      * @return 鏁版嵁
      */
     List<YwUnitVO> workList();
+
+    /**
+     * 閫氳繃鐢ㄦ埛ID鏌ユ壘杩愮淮鍗曚綅
+     *
+     * @param userId
+     * @return
+     */
+    YwUnit getByUserId(Long userId);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ICheckResultService.java b/ycl-server/src/main/java/com/ycl/platform/service/ICheckResultService.java
index fe0a755..01c7078 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ICheckResultService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ICheckResultService.java
@@ -1,6 +1,9 @@
 package com.ycl.platform.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.platform.domain.entity.CheckResult;
+import com.ycl.platform.domain.entity.ContractResultRecord;
+import com.ycl.platform.domain.vo.CheckResultVO;
 
 import java.util.List;
 
@@ -10,7 +13,7 @@
  * @author ruoyi
  * @date 2024-04-01
  */
-public interface ICheckResultService 
+public interface ICheckResultService extends IService<CheckResult>
 {
     /**
      * 鏌ヨ鑰冩牳缁撴灉
@@ -26,7 +29,7 @@
      * @param checkResult 鑰冩牳缁撴灉
      * @return 鑰冩牳缁撴灉闆嗗悎
      */
-    public List<CheckResult> selectCheckResultList(CheckResult checkResult);
+    public List<CheckResultVO> selectCheckResultList(CheckResultVO checkResult);
 
     /**
      * 鏂板鑰冩牳缁撴灉
@@ -59,4 +62,19 @@
      * @return 缁撴灉
      */
     public int deleteCheckResultById(Long id);
+
+    /**
+     * 鎵归噺淇濆瓨鑰冩牳缁撴灉
+     * @param contractResultRecord 闆嗗悎
+     */
+    void saveBatchRecord(List<ContractResultRecord> contractResultRecord);
+
+    /**
+     * 鏍规嵁鑰冩牳缁撴灉鏌ヨ璁板綍
+     * @param resultId 鑰冩牳缁撴灉id
+     * @return 鑰冩牳缁撴灉璁板綍
+     */
+    List<ContractResultRecord> selectCheckResultRecordList(Long resultId);
+
+    Boolean publish(Long id);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java b/ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java
index 123ad3b..a55cfce 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/IContractScoreService.java
@@ -39,4 +39,11 @@
      * @return 缁撴灉
      */
     boolean audit(ContractScore contractScore);
+
+    /**
+     * 鏍规嵁鍚堝悓id鏌ヨ鏈湀鍚堝悓鎵撳垎
+     * @param id id
+     * @return 鏁版嵁
+     */
+    List<ContractScore> getDateRangeScoreByContractId(Long id, String startTime, String endTime);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java b/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
index d101b61..15d8e8c 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
@@ -39,4 +39,10 @@
      * @return 瑙勫垯
      */
     List<CalculateMoneyRule> selectMoneyRules(Integer contractId);
+
+    /**
+     * 鏌ヨ鎵�鏈夋鍦ㄤ娇鐢ㄧ殑鍚堝悓
+     * @return 鏁版嵁
+     */
+    List<TContract> selectUsingContract();
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/YwUnitService.java b/ycl-server/src/main/java/com/ycl/platform/service/YwUnitService.java
index 2495bb6..ada6bd0 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/YwUnitService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/YwUnitService.java
@@ -9,6 +9,7 @@
 import com.ycl.platform.domain.entity.YwUnit;
 import com.ycl.platform.domain.form.YwUnitForm;
 import com.ycl.platform.domain.query.YwUnitQuery;
+import com.ycl.system.model.LoginUser;
 
 import java.util.List;
 
@@ -79,4 +80,11 @@
      * @return
      */
     Result workList();
+
+    /**
+     * 璁剧疆鐧诲綍鐢ㄦ埛鐨勮繍缁村崟浣嶄俊鎭�
+     *
+     * @param loginUser
+     */
+    void setUnitInfo(LoginUser loginUser);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java
index a6c3af1..0cadd77 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java
@@ -144,6 +144,6 @@
 
     @Override
     public List<CalculateRuleCascaderVO> getRuleListByUnitId(Integer unitId) {
-        return TreeUtils.build(calculateRuleMapper.getRuleListByUnitId(unitId), 0L);
+        return TreeUtils.build(calculateRuleMapper.getRuleListByUnitId(unitId, DateUtils.getDate()), 0L);
     }
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckResultServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckResultServiceImpl.java
index d8ba31d..cdd747c 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckResultServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckResultServiceImpl.java
@@ -1,97 +1,129 @@
 package com.ycl.platform.service.impl;
 
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.platform.domain.entity.CheckResult;
+import com.ycl.platform.domain.entity.ContractResultRecord;
+import com.ycl.platform.domain.vo.CheckResultVO;
 import com.ycl.platform.mapper.CheckResultMapper;
+import com.ycl.platform.mapper.ContractResultRecordMapper;
 import com.ycl.platform.service.ICheckResultService;
+import com.ycl.platform.service.ITContractService;
+import com.ycl.platform.service.YwUnitService;
+import com.ycl.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import utils.DateUtils;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
  * 鑰冩牳缁撴灉Service涓氬姟灞傚鐞�
- * 
+ *
  * @author ruoyi
  * @date 2024-04-01
  */
 @Service
-public class CheckResultServiceImpl extends ServiceImpl<CheckResultMapper, CheckResult> implements ICheckResultService
-{
+public class CheckResultServiceImpl extends ServiceImpl<CheckResultMapper, CheckResult> implements ICheckResultService {
     @Autowired
     private CheckResultMapper checkResultMapper;
+    @Autowired
+    private ContractResultRecordMapper contractResultRecordMapper;
+    @Autowired
+    private YwUnitService unitService;
+    @Autowired
+    private ITContractService contractService;
+
 
     /**
      * 鏌ヨ鑰冩牳缁撴灉
-     * 
+     *
      * @param id 鑰冩牳缁撴灉涓婚敭
      * @return 鑰冩牳缁撴灉
      */
     @Override
-    public CheckResult selectCheckResultById(Long id)
-    {
-        return checkResultMapper.selectCheckResultById(id);
+    public CheckResult selectCheckResultById(Long id) {
+        return checkResultMapper.selectById(id);
     }
 
     /**
      * 鏌ヨ鑰冩牳缁撴灉鍒楄〃
-     * 
+     *
      * @param checkResult 鑰冩牳缁撴灉
      * @return 鑰冩牳缁撴灉
      */
     @Override
-    public List<CheckResult> selectCheckResultList(CheckResult checkResult)
-    {
+    public List<CheckResultVO> selectCheckResultList(CheckResultVO checkResult) {
         return checkResultMapper.selectCheckResultList(checkResult);
     }
 
     /**
      * 鏂板鑰冩牳缁撴灉
-     * 
+     *
      * @param checkResult 鑰冩牳缁撴灉
      * @return 缁撴灉
      */
     @Override
-    public int insertCheckResult(CheckResult checkResult)
-    {
-        return checkResultMapper.insertCheckResult(checkResult);
+    public int insertCheckResult(CheckResult checkResult) {
+        return checkResultMapper.insert(checkResult);
     }
 
     /**
      * 淇敼鑰冩牳缁撴灉
-     * 
+     *
      * @param checkResult 鑰冩牳缁撴灉
      * @return 缁撴灉
      */
     @Override
-    public int updateCheckResult(CheckResult checkResult)
-    {
+    public int updateCheckResult(CheckResult checkResult) {
         checkResult.setUpdateTime(DateUtils.getNowDate());
-        return checkResultMapper.updateCheckResult(checkResult);
+        return checkResultMapper.updateById(checkResult);
     }
 
     /**
      * 鎵归噺鍒犻櫎鑰冩牳缁撴灉
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑鑰冩牳缁撴灉涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteCheckResultByIds(Long[] ids)
-    {
-        return checkResultMapper.deleteCheckResultByIds(ids);
+    public int deleteCheckResultByIds(Long[] ids) {
+        return checkResultMapper.deleteBatchIds(Arrays.asList(ids));
     }
 
     /**
      * 鍒犻櫎鑰冩牳缁撴灉淇℃伅
-     * 
+     *
      * @param id 鑰冩牳缁撴灉涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteCheckResultById(Long id)
-    {
-        return checkResultMapper.deleteCheckResultById(id);
+    public int deleteCheckResultById(Long id) {
+        return checkResultMapper.deleteById(id);
+    }
+
+    @Override
+    public void saveBatchRecord(List<ContractResultRecord> contractResultRecord) {
+        if (!contractResultRecord.isEmpty()) {
+            contractResultRecordMapper.saveBatch(contractResultRecord);
+        }
+    }
+
+    @Override
+    public List<ContractResultRecord> selectCheckResultRecordList(Long resultId) {
+        return new LambdaQueryChainWrapper<>(contractResultRecordMapper)
+                .eq(ContractResultRecord::getResultId, resultId)
+                .list();
+    }
+
+    @Override
+    public Boolean publish(Long id) {
+        return new LambdaUpdateChainWrapper<>(checkResultMapper)
+                .eq(CheckResult::getId, id)
+                .set(CheckResult::getPublish, 1)
+                .set(CheckResult::getPublishId, SecurityUtils.getLoginUser().getUserId())
+                .update();
     }
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
index c979ea1..f0e76b0 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
@@ -10,6 +10,7 @@
 import com.ycl.platform.mapper.YwUnitMapper;
 import com.ycl.platform.service.IContractScoreService;
 import com.ycl.system.entity.SysUser;
+import com.ycl.utils.DateUtils;
 import com.ycl.utils.SecurityUtils;
 import enumeration.general.AuditingStatus;
 import org.apache.commons.lang3.ObjectUtils;
@@ -46,22 +47,7 @@
      */
     @Override
     public List<ContractScore> selectDefaultScoreList(ContractScore contractScore) {
-        return new LambdaQueryChainWrapper<>(contractScoreMapper)
-                .eq(ObjectUtils.isNotEmpty(contractScore.getUnitId()), ContractScore::getUnitId, contractScore.getUnitId())
-                .between(ObjectUtils.isNotEmpty(contractScore.getCreateStartTime()), ContractScore::getCreateTime, contractScore.getCreateStartTime(), contractScore.getCreateEndTime())
-                .between(ObjectUtils.isNotEmpty(contractScore.getAuditingStartTime()), ContractScore::getAuditingTime, contractScore.getAuditingStartTime(), contractScore.getAuditingEndTime())
-                .eq(ObjectUtils.isNotEmpty(contractScore.getAuditingStatus()), ContractScore::getAuditingStatus, contractScore.getAuditingStatus())
-                .orderByDesc(ContractScore::getCreateTime)
-                .list()
-                .stream().peek(
-                        item -> {
-                            item.setUnitName(ywunitMapper.selectById(item.getUnitId()).getUnitName());
-                            item.setContractName(contractMapper.selectById(item.getContractId()).getName());
-                            item.setRuleIdsArray(Arrays.stream(item.getRuleIds().split(",")).map(Long::parseLong).toArray(Long[]::new));
-                            List<CalculateRule> list = new LambdaQueryChainWrapper<>(calculateRuleMapper).in(CalculateRule::getId, item.getRuleIdsArray()).list();
-                            item.setRuleName(String.join(" / ", new String[]{list.get(0).getRuleName(), list.get(1).getRuleDesc(), list.get(2).getRuleCondition()}));
-                        }
-                ).toList();
+        return contractScoreMapper.selectDefaultScoreList(contractScore);
     }
 
     @Override
@@ -79,6 +65,9 @@
         contractScore.setAuditingStatus(AuditingStatus.WAIT);
         contractScore.setDeleted("0");
         contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(",")));
+        contractScore.setRuleIdsArray(Arrays.stream(contractScore.getRuleIds().split(",")).map(Long::parseLong).toArray(Long[]::new));
+        List<CalculateRule> list = new LambdaQueryChainWrapper<>(calculateRuleMapper).in(CalculateRule::getId, contractScore.getRuleIdsArray()).list();
+        contractScore.setRuleName(String.join(" / ", new String[]{list.get(0).getRuleName(), list.get(1).getRuleDesc(), list.get(2).getRuleCondition()}));
         return super.save(contractScore);
     }
 
@@ -91,10 +80,19 @@
     @Override
     public boolean audit(ContractScore contractScore) {
         SysUser user = SecurityUtils.getLoginUser().getUser();
-        contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(",")));
         contractScore.setAuditingTime(com.ycl.utils.DateUtils.getNowDate());
         contractScore.setAuditingUser(user.getNickName());
         contractScore.setAuditingUserId(user.getUserId());
         return super.updateById(contractScore);
     }
+
+    @Override
+    public List<ContractScore> getDateRangeScoreByContractId(Long id, String startTime, String endTime) {
+        return new LambdaQueryChainWrapper<>(contractScoreMapper)
+                .eq(ContractScore::getContractId, id)
+                .between(ContractScore::getCreateTime, startTime, endTime)
+                .eq(ContractScore::getAuditingStatus, AuditingStatus.PASS)
+                .list();
+    }
+
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/NotifyServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/NotifyServiceImpl.java
index b42ff8f..ac2218a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/NotifyServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/NotifyServiceImpl.java
@@ -9,19 +9,22 @@
 import com.ycl.platform.domain.vo.NotifyVO;
 import com.ycl.platform.domain.query.NotifyQuery;
 import java.util.List;
-import org.apache.commons.lang3.StringUtils;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.system.page.PageUtil;
+import com.ycl.utils.SecurityUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.beans.BeanUtils;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 import java.util.ArrayList;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import lombok.RequiredArgsConstructor;
+import org.springframework.util.StringUtils;
 
 /**
  * 閫氱煡 鏈嶅姟瀹炵幇绫�
@@ -101,17 +104,34 @@
      */
     @Override
     public Result page(NotifyQuery query) {
-
-        IPage<Notify> page = new LambdaQueryChainWrapper<>(baseMapper)
-                .orderByDesc(Notify::getCreateTime)
-                .page(PageUtil.getPage(query, Notify.class));
-
-        List<NotifyVO> vos = page.getRecords().stream()
-                .map(
-                        entity -> NotifyVO.getVoByEntity(entity, null)
-                )
-                .collect(Collectors.toList());
-        return Result.ok().data(vos).total(page.getTotal());
+        IPage<Notify> page = PageUtil.getPage(query, Notify.class);
+        // 濡傛灉鏄崟浣嶇鐞嗗憳锛氭煡璇㈠崟浣嶉�氱煡
+        if (SecurityUtils.getLoginUser().getUnitAdmin()) {
+            new LambdaQueryChainWrapper<>(baseMapper)
+                    .between(Objects.nonNull(query.getEnd()) && Objects.nonNull(query.getStart()),
+                            Notify::getCreateTime,
+                            query.getStart(),
+                            query.getEnd())
+                    .eq(StringUtils.hasText(query.getWorkOrderNo()), Notify::getWorkOrderNo, query.getWorkOrderNo())
+                    .eq(Notify::getNotifyUnit, SecurityUtils.getLoginUser().getUnitId())
+                    .orderByDesc(Notify::getCreateTime)
+                    .page(page);
+        } else {
+            // 濡傛灉鏄崟浣嶄汉鍛橈細鏌ヨ鑷繁鐨勯�氱煡
+            new LambdaQueryChainWrapper<>(baseMapper)
+                    .between(Objects.nonNull(query.getEnd()) && Objects.nonNull(query.getStart()),
+                            Notify::getCreateTime,
+                            query.getStart(),
+                            query.getEnd())
+                    .eq(StringUtils.hasText(query.getWorkOrderNo()), Notify::getWorkOrderNo, query.getWorkOrderNo())
+                    .eq(Notify::getNotifyUser, SecurityUtils.getLoginUser().getUnitId())
+                    .orderByDesc(Notify::getCreateTime)
+                    .page(page);
+        }
+        List<NotifyVO> result = page.getRecords().stream().map(entity -> {
+            return NotifyVO.getVoByEntity(entity, null);
+        }).collect(Collectors.toList());
+        return Result.ok().data(result).total(page.getTotal());
     }
 
     /**
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
index eeb6d56..b48b540 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
@@ -198,15 +198,19 @@
 
     @Override
     public List<TContract> selectAll() {
-        return list(new LambdaQueryWrapper<TContract>()
-                .orderByDesc(TContract::getCreateTime))
-                .stream().peek(
-                        tContract -> tContract.setUnitName(ywUnitService.getById(tContract.getUnitId()).getUnitName())
-                ).toList();
+        return baseMapper.selectAll();
     }
 
     @Override
     public List<CalculateMoneyRule> selectMoneyRules(Integer contractId) {
         return calculateMoneyRuleService.selectMoneyRules(contractId);
     }
+
+    @Override
+    public List<TContract> selectUsingContract() {
+        return new LambdaQueryChainWrapper<>(baseMapper)
+                .le(TContract::getStartTime, DateUtils.getDate())
+                .ge(TContract::getEndTime, DateUtils.getDate())
+                .list();
+    }
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index e29849f..68d709a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -20,9 +20,7 @@
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.SecurityUtils;
 import com.ycl.utils.redis.RedisCache;
-import enumeration.general.NotifyTypeEnum;
-import enumeration.general.WorkOrderDistributeWayEnum;
-import enumeration.general.WorkOrderStatusEnum;
+import enumeration.general.*;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.BeanUtils;
@@ -114,12 +112,12 @@
         workOrderAuditingRecord.setRemark(form.getAuditingRemark());
         workOrderAuditingRecordMapper.insert(workOrderAuditingRecord);
         // 娣诲姞鏂伴�氱煡
-        try {
-            Notify notify = new Notify(NotifyTypeEnum.WORK_ORDER, form.getAuditingResult().getDesc(), workOrder.getYwPeopleId(), "0", "0", workOrder.getId());
-            notifyService.save(notify);
-        } catch (Exception e) {
-            return Result.error("瀹℃牳鎴愬姛锛岄�氱煡杩愮淮浜哄憳澶辫触");
-        }
+        Notify notify = Notify.genEntityByUnit(NotifyTypeEnum.WORK_ORDER,
+                form.getAuditingResult().getDesc(),
+                workOrder.getUnitId(),
+                UrgentLevelEnum.WARNING,
+                workOrder.getWorkOrderNo());
+        notifyService.save(notify);
         return Result.ok("鎿嶄綔鎴愬姛");
     }
 
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..b18d3a5 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;
 
     /**
@@ -88,8 +86,6 @@
             new LambdaUpdateChainWrapper<>(baseMapper)
                     .in(YwPoint::getId, form.getIds())
                     .set(YwPoint::getUnitId, form.getUnitId())
-                    .set(YwPoint::getStartTime, form.getStartTime())
-                    .set(YwPoint::getEndTime, form.getEndTime())
                     .update();
         } else {
             new LambdaUpdateChainWrapper<>(baseMapper)
@@ -109,16 +105,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 +146,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 +163,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/platform/service/impl/YwUnitServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java
index a0fb489..4ffd0d0 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java
@@ -20,6 +20,7 @@
 import com.ycl.system.mapper.SysRoleMapper;
 import com.ycl.system.mapper.SysUserMapper;
 import com.ycl.system.mapper.SysUserRoleMapper;
+import com.ycl.system.model.LoginUser;
 import com.ycl.system.page.PageUtil;
 import com.ycl.platform.service.YwUnitService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -217,6 +218,27 @@
     }
 
     @Override
+    public void setUnitInfo(LoginUser loginUser) {
+        // 鍗曚綅绠$悊鍛樻煡璇�
+        YwUnit unit = new LambdaQueryChainWrapper<>(baseMapper)
+                .eq(YwUnit::getUnitAdminAccount, loginUser.getUsername())
+                .one();
+        if (Objects.nonNull(unit)) {
+            loginUser.setUnitAdmin(Boolean.TRUE);
+            loginUser.setUnitId(unit.getId());
+        } else {
+            unit = baseMapper.getByUserId(loginUser.getUserId());
+            if (Objects.nonNull(unit)) {
+                loginUser.setUnitAdmin(Boolean.FALSE);
+                loginUser.setUnitId(unit.getId());
+            }
+            else {
+                loginUser.setUnitAdmin(Boolean.FALSE);
+            }
+        }
+    }
+
+    @Override
     public List<YwUnitVO> export(YwUnitQuery query) {
         // 鍒嗛〉鏉′欢鏌ヨ浣�
         IPage<YwUnit> page = new LambdaQueryChainWrapper<>(baseMapper)
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/UserDetailsServiceImpl.java b/ycl-server/src/main/java/com/ycl/system/service/UserDetailsServiceImpl.java
index 5988e14..f16c005 100644
--- a/ycl-server/src/main/java/com/ycl/system/service/UserDetailsServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/system/service/UserDetailsServiceImpl.java
@@ -1,11 +1,13 @@
 package com.ycl.system.service;
 
 import com.ycl.exception.ServiceException;
+import com.ycl.platform.service.YwUnitService;
 import com.ycl.system.entity.SysUser;
 import com.ycl.system.model.LoginUser;
 import com.ycl.utils.MessageUtils;
 import com.ycl.utils.StringUtils;
 import enumeration.UserStatus;
+import lombok.RequiredArgsConstructor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,18 +22,15 @@
  * @author ruoyi
  */
 @Service
+@RequiredArgsConstructor
 public class UserDetailsServiceImpl implements UserDetailsService
 {
     private static final Logger log = LoggerFactory.getLogger(UserDetailsServiceImpl.class);
 
-    @Autowired
-    private ISysUserService userService;
-    
-    @Autowired
-    private SysPasswordService passwordService;
-
-    @Autowired
-    private SysPermissionService permissionService;
+    private final ISysUserService userService;
+    private final SysPasswordService passwordService;
+    private final SysPermissionService permissionService;
+    private final YwUnitService unitService;
 
     @Override
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
@@ -60,6 +59,8 @@
 
     public UserDetails createLoginUser(SysUser user)
     {
-        return new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));
+        LoginUser loginUser = new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));
+        unitService.setUnitInfo(loginUser);
+        return loginUser;
     }
 }
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/java/com/ycl/task/ContractResultTask.java b/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java
new file mode 100644
index 0000000..758c3a8
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java
@@ -0,0 +1,111 @@
+package com.ycl.task;
+
+import com.ycl.platform.domain.entity.CheckResult;
+import com.ycl.platform.domain.entity.ContractResultRecord;
+import com.ycl.platform.domain.entity.ContractScore;
+import com.ycl.platform.domain.entity.TContract;
+import com.ycl.platform.service.ICheckResultService;
+import com.ycl.platform.service.IContractScoreService;
+import com.ycl.platform.service.ITContractService;
+import com.ycl.utils.DateUtils;
+import com.ycl.utils.bean.BeanUtils;
+import lombok.Data;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+/**
+ * @author ghl
+ * @since 2024/4/28 涓嬪崍 4:14
+ */
+
+@Component
+@Data
+public class ContractResultTask {
+
+    private final ITContractService contractService;
+    private final IContractScoreService contractScoreService;
+    private final ICheckResultService checkResultService;
+
+    private String startTime;
+    private String endTime;
+
+    /**
+     * 姣忎釜鏈�1鍙锋墽琛岋紝缁熻鑰冩牳缁撴灉
+     */
+    @Scheduled(cron = "0 0 0 1 * ?")
+    @Transactional
+    // @PostConstruct //鍚姩鏃舵墽琛屼竴娆�
+    public void contractResultTask() {
+        // 鏌ヨ鏈夋晥鏈熷唴鐨勫悎鍚�
+        List<TContract> list = contractService.selectUsingContract();
+        getLastMonth();
+        for (TContract tContract : list) {
+            // 涓婁釜鏈堟墸鍒嗚褰�
+            List<ContractScore> contractScore = contractScoreService.getDateRangeScoreByContractId(tContract.getId(), startTime, endTime);
+            // 鏂板鑰冩牳缁撴灉
+            CheckResult checkResult = getCheckResult(tContract, contractScore);
+            checkResultService.save(checkResult);
+            // 鏂板鑰冩牳缁撴灉璁板綍
+            List<ContractResultRecord> contractResultRecord = getContractResultRecord(contractScore, checkResult);
+            checkResultService.saveBatchRecord(contractResultRecord);
+        }
+    }
+
+    /**
+     * 淇濆瓨鑰冩牳璁板綍
+     *
+     * @param contractScore 鎵e垎
+     * @param checkResult   鑰冩牳缁撴灉
+     * @return 鑰冩牳璁板綍
+     */
+    private List<ContractResultRecord> getContractResultRecord(List<ContractScore> contractScore, CheckResult checkResult) {
+        return contractScore.stream().map(
+                item -> {
+                    ContractResultRecord record = new ContractResultRecord();
+                    BeanUtils.copyProperties(item, record);
+                    record.setResultId(checkResult.getId());
+                    record.setCreateTime(DateUtils.getNowDate());
+                    return record;
+                }
+        ).toList();
+    }
+
+    /**
+     * 璁$畻鑰冩牳缁撴灉
+     *
+     * @param tContract     鍚堝悓
+     * @param contractScore 鎵e垎
+     * @return 鑰冩牳缁撴灉
+     */
+    private CheckResult getCheckResult(TContract tContract, List<ContractScore> contractScore) {
+        CheckResult checkResult = new CheckResult();
+        checkResult.setUnitId(tContract.getUnitId());
+        checkResult.setContractId(tContract.getId());
+        checkResult.setPublish(0);
+        checkResult.setDeleted("0");
+        checkResult.setCheckTime(DateUtils.getNowDate());
+        checkResult.setScore(contractScore.isEmpty() ? new BigDecimal("100") : new BigDecimal("100").subtract(contractScore.stream().map(ContractScore::getScore).reduce(BigDecimal::add).get()));
+        return checkResult;
+    }
+
+
+    /**
+     * 鑾峰彇涓婁釜鏈堢殑绗竴澶╁拰鏈�鍚庝竴澶�
+     */
+    public void getLastMonth() {
+        LocalDate currentDate = LocalDate.now().minusMonths(1);
+        LocalDate firstDayOfMonth = currentDate.withDayOfMonth(1);
+        String firstDay = firstDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        LocalDate lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth());
+        String lastDay = lastDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        this.startTime = firstDay;
+        this.endTime = lastDay;
+    }
+
+}
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/system/SysDictTypeMapper.xml b/ycl-server/src/main/resources/mapper/system/SysDictTypeMapper.xml
index 6613b88..d6c2b55 100644
--- a/ycl-server/src/main/resources/mapper/system/SysDictTypeMapper.xml
+++ b/ycl-server/src/main/resources/mapper/system/SysDictTypeMapper.xml
@@ -14,9 +14,9 @@
 		<result property="updateBy"   column="update_by"   />
 		<result property="updateTime" column="update_time" />
 	</resultMap>
-	
+
 	<sql id="selectDictTypeVo">
-        select dict_id, dict_name, dict_type, status, create_by, create_time, remark 
+        select dict_id, dict_name, dict_type, status, create_by, create_time, remark
 		from sys_dict_type
     </sql>
 
@@ -39,36 +39,38 @@
 				and date_format(create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
 			</if>
 	    </where>
+	    ORDER BY
+			create_time DESC
 	</select>
-	
+
 	<select id="selectDictTypeAll" resultMap="SysDictTypeResult">
 		<include refid="selectDictTypeVo"/>
 	</select>
-	
+
 	<select id="selectDictTypeById" parameterType="Long" resultMap="SysDictTypeResult">
 		<include refid="selectDictTypeVo"/>
 		where dict_id = #{dictId}
 	</select>
-	
+
 	<select id="selectDictTypeByType" parameterType="String" resultMap="SysDictTypeResult">
 		<include refid="selectDictTypeVo"/>
 		where dict_type = #{dictType}
 	</select>
-	
+
 	<select id="checkDictTypeUnique" parameterType="String" resultMap="SysDictTypeResult">
 		<include refid="selectDictTypeVo"/>
 		where dict_type = #{dictType} limit 1
 	</select>
-	
+
 	<delete id="deleteDictTypeById" parameterType="Long">
  		delete from sys_dict_type where dict_id = #{dictId}
  	</delete>
- 	
+
  	<delete id="deleteDictTypeByIds" parameterType="Long">
  		delete from sys_dict_type where dict_id in
  		<foreach collection="array" item="dictId" open="(" separator="," close=")">
  			#{dictId}
-        </foreach> 
+        </foreach>
  	</delete>
 
  	<update id="updateDictType" parameterType="com.ycl.system.entity.SysDictType">
@@ -83,7 +85,7 @@
  		</set>
  		where dict_id = #{dictId}
 	</update>
- 	
+
  	<insert id="insertDictType" parameterType="com.ycl.system.entity.SysDictType">
  		insert into sys_dict_type(
  			<if test="dictName != null and dictName != ''">dict_name,</if>
@@ -101,5 +103,5 @@
  			sysdate()
  		)
 	</insert>
-	
-</mapper> 
\ No newline at end of file
+
+</mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml
index d04f8d5..5ec3a0d 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml
@@ -47,7 +47,7 @@
         from t_calculate_rule
         where deleted = 0
           and contract_id
-            in (select id from t_contract where unit_id = #{unitId})
+            in (select id from t_contract where unit_id = #{unitId} and deleted = 0 and start_time <![CDATA[ <=  ]]> #{now} and end_time >= #{now} )
     </select>
 
     <insert id="insertDefaultRule" useGeneratedKeys="true" keyProperty="id">
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CheckResultMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CheckResultMapper.xml
new file mode 100644
index 0000000..a0cb132
--- /dev/null
+++ b/ycl-server/src/main/resources/mapper/zgyw/CheckResultMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ycl.platform.mapper.CheckResultMapper">
+
+
+    <select id="selectCheckResultList" resultType="com.ycl.platform.domain.vo.CheckResultVO">
+        SELECT c.*,
+        u.unit_name AS unitName,
+        ct.name AS contractName
+        FROM t_contract_result c
+        LEFT JOIN
+        t_yw_unit u ON c.unit_id = u.id and u.deleted = '0'
+        LEFT JOIN
+        t_contract ct ON c.contract_id = ct.id and ct.deleted = '0'
+        where
+        c.deleted = '0'
+        <if test="unitId != null">
+            AND c.unit_id = #{unitId}
+        </if>
+        <if test="createStartTime != null">
+            AND c.check_time BETWEEN #{createStartTime} AND #{createEndTime}
+        </if>
+        <if test="publish != null">
+            AND c.publish = #{publish}
+        </if>
+    </select>
+</mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ContractScoreMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ContractScoreMapper.xml
index c834028..e4ca7ab 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/ContractScoreMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/ContractScoreMapper.xml
@@ -22,12 +22,33 @@
         select id, publish_id, template_id, num, score, create_user, create_user_name, update_user, update_user_name, create_time, update_time from t_contract_score
     </sql>
 
-    <select id="selectDefaultScoreList" resultMap="DefaultScoreResult">
-        <include refid="selectDefaultScoreVo"/>
-        <where>
-            <if test="publishId != null "> and publish_id = #{publishId}</if>
-            <if test="templateId != null "> and template_id = #{templateId}</if>
-        </where>
+    <select id="selectDefaultScoreList" resultType="com.ycl.platform.domain.entity.ContractScore">
+        SELECT
+        cs.*,
+        u.unit_name AS unitName,
+        c.name AS contractName
+        FROM
+        t_contract_score cs
+        LEFT JOIN
+        t_yw_unit u ON cs.unit_id = u.id and u.deleted = '0'
+        LEFT JOIN
+        t_contract c ON cs.contract_id = c.id and c.deleted = '0'
+        where
+            cs.deleted = '0'
+        <if test="unitId != null">
+            AND cs.unit_id = #{unitId}
+        </if>
+        <if test="createStartTime != null">
+            AND cs.create_time BETWEEN #{createStartTime} AND #{createEndTime}
+        </if>
+        <if test="auditingStartTime != null">
+            AND cs.auditing_time BETWEEN #{auditingStartTime} AND #{auditingEndTime}
+        </if>
+        <if test="auditingStatus != null">
+            AND cs.auditing_status = #{auditingStatus}
+        </if>
+        ORDER BY
+        cs.create_time DESC
     </select>
 
     <select id="selectDefaultScoreById" resultMap="DefaultScoreResult">
diff --git a/ycl-server/src/main/resources/mapper/zgyw/NotifyMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/NotifyMapper.xml
index 3d6cd46..19351f9 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/NotifyMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/NotifyMapper.xml
@@ -9,10 +9,9 @@
         <result column="update_time" property="updateTime" />
         <result column="notify_type" property="notifyType" />
         <result column="content" property="content" />
-        <result column="notify_who" property="notifyWho" />
         <result column="readed" property="readed" />
         <result column="urgent" property="urgent" />
-        <result column="work_order_id" property="workOrderId" />
+        <result column="work_order_id" property="workOrderNo" />
     </resultMap>
 
 </mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
index 18a9ccb..4e2abe7 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
@@ -4,4 +4,12 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ycl.platform.mapper.TContractMapper">
 
+    <select id="selectAll" resultType="com.ycl.platform.domain.entity.TContract">
+        select a.*, b.unit_name
+        from t_contract a
+                 left join t_yw_unit b on a.unit_id = b.id and b.deleted = '0'
+        where a.deleted = '0'
+        order by create_time desc
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TContractResultRecordMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TContractResultRecordMapper.xml
new file mode 100644
index 0000000..d2ee5c5
--- /dev/null
+++ b/ycl-server/src/main/resources/mapper/zgyw/TContractResultRecordMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ycl.platform.mapper.ContractResultRecordMapper">
+
+    <insert id="saveBatch">
+        insert into t_contract_result_record(rule_name, create_time, rule_ids, result_id, num, score, deleted, deduct_category) values
+        <foreach collection="contractResultRecord" item="item" separator=",">
+            (#{item.ruleName}, #{item.createTime}, #{item.ruleIds}, #{item.resultId}, #{item.num}, #{item.score}, 0, #{item.deductCategory})
+        </foreach>
+    </insert>
+
+</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>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
index 7908573..4692c3d 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
@@ -99,4 +99,13 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="getByUserId" resultMap="YwUnitResult">
+        SELECT
+             tyw.*
+        FROM
+             t_yw_unit tyw
+                 INNER JOIN t_unit_people tup ON tup.unit_id = tyw.id and tyw.deleted = 0
+                 INNER JOIN t_yw_people typ ON tup.yw_people_id = typ.id AND typ.user_id = #{userId} AND typ.deleted = 0
+    </select>
 </mapper>

--
Gitblit v1.8.0