From a8f5761841bcf481eb2f2a7c535dbac145d2a468 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 29 七月 2024 10:14:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java             |   33 +-
 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java |   42 --
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                        |   47 ++
 ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java     |  106 +++---
 ycl-server/src/main/java/com/ycl/handler/CommentWriteHandler.java                    |    4 
 ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java         |    9 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java                   |   15 +
 ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java                             |   77 +++++
 ycl-server/src/main/resources/application-dev.yml                                    |   12 
 ycl-common/src/main/java/enumeration/ContractRule.java                               |   59 +++
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointJobVO.java                  |   40 ++
 ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java                 |  258 +++++++++++++++++
 ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java |    4 
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java                 |    2 
 ycl-server/src/main/resources/application.yml                                        |    5 
 ycl-server/src/main/java/com/ycl/utils/DateUtils.java                                |    8 
 ycl-common/src/main/java/constant/PointConfigConstants.java                          |   33 ++
 ycl-server/src/main/resources/application-prod.yml                                   |    7 
 ycl-common/src/main/java/enumeration/OvertimeStatus.java                             |   25 +
 ycl-server/src/main/java/com/ycl/web/UYClient.java                                   |    8 
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java     |    8 
 ycl-server/src/main/java/com/ycl/web/HKClient.java                                   |   35 +-
 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java                |    7 
 23 files changed, 667 insertions(+), 177 deletions(-)

diff --git a/ycl-common/src/main/java/constant/PointConfigConstants.java b/ycl-common/src/main/java/constant/PointConfigConstants.java
new file mode 100644
index 0000000..2c3d102
--- /dev/null
+++ b/ycl-common/src/main/java/constant/PointConfigConstants.java
@@ -0,0 +1,33 @@
+package constant;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/25 14:27
+ */
+public class PointConfigConstants {
+
+    /**
+     * 鏅�氱偣浣嶉厤缃殑key
+     *
+     */
+    public final static String NORMAL = "normal.workorder.time";
+
+    /**
+     * 鏅�氱偣浣嶅憡璀﹂厤缃殑key
+     *
+     */
+    public final static String NORMAL_ALARM = "normal.wordkorder.alarm.time";
+
+    /**
+     * 閲嶇偣鐐逛綅閰嶇疆鐨刱ey
+     *
+     */
+    public final static String IMPORTANT = "important.wordkorder.time";
+
+    /**
+     * 閲嶇偣鐐逛綅鍛婅閰嶇疆鐨刱ey
+     *
+     */
+    public final static String IMPORTANT_ALARM = "important.wordkorder.alarm.time";
+
+}
diff --git a/ycl-common/src/main/java/enumeration/ContractRule.java b/ycl-common/src/main/java/enumeration/ContractRule.java
new file mode 100644
index 0000000..1e8080b
--- /dev/null
+++ b/ycl-common/src/main/java/enumeration/ContractRule.java
@@ -0,0 +1,59 @@
+package enumeration;
+
+import lombok.Getter;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author gonghl
+ * @since 2024/7/25 涓婂崍 10:50
+ */
+@Getter
+public enum ContractRule {
+
+    CONTRACT_RULE_1("瑙嗛骞冲潎鍦ㄧ嚎鐜�", Arrays.asList("CONTRACT_RULE_2", "CONTRACT_RULE_3", "CONTRACT_RULE_4", "CONTRACT_RULE_5")),
+    CONTRACT_RULE_2("鈮�98%", Collections.EMPTY_LIST),
+    CONTRACT_RULE_3("95%鈮よ棰戝钩鍧囧湪绾跨巼锛�98%", Collections.EMPTY_LIST),
+    CONTRACT_RULE_4("90%鈮よ棰戝钩鍧囧湪绾跨巼锛�95%", Collections.EMPTY_LIST),
+    CONTRACT_RULE_5("锛�90%", Collections.EMPTY_LIST),
+    CONTRACT_RULE_6("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�", Arrays.asList("CONTRACT_RULE_7", "CONTRACT_RULE_8", "CONTRACT_RULE_9")),
+    CONTRACT_RULE_7("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級", Collections.EMPTY_LIST),
+    CONTRACT_RULE_8("OSD鏍囪瘑", Collections.EMPTY_LIST),
+    CONTRACT_RULE_9("涓�鏈轰竴妗�", Collections.EMPTY_LIST),
+    CONTRACT_RULE_10("瀛樺偍鏁呴殰", Arrays.asList("CONTRACT_RULE_11", "CONTRACT_RULE_12")),
+    CONTRACT_RULE_11("鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍忥紝椤诲湪24灏忔椂鎺掗櫎鏁呴殰", Collections.EMPTY_LIST),
+    CONTRACT_RULE_12("鍥犺棰戞垨鑰呭浘鐗囦涪澶卞鑷撮噸瑕佹浜嬩欢涓嶈兘鍥炴斁鎴栨煡鐪�", Collections.EMPTY_LIST),
+    CONTRACT_RULE_13("瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�", List.of("CONTRACT_RULE_14")),
+    CONTRACT_RULE_14("闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�", Collections.EMPTY_LIST),
+    CONTRACT_RULE_15("寤虹珛鏁版嵁鐩戞祴缁存姢鏈哄埗", List.of("CONTRACT_RULE_16")),
+    CONTRACT_RULE_16("涓爣浜哄簲褰撳缓绔嬫暟鎹洃娴嬬淮鎶ゆ満鍒讹紝褰撳彂鐢熸暟鎹紓甯告儏鍐垫椂锛屽簲鍦� 24 灏忔椂鍐呮仮澶嶃�傦紙鏁版嵁寮傚父鍖呮嫭瀹炴椂鐩戞帶鎴栧綍鍍忚棰戞媺娴佸け璐ワ紝鍥剧墖鑾峰彇澶辫触銆佽瑙夎绠楄В鏋愬紓甯哥瓑锛夈��", Collections.EMPTY_LIST),
+    CONTRACT_RULE_17("纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�", Arrays.asList("CONTRACT_RULE_18", "CONTRACT_RULE_19", "CONTRACT_RULE_20", "CONTRACT_RULE_21", "CONTRACT_RULE_22")),
+    CONTRACT_RULE_18("姣忚矾瑙嗛绱涓㈠け10鍒嗛挓浠ュ唴", Collections.EMPTY_LIST),
+    CONTRACT_RULE_19("涓㈠け10-60 鍒嗛挓", Collections.EMPTY_LIST),
+    CONTRACT_RULE_20("涓㈠け1 灏忔椂-4 灏忔椂锛堝惈锛�", Collections.EMPTY_LIST),
+    CONTRACT_RULE_21("涓㈠け4 灏忔椂-12 灏忔椂锛堝惈锛�", Collections.EMPTY_LIST),
+    CONTRACT_RULE_22("涓㈠け12 灏忔椂浠ヤ笂", Collections.EMPTY_LIST),
+    CONTRACT_RULE_23("纭繚鍥剧墖瀹屾暣涓嶅畾鏈熷鎵�鏈変汉鑴歌溅杈嗕互鍙婃櫤鑳藉墠绔姄鎷嶇殑鍥剧墖瀹屾暣鎬ф娊鏌�", List.of("CONTRACT_RULE_24")),
+    CONTRACT_RULE_24("鍙戠幇鍚庡彴瀛樺偍涓嶈兘璋冨彇鍓嶇璁惧鍥剧墖", Collections.EMPTY_LIST),
+    ;
+
+    private final String name;
+    private final List<String> children;
+
+    ContractRule(String name, List<String> children) {
+        this.name = name;
+        this.children = children;
+    }
+
+    public static List<ContractRule> getParent() {
+        return Arrays.stream(ContractRule.values()).filter(contractRule -> !contractRule.getChildren().isEmpty()).toList();
+    }
+
+    public static List<ContractRule> getChildren(ContractRule parent) {
+        return parent.getChildren().stream().map(ContractRule::valueOf).collect(Collectors.toList());
+    }
+
+}
diff --git a/ycl-common/src/main/java/enumeration/OvertimeStatus.java b/ycl-common/src/main/java/enumeration/OvertimeStatus.java
new file mode 100644
index 0000000..cf674de
--- /dev/null
+++ b/ycl-common/src/main/java/enumeration/OvertimeStatus.java
@@ -0,0 +1,25 @@
+package enumeration;
+
+import lombok.Getter;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/25 16:54
+ */
+@Getter
+public enum OvertimeStatus {
+
+    NOT(0, "鏈秴鏃�"),
+    ALARM(1, "璀﹀憡"),
+    YES(2, "瓒呮椂"),
+    ;
+
+    private final Integer value;
+
+    private final String desc;
+
+    OvertimeStatus(Integer value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java
index b6af342..2e2cb7e 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java
@@ -7,8 +7,6 @@
 import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.ycl.system.domain.TreeEntity;
-import com.ycl.system.domain.TreeNode;
 import enumeration.converter.RuleDeductCategoryConverter;
 import enumeration.general.RuleDeductCategoryEnum;
 import lombok.Data;
@@ -25,14 +23,12 @@
 @ExcelIgnoreUnannotated
 @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
 @TableName("t_calculate_rule")
-public class CalculateRule extends TreeNode {
-    private static final long serialVersionUID = 1L;
+public class CalculateRule {
 
     /**
-     * 涓婚敭
+     * id
      */
-    @ExcelProperty("搴忓彿")
-    private Long id;
+    private Integer id;
 
     /**
      * 鍚堝悓id
@@ -46,23 +42,24 @@
     private String ruleName;
 
     /**
-     * 鍏宠仈涓婄骇id
-     */
-    private Long parentId;
-
-    /**
-     * 瑙勫垯鎻忚堪
-     */
-    @ExcelProperty("璇勫垽鏍囧噯")
-    private String ruleDesc;
-
-    /**
      * 瑙勫垯鏉′欢
      */
     @ExcelProperty("鑰冩牳瑕佹眰")
     private String ruleCondition;
 
     /**
+     * 杩濊鏈�灏忓��
+     */
+    @ExcelProperty("杩濊鏈�灏忓��")
+    private Double min;
+
+    /**
+     * 杩濊鏈�澶у��
+     */
+    @ExcelProperty("杩濊鏈�澶у��")
+    private Double max;
+
+    /**
      * 鎵e噺鏂瑰紡 鎵f寚瀹氬垎鏁�/鍒嗘暟涔樹互鏁伴噺/闄や互鏁伴噺鍚庝箻浠ュ垎鏁�
      */
     @ExcelProperty(value = "鎵e垎鏂瑰紡", converter = RuleDeductCategoryConverter.class)
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java
index 0bd7f2a..b286248 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java
@@ -70,7 +70,7 @@
     @TableField("processing_period")
     private Integer processingPeriod;
 
-    @ApiModelProperty("鏄惁瓒呮椂锛�0娌℃湁 1瓒呮椂")
+    @ApiModelProperty("鏄惁瓒呮椂锛�0娌℃湁 1璀﹀憡 2瓒呮椂")
     @TableField("overtime")
     private Integer overtime;
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
index dda5d06..55d2059 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
@@ -5,6 +5,7 @@
 import com.ycl.platform.domain.entity.WorkOrder;
 
 import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 import org.springframework.lang.NonNull;
 import org.springframework.beans.BeanUtils;
@@ -41,6 +42,13 @@
      */
     private Integer pointId;
 
+    private String pointTag;
+
+    /**
+     * 鏄惁閲嶇偣鐐逛綅
+     */
+    private Boolean important;
+
     /** 鏁呴殰绫诲瀷 */
     private String errorType;
 
@@ -64,6 +72,13 @@
     /** 0鏈秴鏃� 1瓒呮椂 */
     private Integer overtime;
 
+    /** 涓嬪彂鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date distributeTime;
+
+    /** 涓嬪彂浜� */
+    private String realName;
+
     public static WorkOrderVO getVoByEntity(@NonNull WorkOrder entity, WorkOrderVO vo) {
         if(vo == null) {
             vo = new WorkOrderVO();
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointJobVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointJobVO.java
new file mode 100644
index 0000000..ef883c9
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointJobVO.java
@@ -0,0 +1,40 @@
+package com.ycl.platform.domain.vo;
+
+import com.ycl.platform.base.AbsVo;
+import com.ycl.platform.domain.entity.YwPoint;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 瀹氭椂浠诲姟澶勭悊宸ュ崟鏃舵晥
+ *
+ * @author xp
+ * @since 2024-03-05
+ */
+@Data
+public class YwPointJobVO {
+
+    private Integer id;
+
+    /** 鐐逛綅鍚嶇О */
+    private Date createTime;
+
+    /** 鐐逛綅鏍囩 */
+    private String [] pointTags;
+    private String pointTagString;
+
+    public static YwPointJobVO getVoByEntity(@NonNull YwPoint entity, YwPointJobVO vo) {
+        if(vo == null) {
+            vo = new YwPointJobVO();
+        }
+        BeanUtils.copyProperties(entity, vo);
+        return vo;
+    }
+
+}
diff --git a/ycl-server/src/main/java/com/ycl/handler/CommentWriteHandler.java b/ycl-server/src/main/java/com/ycl/handler/CommentWriteHandler.java
index dff2657..f57b1c6 100644
--- a/ycl-server/src/main/java/com/ycl/handler/CommentWriteHandler.java
+++ b/ycl-server/src/main/java/com/ycl/handler/CommentWriteHandler.java
@@ -24,11 +24,11 @@
             Sheet sheet = context.getWriteSheetHolder().getSheet();
             Drawing<?> drawingPatriarch = sheet.createDrawingPatriarch();
 
-            Comment comment1 = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0,  5, 4,  4, 5));
+            Comment comment1 = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0,  5, 5,  4, 6));
             comment1.setString(new XSSFRichTextString("鎵i櫎鐩稿叧闀滃ご鏁伴噺*0.1鍒�"));
             sheet.getRow(0).getCell(1).setCellComment(comment1);
 
-            Comment comment2 = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, 5, 7,  7, 8));
+            Comment comment2 = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, 5, 8,  7, 9));
             comment2.setString(new XSSFRichTextString("鎵�2鍒�/12灏忔椂"));
             sheet.getRow(0).getCell(1).setCellComment(comment2);
         }
diff --git a/ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java b/ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java
new file mode 100644
index 0000000..41b9066
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java
@@ -0,0 +1,258 @@
+package com.ycl.handler;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.util.BooleanUtils;
+import com.alibaba.excel.write.handler.CellWriteHandler;
+import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.ycl.platform.domain.entity.CalculateRule;
+import enumeration.ContractRule;
+import enumeration.general.RuleDeductCategoryEnum;
+import lombok.Data;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddressList;
+import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.xssf.usermodel.XSSFDataValidation;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class CustomCellWriteHandler implements CellWriteHandler {
+
+    /**
+     * 杩欎釜澶勭悊鍣ㄥ叾瀹炲彲浠ュ仛寰堝浜嬫儏
+     * 浠栬兘鎷垮埌鏁翠釜 Excel 鐨� WorkHook
+     * 涔熻兘鎷垮埌褰撳墠鐨� sheet
+     * 涔熻兘鎷垮埌褰撳墠鐨� cell
+     * 鎵�浠ヨ兘鍋氱殑鑷畾涔夋搷浣滃緢涓板瘜
+     */
+    // static class CustomCellWriteHandler {
+
+        @Override
+        public void afterCellDispose(CellWriteHandlerContext context) {
+            // 褰撳墠鐨� cell
+            Cell cell = context.getCell();
+            // 杩欓噷鍙互瀵筩ell杩涜浠讳綍鎿嶄綔
+            // 杩欓噷灏辫鑰冭檻 浣犺閽堝鍝竴鍒楄繘琛屼釜鎬у寲澶勭悊  涓�瀹氳璁板緱鍔犲垽鏂�  鍥犱负姣忎釜 cell 閮戒細鎵ц鍒拌繖閲� 鎵�浠ヨ璁板緱鍖哄垎
+            if (BooleanUtils.isTrue(context.getHead()) && cell.getColumnIndex() == 1) {
+                // 1 琛ㄧず 鐪侀偅涓�鍒� 瑕佸鐪佸競鍖鸿繘琛岃仈鍔ㄤ笅鎷夊鐞�
+                ExcelAreaUtil.writeAreaInfo(context, 0);
+            }
+        }
+    // }
+
+    public static class ExcelAreaUtil {
+
+        @Data
+        static class AreaInfo {
+
+            private String name;
+
+            private List<String> areaList;
+
+
+            public AreaInfo(String name, List<String> areaList) {
+                this.name = name;
+                this.areaList = areaList;
+            }
+        }
+
+
+        /**
+         * @param context    handler 鐨� 涓婁笅鏂�
+         * @param startIndex 鐪佺殑鍒楀彿  浠�0寮�濮嬬殑
+         */
+        public static void writeAreaInfo(CellWriteHandlerContext context, int startIndex) {
+            // 鑾峰彇鍒板綋鍓嶇殑 sheet 鍚庣画瑕佺粰鐪佸競鍖哄垪鍔犱笅鎷�
+            WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder();
+            Sheet sheet = writeSheetHolder.getSheet();
+
+            // 鐪佸競鍖烘尐鐫�鐨勫垪鍙�
+            int cIndex = startIndex + 1;
+            int aIndex = cIndex + 1;
+
+            // 鍑嗗鐐规暟鎹�
+            List<AreaInfo> provinceList = new ArrayList<>();
+            for (ContractRule contractRule : ContractRule.getParent()) {
+                provinceList.add(new AreaInfo(contractRule.getName(), ContractRule.getChildren(contractRule).stream().map(ContractRule::getName).toList()));
+            }
+
+            // 鑾峰彇鍒板綋鍓嶇殑 excel 鍥犱负瑕佸垱寤洪殣钘忕殑 sheet 涔熷氨鏄渷甯傚尯鐨勫疄闄呭唴瀹归兘鏉ヨ嚜浜庨殣钘忕殑 sheet
+            Workbook workbook = context.getWriteSheetHolder().getParentWriteWorkbookHolder().getWorkbook();
+            Sheet hideSheet = workbook.createSheet("area");
+            workbook.setSheetHidden(workbook.getSheetIndex(hideSheet), true);
+            // 鍐欓殣钘� sheet 鐨勭渷甯傚尯淇℃伅
+            int rowId = 0;
+            // 璁剧疆绗竴琛岋紝瀛樼渷鐨勪俊鎭�
+            Row provinceRow = hideSheet.createRow(rowId++);
+            provinceRow.createCell(0).setCellValue("鐪佸垪琛�");
+            for (int i = 0; i < provinceList.size(); i++) {
+                Cell provinceCell = provinceRow.createCell(i + 1);
+                provinceCell.setCellValue(provinceList.get(i).getName());
+            }
+
+            for (AreaInfo pro : provinceList) {
+                String pName = pro.getName();
+                List<String> cList = pro.getAreaList();
+                Row cRow = hideSheet.createRow(rowId++);
+                cRow.createCell(0).setCellValue(pName);
+                for (int j = 0; j < cList.size(); j++) {
+                    String cInfo = cList.get(j);
+                    Cell cCell = cRow.createCell(j + 1);
+                    cCell.setCellValue(cInfo);
+                }
+
+                // 娣诲姞鍚嶇О绠$悊鍣�
+                String range = getRange(1, rowId, cList.size());
+                Name name = workbook.createName();
+                // key涓嶅彲閲嶅
+                name.setNameName(pName);
+                String formula = "area!" + range;
+                name.setRefersToFormula(formula);
+            }
+
+            // 缁欑渷娣诲姞涓嬫媺
+            int lastRow = 100;
+            setDataValidation(sheet, 1, lastRow, startIndex, startIndex);
+
+            // 缁欏競 鍖� 娣诲姞涓嬫媺
+            // 璁剧疆绗簩鍒楀拰绗笁鍒楃殑鏈夋晥鎬�
+            for (int i = 2; i < lastRow; i++) {
+                setDataValidation(CellReference.convertNumToColString(startIndex), sheet, i - 1, i - 1, cIndex, cIndex);
+                setDataValidation(CellReference.convertNumToColString(cIndex), sheet, i - 1, i - 1, aIndex, aIndex);
+            }
+        }
+
+        public static void setDataValidation(Sheet sheetPro, int firstRow, int lastRow, int firstCol, int lastCol) {
+            DataValidationHelper dvHelper = sheetPro.getDataValidationHelper();
+            String formula = getFormula(1, 1, 1, 34);
+            // 鐪佽鍒�
+            DataValidationConstraint provConstraint = dvHelper.createFormulaListConstraint(formula);
+            // 鍥涗釜鍙傛暟鍒嗗埆鏄細璧峰琛屻�佺粓姝㈣銆佽捣濮嬪垪銆佺粓姝㈠垪
+            CellRangeAddressList provRangeAddressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
+            DataValidation provinceDataValidation = dvHelper.createValidation(provConstraint, provRangeAddressList);
+            // 楠岃瘉
+            provinceDataValidation.createErrorBox("error", "璇烽�夋嫨姝g‘鐨勭渷浠�");
+            provinceDataValidation.setShowErrorBox(true);
+            provinceDataValidation.setSuppressDropDownArrow(true);
+            sheetPro.addValidationData(provinceDataValidation);
+        }
+
+        public static void setDataValidation(String offset, Sheet sheet, int firstRow, int lastRow, int firstCol, int lastCol) {
+            DataValidationHelper dvHelper = sheet.getDataValidationHelper();
+            String formulaString = String.format("INDIRECT($%s%s)", offset, firstRow + 1);
+            DataValidation dataValidation = getDataValidationByFormula(formulaString, dvHelper, firstRow, lastRow, firstCol, lastCol);
+            sheet.addValidationData(dataValidation);
+        }
+
+        private static DataValidation getDataValidationByFormula(String formulaString, DataValidationHelper dvHelper,
+                                                                 int firstRow, int lastRow, int firstCol, int lastCol) {
+            // 鍔犺浇涓嬫媺鍒楄〃鍐呭
+            // 涓句緥锛氳嫢formulaString = "INDIRECT($A$2)" 琛ㄧず瑙勫垯鏁版嵁浼氫粠鍚嶇О绠$悊鍣ㄤ腑鑾峰彇key涓庡崟鍏冩牸 A2 鍊肩浉鍚岀殑鏁版嵁锛�
+            // 濡傛灉A2鏄睙鑻忕渷锛岄偅涔堟澶勫氨鏄睙鑻忕渷涓嬬殑甯備俊鎭��
+            DataValidationConstraint dvConstraint = dvHelper.createFormulaListConstraint(formulaString);
+            // 璁剧疆鏁版嵁鏈夋晥鎬у姞杞藉湪鍝釜鍗曞厓鏍间笂銆�
+            // 鍥涗釜鍙傛暟鍒嗗埆鏄細璧峰琛屻�佺粓姝㈣銆佽捣濮嬪垪銆佺粓姝㈠垪
+            CellRangeAddressList regions = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
+            // 缁戝畾 鏁版嵁鏈夋晥鎬у璞�
+            XSSFDataValidation dataValidation = (XSSFDataValidation) dvHelper.createValidation(dvConstraint, regions);
+            dataValidation.setEmptyCellAllowed(true);
+            dataValidation.setSuppressDropDownArrow(true);
+            dataValidation.setShowErrorBox(true);
+            // 璁剧疆杈撳叆閿欒鎻愮ず淇℃伅
+            dataValidation.createErrorBox("閫夋嫨閿欒鎻愮ず", "浣犺緭鍏ョ殑鍊兼湭鍦ㄥ閫夊垪琛ㄤ腑锛岃涓嬫媺閫夋嫨鍚堥�傜殑鍊硷紒");
+            return dataValidation;
+        }
+
+        private static String getFormula(int firstRow, int lastRow, int firstCol, int lastCol) {
+            String ss = String.format("$%s$%s:$%s$%s", CellReference.convertNumToColString(firstCol), firstRow,
+                    CellReference.convertNumToColString(lastCol), lastRow);
+            return String.format("=%s!%s", "area", ss);
+        }
+
+        private static String getRange(int offset, int rowId, int colCount) {
+            String columnLetter1 = CellReference.convertNumToColString(offset);
+            String columnLetter2 = CellReference.convertNumToColString(offset + colCount - 1);
+            return String.format("$%s$%s:$%s$%s", columnLetter1, rowId, columnLetter2, rowId);
+        }
+
+    }
+
+
+    public static void main(String[] args) {
+        EasyExcel.write("test.xlsx", CalculateRule.class)
+                // 鑷�傚簲鍒楀
+                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                // 涓嬫媺妗�
+                .registerWriteHandler(new CustomSheetWriteHandler(Arrays.asList("鎵f寚瀹氬垎鏁�", "鍒嗘暟涔樹互鏁伴噺", "闄や互鏁伴噺鍚庝箻浠ュ垎鏁�")))
+                .registerWriteHandler(new CustomCellWriteHandler())
+                // 鏍囨敞
+                .registerWriteHandler(new CommentWriteHandler())
+                .sheet("鍚堝悓瀵煎叆妯℃澘")
+                .doWrite(getExcelData());
+    }
+
+    private static List<CalculateRule> getExcelData() {
+        ArrayList<CalculateRule> list = new ArrayList<>();
+        CalculateRule calculateRule1 = new CalculateRule();
+        calculateRule1.setId(1);
+        calculateRule1.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
+        calculateRule1.setRuleCondition("鈮�98%");
+        calculateRule1.setMax(98D);
+        calculateRule1.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
+        calculateRule1.setCalcFraction(0.00);
+        list.add(calculateRule1);
+        CalculateRule calculateRule2 = new CalculateRule();
+        calculateRule2.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
+        calculateRule2.setRuleCondition("95%鈮よ棰戝钩鍧囧湪绾跨巼锛�98%");
+        calculateRule2.setMax(97D);
+        calculateRule2.setMin(95D);
+        calculateRule2.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
+        calculateRule2.setCalcFraction(5.00);
+        list.add(calculateRule2);
+        CalculateRule calculateRule3 = new CalculateRule();
+        calculateRule3.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
+        calculateRule3.setRuleCondition("90%鈮よ棰戝钩鍧囧湪绾跨巼锛�95%");
+        calculateRule3.setMax(94D);
+        calculateRule3.setMin(90D);
+        calculateRule3.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
+        calculateRule3.setCalcFraction(10.00);
+        list.add(calculateRule3);
+        CalculateRule calculateRule33 = new CalculateRule();
+        calculateRule33.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
+        calculateRule33.setRuleCondition("锛�90%");
+        calculateRule33.setMin(89D);
+        calculateRule33.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
+        calculateRule33.setCalcFraction(10.00);
+        list.add(calculateRule33);
+        CalculateRule calculateRule4 = new CalculateRule();
+        calculateRule4.setId(2);
+        calculateRule4.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
+        calculateRule4.setRuleCondition("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級");
+        calculateRule4.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY);
+        calculateRule4.setCalcFraction(0.1);
+        list.add(calculateRule4);
+        CalculateRule calculateRule7 = new CalculateRule();
+        calculateRule7.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
+        calculateRule7.setRuleCondition("OSD鏍囪瘑");
+        list.add(calculateRule7);
+        CalculateRule calculateRule6 = new CalculateRule();
+        calculateRule6.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
+        calculateRule6.setRuleCondition("涓�鏈轰竴妗�");
+        list.add(calculateRule6);
+        CalculateRule calculateRule5 = new CalculateRule();
+        calculateRule5.setId(3);
+        calculateRule5.setRuleName("鍚庡彴绯荤粺鐨勪繚闅�");
+        calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�72灏忔椂涓嶈冻144灏忔椂鐨勶紝姣忚秴鍑�12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級");
+        calculateRule5.setMax(144D);
+        calculateRule5.setMin(72D);
+        calculateRule5.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY);
+        calculateRule5.setCalcFraction(2.00);
+        calculateRule5.setCalcUnit(12);
+        list.add(calculateRule5);
+        return list;
+    }
+
+}
\ No newline at end of file
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
index f42af24..6f29f18 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -10,6 +10,7 @@
 import java.util.List;
 
 import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO;
+import com.ycl.platform.domain.vo.YwPointJobVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -26,4 +27,10 @@
 
     IPage<WorkOrderVO> distributePage(IPage page, @Param("query") DistributeWorkOrderQuery query);
 
+    /**
+     * 澶勭悊涓殑宸ュ崟
+     *
+     * @return
+     */
+    List<YwPointJobVO> handlingWorkOrderList();
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java b/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java
index d0db182..22295fa 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java
@@ -2,9 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.platform.domain.entity.CalculateRule;
-import com.ycl.platform.domain.entity.TContract;
 import com.ycl.platform.domain.vo.CalculateRuleCascaderVO;
-import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -62,13 +60,6 @@
      * @return 缁撴灉
      */
     public int deleteDefaultRuleById(Long id);
-
-    /**
-     * 璇诲彇Excel鏁版嵁
-     *
-     * @param file      鏂囦欢
-     */
-    List<CalculateRule> readExcel(MultipartFile file);
 
     /**
      * 鏍规嵁鍚堝悓id鏌ヨ瑙勫垯
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 0cadd77..34c406f 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
@@ -1,12 +1,8 @@
 package com.ycl.platform.service.impl;
 
-import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.context.AnalysisContext;
-import com.alibaba.excel.read.listener.ReadListener;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.platform.domain.entity.CalculateRule;
-import com.ycl.platform.domain.entity.TContract;
 import com.ycl.platform.domain.vo.CalculateRuleCascaderVO;
 import com.ycl.platform.mapper.CalculateRuleMapper;
 import com.ycl.platform.mapper.TContractMapper;
@@ -14,11 +10,8 @@
 import com.ycl.system.domain.TreeUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
 import utils.DateUtils;
 
-import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -102,44 +95,11 @@
         return calculateRuleMapper.deleteDefaultRuleById(id);
     }
 
-    /**
-     * 鑾峰彇鍚堝悓Excel瑙勫垯
-     *
-     * @param file 鍚堝悓Excel鏂囦欢
-     * @return 瑙勫垯
-     */
-
-    @Override
-    public List<CalculateRule> readExcel(MultipartFile file) {
-        List<CalculateRule> calculateRuleList = new ArrayList<>();
-        try {
-            EasyExcel.read(file.getInputStream(), CalculateRule.class, new ReadListener<CalculateRule>() {
-                        @Override
-                        public void invoke(CalculateRule calculateRule, AnalysisContext analysisContext) {
-                            calculateRule.setId(null);
-                            calculateRuleList.add(calculateRule);
-                        }
-
-                        @Override
-                        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-                        }
-
-                    })
-                    .head(CalculateRule.class)
-                    .sheet()
-                    .doRead();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-        return calculateRuleList;
-    }
-
     @Override
     public List<CalculateRule> getRuleListByContractId(Integer contractId) {
-        List<CalculateRule> list = new LambdaQueryChainWrapper<>(calculateRuleMapper)
+        return new LambdaQueryChainWrapper<>(calculateRuleMapper)
                 .eq(CalculateRule::getContractId, contractId)
                 .list();
-        return TreeUtils.build(list, 0L);
     }
 
     @Override
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 9b9ebef..ec9831f 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,10 +10,8 @@
 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;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -66,7 +64,7 @@
         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()}));
+        contractScore.setRuleName(String.join(" / ", new String[]{list.get(0).getRuleName(), list.get(2).getRuleCondition()}));
         return super.save(contractScore);
     }
 
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 855a8a2..346b141 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
@@ -1,13 +1,14 @@
 package com.ycl.platform.service.impl;
 
 import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.write.merge.LoopMergeStrategy;
+import com.alibaba.excel.read.listener.PageReadListener;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.handler.CommentWriteHandler;
+import com.ycl.handler.CustomCellWriteHandler;
 import com.ycl.handler.CustomSheetWriteHandler;
 import com.ycl.platform.domain.entity.CalculateMoneyRule;
 import com.ycl.platform.domain.entity.CalculateRule;
@@ -26,6 +27,7 @@
 import enumeration.general.RuleDeductCategoryEnum;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -35,6 +37,7 @@
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -51,33 +54,24 @@
 
     private final ICalculateRuleService calculateRuleService;
     private final CalculateMoneyRuleServiceImpl calculateMoneyRuleService;
-    private final YwUnitServiceImpl ywUnitService;
 
     @Override
     public void importTemplate(HttpServletResponse response) {
         try {
-            List<CalculateRule> list = getExcelData();
-            ArrayList<String> arrayList = new ArrayList<>();
-            arrayList.add("鎵f寚瀹氬垎鏁�");
-            arrayList.add("鍒嗘暟涔樹互鏁伴噺");
-            arrayList.add("闄や互鏁伴噺鍚庝箻浠ュ垎鏁�");
             response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
             response.setCharacterEncoding("utf-8");
             String fileName = URLEncoder.encode("瀵煎叆鍚堝悓妯℃澘", StandardCharsets.UTF_8).replace("\\+", "%20");
             response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
-            // 绗竴鍒椼�佺浜屽垪涓婁笅鍚堝苟3琛�
-            LoopMergeStrategy loopMergeStrategy1 = new LoopMergeStrategy(3, 0);
-            LoopMergeStrategy loopMergeStrategy2 = new LoopMergeStrategy(3, 1);
             EasyExcel.write(response.getOutputStream(), CalculateRule.class)
-                    .registerWriteHandler(loopMergeStrategy1)
-                    .registerWriteHandler(loopMergeStrategy2)
                     // 鑷�傚簲鍒楀
                     .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
                     // 涓嬫媺妗�
-                    .registerWriteHandler(new CustomSheetWriteHandler(arrayList))
+                    .registerWriteHandler(new CustomSheetWriteHandler(Arrays.asList("鎵f寚瀹氬垎鏁�", "鍒嗘暟涔樹互鏁伴噺", "闄や互鏁伴噺鍚庝箻浠ュ垎鏁�")))
+                    .registerWriteHandler(new CustomCellWriteHandler())
                     // 鏍囨敞
                     .registerWriteHandler(new CommentWriteHandler())
-                    .sheet("鍚堝悓瀵煎叆妯℃澘").doWrite(list);
+                    .sheet("鍚堝悓瀵煎叆妯℃澘")
+                    .doWrite(getExcelData());
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
@@ -86,46 +80,61 @@
     private List<CalculateRule> getExcelData() {
         ArrayList<CalculateRule> list = new ArrayList<>();
         CalculateRule calculateRule1 = new CalculateRule();
-        calculateRule1.setId(1L);
+        calculateRule1.setId(1);
         calculateRule1.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
-        calculateRule1.setRuleDesc("锛�1锛夎棰戝湪绾跨巼=瑙嗛鍦ㄧ嚎鏁伴噺梅鍓嶇鏈嶅姟閰嶇疆鏁帮紙搴旀墸闄や笉鍙姉鍔涙垨涓庝腑鏍囦汉鏈嶅姟鏃犲叧閫犳垚鐨勬帀绾块櫎澶栥�傦級");
         calculateRule1.setRuleCondition("鈮�98%");
+        calculateRule1.setMax(98D);
         calculateRule1.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
         calculateRule1.setCalcFraction(0.00);
         list.add(calculateRule1);
         CalculateRule calculateRule2 = new CalculateRule();
-        calculateRule2.setRuleDesc("锛�2锛夎棰戝钩鍧囧湪绾跨巼锛氬綋鏈堟瘡鏃ヨ棰戝湪绾跨巼鐨勫钩鍧囧�笺��");
+        calculateRule2.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
         calculateRule2.setRuleCondition("95%鈮よ棰戝钩鍧囧湪绾跨巼锛�98%");
+        calculateRule2.setMax(97D);
+        calculateRule2.setMin(95D);
         calculateRule2.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
         calculateRule2.setCalcFraction(5.00);
         list.add(calculateRule2);
         CalculateRule calculateRule3 = new CalculateRule();
-        calculateRule3.setRuleDesc("锛�3锛夎棰戝湪绾跨巼淇濈暀鏁存暟骞朵笖鍚戜笅鍙栨暣銆�");
+        calculateRule3.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
         calculateRule3.setRuleCondition("90%鈮よ棰戝钩鍧囧湪绾跨巼锛�95%");
+        calculateRule3.setMax(94D);
+        calculateRule3.setMin(90D);
         calculateRule3.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
         calculateRule3.setCalcFraction(10.00);
         list.add(calculateRule3);
+        CalculateRule calculateRule33 = new CalculateRule();
+        calculateRule33.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
+        calculateRule33.setRuleCondition("锛�90%");
+        calculateRule33.setMin(89D);
+        calculateRule33.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
+        calculateRule33.setCalcFraction(10.00);
+        list.add(calculateRule33);
         CalculateRule calculateRule4 = new CalculateRule();
-        calculateRule4.setId(2L);
+        calculateRule4.setId(2);
         calculateRule4.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
-        calculateRule4.setRuleDesc("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級");
-        calculateRule4.setRuleCondition("瑙嗛鐩戞帶鎽勫儚鏈烘椂閽熶笉鍚屾锛�24灏忔椂鍐呮湭淇鐨�");
+        calculateRule4.setRuleCondition("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級");
         calculateRule4.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY);
         calculateRule4.setCalcFraction(0.1);
         list.add(calculateRule4);
         CalculateRule calculateRule7 = new CalculateRule();
-        calculateRule7.setRuleDesc("鈥︹�︹�︹��");
-        calculateRule7.setRuleCondition("鈥︹�︹�︹��");
+        calculateRule7.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
+        calculateRule7.setRuleCondition("OSD鏍囪瘑");
+        calculateRule7.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY);
+        calculateRule7.setCalcFraction(0.1);
         list.add(calculateRule7);
         CalculateRule calculateRule6 = new CalculateRule();
-        calculateRule6.setRuleDesc("鈥︹�︹�︹��");
-        calculateRule6.setRuleCondition("鈥︹�︹�︹��");
+        calculateRule6.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
+        calculateRule6.setRuleCondition("涓�鏈轰竴妗�");
+        calculateRule6.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY);
+        calculateRule6.setCalcFraction(0.1);
         list.add(calculateRule6);
         CalculateRule calculateRule5 = new CalculateRule();
-        calculateRule5.setId(3L);
+        calculateRule5.setId(3);
         calculateRule5.setRuleName("鍚庡彴绯荤粺鐨勪繚闅�");
-        calculateRule5.setRuleDesc("鍦ㄤ釜鍒澶囨晠闅滀絾涓嶅奖鍝嶈鍔熻兘妯″潡鏁翠綋搴旂敤鎯呭喌涓嬶紝椤诲湪72灏忔椂浠ュ唴鎺掗櫎鏁呴殰銆�");
-        calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�144灏忔椂浠ュ悗锛屾瘡瓒呭嚭12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級");
+        calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�72灏忔椂涓嶈冻144灏忔椂鐨勶紝姣忚秴鍑�12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級");
+        calculateRule5.setMax(144D);
+        calculateRule5.setMin(72D);
         calculateRule5.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY);
         calculateRule5.setCalcFraction(2.00);
         calculateRule5.setCalcUnit(12);
@@ -135,17 +144,18 @@
 
     @Override
     @Transactional
+    @SneakyThrows
     public AjaxResult importData(MultipartFile file, TContract tContract) {
         // 淇濆瓨鍚堝悓
         tContract.setCreateTime(DateUtils.getNowDate());
         save(tContract);
-        List<CalculateRule> list = calculateRuleService.readExcel(file);
+
+        // 鑾峰彇鍚堝悓Excel瑙勫垯
+        List<CalculateRule> list = new ArrayList<>();
+        EasyExcel.read(file.getInputStream(), CalculateRule.class, new PageReadListener<CalculateRule>(list::addAll)).sheet().doRead();
 
         // 閬嶅巻鐖跺瓙鍏崇郴
         List<CalculateRule> calculateRulesToSave = new ArrayList<>();
-        CalculateRule fu1 = new CalculateRule();
-        CalculateRule fu2 = new CalculateRule();
-        boolean fuNew = true;
         for (CalculateRule calculateRule : list) {
             // 鍒ゆ柇鏁版嵁瀹屾暣鎬�
             if (ObjectUtils.isEmpty(calculateRule.getDeductCategory())) {
@@ -160,35 +170,13 @@
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return AjaxResult.warn("璇峰~鍐�" + calculateRule.getRuleName() + calculateRule.getRuleCondition() + "鎵e垎鏁板��");
             }
-            // 淇濆瓨鐖惰鍒欒幏鍙栫埗id
+            // 淇濆瓨瑙勫垯
             if (StringUtils.isNotBlank(calculateRule.getRuleName())) {
-                CalculateRule one = new CalculateRule();
-                one.setParentId(0L);
-                one.setContractId(tContract.getId().intValue());
-                one.setRuleName(calculateRule.getRuleName());
-                one.setCreateTime(DateUtils.getNowDate());
-                one.setDeleted(0);
-                calculateRuleService.save(one);
-                fu1 = one;
-                fuNew = true;
+                calculateRule.setContractId(tContract.getId().intValue());
+                calculateRule.setCreateTime(DateUtils.getNowDate());
+                calculateRule.setUpdateTime(DateUtils.getNowDate());
+                calculateRulesToSave.add(calculateRule);
             }
-            // 淇濆瓨绗簩灞傜埗瑙勫垯鑾峰彇绗簩灞傜埗id
-            if (StringUtils.isNotBlank(calculateRule.getRuleDesc())) {
-                CalculateRule two = new CalculateRule();
-                two.setContractId(tContract.getId().intValue());
-                two.setParentId(fu1.getId());
-                two.setRuleDesc(calculateRule.getRuleDesc());
-                two.setCreateTime(DateUtils.getNowDate());
-                two.setDeleted(0);
-                calculateRuleService.save(two);
-                fu2 = two;
-                fuNew = false;
-            }
-            calculateRule.setContractId(tContract.getId().intValue());
-            calculateRule.setCreateTime(DateUtils.getNowDate());
-            calculateRule.setDeleted(0);
-            calculateRule.setParentId(fuNew ? fu1.getId() : fu2.getId());
-            calculateRulesToSave.add(calculateRule);
         }
         // 鎵归噺淇濆瓨瑙勫垯
         calculateRuleService.saveBatch(calculateRulesToSave);
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 7e75841..8485cc6 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
@@ -24,6 +24,7 @@
 import com.ycl.utils.SecurityUtils;
 import com.ycl.utils.redis.RedisCache;
 import com.ycl.utils.uuid.IdUtils;
+import constant.PointConfigConstants;
 import enumeration.general.*;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ArrayUtils;
@@ -63,6 +64,7 @@
     private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper;
 
     private final String DISTRIBUTE_LOCK_KEY = "distributeLock";
+    private final static String IMPORTANT = "important";
 
     @Autowired
     private RedisCache redisCache;
@@ -257,8 +259,12 @@
     @Override
     public Result distributePage(DistributeWorkOrderQuery query) {
         IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
-        // todo 鍏抽敭璇嶆悳绱�
         baseMapper.distributePage(page, query);
+        page.getRecords().stream().forEach(workOrder -> {
+            if (StringUtils.hasText(workOrder.getPointTag()) && workOrder.getPointTag().contains(IMPORTANT)) {
+                workOrder.setImportant(Boolean.TRUE);
+            }
+        });
         return Result.ok().data(page).total(page.getTotal());
     }
 
diff --git a/ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java b/ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java
new file mode 100644
index 0000000..e40a3a3
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java
@@ -0,0 +1,77 @@
+package com.ycl.task;
+
+import com.ycl.platform.domain.entity.WorkOrder;
+import com.ycl.platform.domain.vo.YwPointJobVO;
+import com.ycl.platform.mapper.WorkOrderMapper;
+import com.ycl.system.domain.SysConfig;
+import com.ycl.system.mapper.SysConfigMapper;
+import com.ycl.utils.DateUtils;
+import constant.PointConfigConstants;
+import enumeration.OvertimeStatus;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/25 13:36
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Component("workOrderTask")
+public class WorkOrderTask {
+
+    private final WorkOrderMapper workOrderMapper;
+    private final SysConfigMapper configMapper;
+
+    private final static String IMPORTANT = "important";
+    private final static String NORMAL = "normal";
+
+    /**
+     * 澶勭悊宸ュ崟鏈夋晥鏃堕棿锛岃秴鏃剁姸鎬�
+     *
+     */
+    public void handleTime() {
+        List<YwPointJobVO> handlingWorkOrderList = workOrderMapper.handlingWorkOrderList();
+        SysConfig config = new SysConfig();
+        config.setConfigKey(PointConfigConstants.IMPORTANT);
+        Integer importantTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue());
+        config.setConfigKey(PointConfigConstants.NORMAL);
+        Integer normalTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue());
+        config.setConfigKey(PointConfigConstants.NORMAL_ALARM);
+        Integer normalAlarmTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue());
+        config.setConfigKey(PointConfigConstants.IMPORTANT_ALARM);
+        Integer importantAlarmTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue());
+
+        Date now = new Date();
+        handlingWorkOrderList.stream().forEach(workOrder -> {
+            int diffHours = DateUtils.differentHoursByMillisecond(now, workOrder.getCreateTime());
+            if (StringUtils.hasText(workOrder.getPointTagString()) && workOrder.getPointTagString().contains(IMPORTANT)) {
+                this.handleOverTime(workOrder.getId(), diffHours, importantTime, importantAlarmTime);
+            } else {
+                this.handleOverTime(workOrder.getId(), diffHours, normalTime, normalAlarmTime);
+            }
+        });
+        log.info("宸ュ崟瓒呮椂鐘舵�佷换鍔℃墽琛屽畬鎴�");
+    }
+
+    private void handleOverTime(Integer id, Integer diffHours, Integer time, Integer alarmTime) {
+        if (diffHours <= time) {
+            if (time - diffHours < alarmTime) {
+                WorkOrder wo = new WorkOrder();
+                wo.setId(id);
+                wo.setOvertime(OvertimeStatus.ALARM.getValue());
+                workOrderMapper.updateById(wo);
+            }
+        } else {
+            WorkOrder wo = new WorkOrder();
+            wo.setId(id);
+            wo.setOvertime(OvertimeStatus.YES.getValue());
+            workOrderMapper.updateById(wo);
+        }
+    }
+}
diff --git a/ycl-server/src/main/java/com/ycl/utils/DateUtils.java b/ycl-server/src/main/java/com/ycl/utils/DateUtils.java
index 4ab7585..0be7f5f 100644
--- a/ycl-server/src/main/java/com/ycl/utils/DateUtils.java
+++ b/ycl-server/src/main/java/com/ycl/utils/DateUtils.java
@@ -145,6 +145,14 @@
     }
 
     /**
+     * 璁$畻鐩稿樊灏忔椂
+     */
+    public static int differentHoursByMillisecond(Date date1, Date date2)
+    {
+        return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600)));
+    }
+
+    /**
      * 璁$畻鏃堕棿宸�
      *
      * @param endDate 鏈�鍚庢椂闂�
diff --git a/ycl-server/src/main/java/com/ycl/web/HKClient.java b/ycl-server/src/main/java/com/ycl/web/HKClient.java
index 58c13fe..c1b9a2d 100644
--- a/ycl-server/src/main/java/com/ycl/web/HKClient.java
+++ b/ycl-server/src/main/java/com/ycl/web/HKClient.java
@@ -7,6 +7,7 @@
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * @author gonghl
@@ -29,7 +30,7 @@
      * @return 鎸夊尯鍩熺粺璁$粡绾害寮傚父璁惧鎴栧崱鍙�
      */
     @PostMapping("/dqd/service/rs/v1/device/coordinateExpInfo/query")
-    JSONObject coordinateByArea(CoordinateByAreaParam param);
+    JSONObject coordinateByArea(@RequestBody CoordinateByAreaParam param);
 
     /**
      * 鎸夊尯鍩熺粺璁$紪鐮佸紓甯歌澶囨垨鍗″彛
@@ -43,7 +44,7 @@
      * @return 鎸夊尯鍩熺粺璁$紪鐮佸紓甯歌澶囨垨鍗″彛
      */
     @PostMapping("/dqd/service/rs/v1/device/gbCodeExpInfo/query")
-    JSONObject codeByArea(CodeByAreaParam param);
+    JSONObject codeByArea(@RequestBody CodeByAreaParam param);
 
     /**
      * 鎸夊尯鍩熺粺璁′汉鑴告暟鎹洃娴嬫寚鏍囬」
@@ -64,7 +65,7 @@
      * @return 鎸夊尯鍩熺粺璁′汉鑴告暟鎹洃娴嬫寚鏍囬」
      */
     @PostMapping("/dqd/service/rs/v2/data/faceDetect/query")
-    JSONObject faceDetectByArea(FaceDetectParam param);
+    JSONObject faceDetectByArea(@RequestBody FaceDetectParam param);
 
     /**
      * 鎸夊尯鍩熺粺璁¤溅杈嗘暟鎹洃娴嬫寚鏍囬」
@@ -86,7 +87,7 @@
      * @return 鎸夊尯鍩熺粺璁¤溅杈嗘暟鎹洃娴嬫寚鏍囬」
      */
     @PostMapping("/dqd/service/rs/v2/data/passDetect/query")
-    JSONObject carDetectByArea(CarDetectParam param);
+    JSONObject carDetectByArea(@RequestBody CarDetectParam param);
 
     /**
      * 閲囬泦璁惧灞炴�х洃娴嬬粨鏋�
@@ -96,7 +97,7 @@
      * @return 閲囬泦璁惧灞炴�х洃娴嬬粨鏋�
      */
     @PostMapping("/dqd/service/rs/v1/device/cameraExpDetailInfo/query")
-    JSONObject monitorDetail(MonitoringDetailParam param);
+    JSONObject monitorDetail(@RequestBody MonitoringDetailParam param);
 
     /**
      * 鍗″彛灞炴�х洃娴嬬粨鏋�
@@ -106,7 +107,7 @@
      * @return 鍗″彛灞炴�х洃娴嬬粨鏋�
      */
     @PostMapping("/dqd/service/rs/v1/device/crossExpDetailInfo/query")
-    JSONObject crossDetail(CrossDetailParam param);
+    JSONObject crossDetail(@RequestBody CrossDetailParam param);
 
     /**
      * 鎶撴媿鏁版嵁閲忕洃娴嬬粨鏋�
@@ -127,7 +128,7 @@
      * @return 鎶撴媿鏁版嵁閲忕洃娴嬬粨鏋�
      */
     @PostMapping("/dqd/service/rs/v1/data/snapCountDetail/query")
-    JSONObject SnapshotDataMonitor(SnapshotDataMonitorParam param);
+    JSONObject SnapshotDataMonitor(@RequestBody SnapshotDataMonitorParam param);
 
     /**
      * 鎶撴媿鏁版嵁鏃跺欢鐩戞祴缁撴灉
@@ -143,7 +144,7 @@
      * @return 鎶撴媿鏁版嵁鏃跺欢鐩戞祴缁撴灉
      */
     @PostMapping("/dqd/service/rs/v1/data/snapAgingDetail/query")
-    JSONObject SnapshotDelayMonitor(SnapshotDelayMonitorParam param);
+    JSONObject SnapshotDelayMonitor(@RequestBody SnapshotDelayMonitorParam param);
 
     /**
      * 鍥剧墖璁块棶鐩戞祴缁撴灉
@@ -154,7 +155,7 @@
      * @return 鍥剧墖璁块棶鐩戞祴缁撴灉
      */
     @PostMapping("/dqd/service/rs/v1/data/picAccessDetail/query")
-    JSONObject PicAccessMonitor(PicAccessParam param);
+    JSONObject PicAccessMonitor(@RequestBody PicAccessParam param);
 
     /**
      * 灞炴�ц瘑鍒噯纭洃娴嬬粨鏋�
@@ -164,7 +165,7 @@
      * @return 灞炴�ц瘑鍒噯纭洃娴嬬粨鏋�
      */
     @PostMapping("/dqd/service/rs/v1/data/attributeRecognition/query")
-    JSONObject AttrRecognitionMonitor(AttrRecognitionParam param);
+    JSONObject AttrRecognitionMonitor(@RequestBody AttrRecognitionParam param);
 
     /**
      * 鏁版嵁瀹屾暣鎬х洃娴嬬粨鏋�
@@ -178,7 +179,7 @@
      * @return 鏁版嵁瀹屾暣鎬х洃娴嬬粨鏋�
      */
     @PostMapping("/dqd/service/rs/v1/data/attributeIntegrity/query")
-    JSONObject DataIntegrityMonitoring(DataIntegrityMonitoringParam param);
+    JSONObject DataIntegrityMonitoring(@RequestBody DataIntegrityMonitoringParam param);
 
     /**
      * 浜鸿劯璁惧鍏ㄦ鎸囨爣鐩戞祴缁撴灉
@@ -189,7 +190,7 @@
      * @return 浜鸿劯璁惧鍏ㄦ鎸囨爣鐩戞祴缁撴灉
      */
     @PostMapping("/dqd/service/rs/v2/data/faceFullAmount/query")
-    JSONObject FaceDeviceInspection(FaceDeviceInspectionParam param);
+    JSONObject FaceDeviceInspection(@RequestBody FaceDeviceInspectionParam param);
 
     /**
      * 浜鸿劯璁惧鎶芥鎸囨爣鐩戞祴缁撴灉
@@ -200,7 +201,7 @@
      * @return 浜鸿劯璁惧鎶芥鎸囨爣鐩戞祴缁撴灉
      */
     @PostMapping("/dqd/service/rs/v2/data/faceSampleAmount/query")
-    JSONObject FaceDeviceSampling(FaceDeviceSamplingParam param);
+    JSONObject FaceDeviceSampling(@RequestBody FaceDeviceSamplingParam param);
 
     /**
      * 杞﹁締璁惧鍏ㄦ鎸囨爣鐩戞祴缁撴灉
@@ -211,7 +212,7 @@
      * @return 杞﹁締璁惧鍏ㄦ鎸囨爣鐩戞祴缁撴灉
      */
     @PostMapping("/dqd/service/rs/v2/data/vehFullAmount/query")
-    JSONObject VehicleDeviceInspection(VehicleDeviceInspectionParam param);
+    JSONObject VehicleDeviceInspection(@RequestBody VehicleDeviceInspectionParam param);
 
     /**
      * 杞﹁締璁惧鎶芥鎸囨爣鐩戞祴缁撴灉
@@ -222,7 +223,7 @@
      * @return 杞﹁締璁惧鎶芥鎸囨爣鐩戞祴缁撴灉
      */
     @PostMapping("/dqd/service/rs/v2/data/vehSampleAmount/query")
-    JSONObject VehicleDeviceSampling(VehicleDeviceSamplingParam param);
+    JSONObject VehicleDeviceSampling(@RequestBody VehicleDeviceSamplingParam param);
 
     /**
      * 鍏虫敞鐩戞祴璧勬簮鏌ヨ
@@ -231,7 +232,7 @@
      * @return 鍏虫敞鐩戞祴璧勬簮鏌ヨ
      */
     @PostMapping("/dqd/service/rs/v1/alarm/monitorResource/query")
-    JSONObject monitorResource(MonitorResourceParam param);
+    JSONObject monitorResource(@RequestBody MonitorResourceParam param);
 
     /**
      * 鎸囨爣閰嶇疆淇℃伅鏌ヨ
@@ -247,5 +248,5 @@
      * @return 缁勭粐鏍戞煡璇�
      */
     @PostMapping("/dqd/service/rs/v1/orgInfo/standard/query")
-    JSONObject OrganizationTree(OrganizationTreeParam param);
+    JSONObject OrganizationTree(@RequestBody OrganizationTreeParam param);
 }
diff --git a/ycl-server/src/main/java/com/ycl/web/UYClient.java b/ycl-server/src/main/java/com/ycl/web/UYClient.java
index 8757669..55c0f27 100644
--- a/ycl-server/src/main/java/com/ycl/web/UYClient.java
+++ b/ycl-server/src/main/java/com/ycl/web/UYClient.java
@@ -9,6 +9,8 @@
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * @author gonghl
@@ -26,7 +28,7 @@
      * @return 鏌ヨ鎽勫儚鏈烘竻鍗曢泦鍚�
      */
     @GetMapping("/VIID/Cameras")
-    JSONObject cameraList(CameraParam cameraParam);
+    JSONObject cameraList(@RequestParam CameraParam cameraParam);
 
     /**
      * 鐐逛綅鍦ㄧ嚎
@@ -35,7 +37,7 @@
      * @return 鏌ヨ鍦ㄧ嚎缁熻鍒楄〃
      */
     @GetMapping("/openapi/v1/report/online/list")
-    JSONObject onlineList(OnlineParam onlineParam);
+    JSONObject onlineList(@RequestParam OnlineParam onlineParam);
 
     /**
      * 褰曞儚鍙敤
@@ -44,7 +46,7 @@
      * @return 鏌ヨ婊¤冻鏉′欢鐨勫綍鍍忔眹鎬讳俊鎭�
      */
     @PostMapping("/report/recordMetaDSum/list")
-    JSONObject recordMetaDSumList(RecordMetaDSumParam recordMetaDSumParam);
+    JSONObject recordMetaDSumList(@RequestBody RecordMetaDSumParam recordMetaDSumParam);
 
     @GetMapping("/api/v1/app/osdMonitor/list")
     JSONObject osdMonitorList();
diff --git a/ycl-server/src/main/resources/application-dev.yml b/ycl-server/src/main/resources/application-dev.yml
index ff8109b..2ce8bcc 100644
--- a/ycl-server/src/main/resources/application-dev.yml
+++ b/ycl-server/src/main/resources/application-dev.yml
@@ -7,7 +7,7 @@
   # 鐗堟潈骞翠唤
   copyrightYear: 2024
   # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/zgyw/uploadPath锛孡inux閰嶇疆 /home/zgyw/uploadPath锛�
-  profile: D:/zgyw/uploadPath
+  profile: E:/ycl/zgyw/uploadPath
   # 鑾峰彇ip鍦板潃寮�鍏�
   addressEnabled: false
   # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
@@ -17,7 +17,7 @@
 # 寮�鍙戠幆澧冮厤缃�
 server:
   # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
-  port: 8080
+  port: 8085
   servlet:
     # 搴旂敤鐨勮闂矾寰�
     context-path: /
@@ -36,7 +36,7 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://101.35.247.188:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
+    url: jdbc:mysql://101.35.247.188:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8
     username: root
     password: ycl@202466
     type: com.alibaba.druid.pool.DruidDataSource
@@ -126,3 +126,9 @@
       username: admin
       password: ycl@202466
 
+
+# 鎷夊彇鏁版嵁璇锋眰閰嶇疆
+request:
+  retry: 4 # 鏈�澶ч噸璇曟鏁�
+  youYunDomain: 123.123.123.5 # 浼樹簯鍦板潃
+  haiKangDomain: 123.123.123.1 # 娴峰悍鍦板潃
diff --git a/ycl-server/src/main/resources/application-prod.yml b/ycl-server/src/main/resources/application-prod.yml
index b28e93a..d1c5a60 100644
--- a/ycl-server/src/main/resources/application-prod.yml
+++ b/ycl-server/src/main/resources/application-prod.yml
@@ -36,7 +36,7 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://101.35.247.188:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
+    url: jdbc:mysql://101.35.247.188:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8
     username: root
     password: ycl@202466
     type: com.alibaba.druid.pool.DruidDataSource
@@ -120,3 +120,8 @@
   pathMapping: /prod-api
 
 
+# 鎷夊彇鏁版嵁璇锋眰閰嶇疆
+request:
+  retry: 4 # 鏈�澶ч噸璇曟鏁�
+  youYunDomain: 123.123.123.5 # 浼樹簯鍦板潃
+  haiKangDomain: 123.123.123.1 # 娴峰悍鍦板潃
diff --git a/ycl-server/src/main/resources/application.yml b/ycl-server/src/main/resources/application.yml
index a3822bf..7473044 100644
--- a/ycl-server/src/main/resources/application.yml
+++ b/ycl-server/src/main/resources/application.yml
@@ -108,8 +108,3 @@
   # 鍖归厤閾炬帴
   urlPatterns: /system/*,/monitor/*,/tool/*
 
-# 鎷夊彇鏁版嵁璇锋眰閰嶇疆
-request:
-  retry: 4 # 鏈�澶ч噸璇曟鏁�
-  youYunDomain: 123.123.123.5 # 浼樹簯鍦板潃
-  haiKangDomain: 123.123.123.1 # 娴峰悍鍦板潃
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index a9387f9..1fe79c6 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -44,22 +44,41 @@
 
     <select id="distributePage" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
         SELECT
-        wo.*,
-        u.unit_name,
-        p.yw_person_name
+            wo.*,
+            u.unit_name,
+            p.yw_person_name,
+            yp.point_tag,
+            odr.create_time as distributeTime,
+            su.nick_name as realName
         FROM
-        t_work_order wo
-        LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0
-        LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = 0
-        where
-        wo.deleted = 0
-        <if test="query.unitId != null">
-            AND wo.unit_id = #{query.unitId}
-        </if>
-        <if test="query.status != null and query.status != ''">
-            AND wo.status = #{query.status}
-        </if>
+            t_work_order wo
+                LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0
+                LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = 0
+                INNER JOIN t_yw_point yp ON yp.id = wo.point_id AND yp.deleted = 0
+                LEFT JOIN t_work_order_distribute_record odr ON odr.work_order_id = wo.id AND odr.deleted = 0
+                LEFT JOIN sys_user su ON su.user_id = odr.user_id
+        WHERE
+            wo.deleted = 0
+            <if test="query.unitId != null">
+                AND wo.unit_id = #{query.unitId}
+            </if>
+            <if test="query.status != null and query.status != ''">
+                AND wo.status = #{query.status}
+            </if>
         ORDER BY wo.create_time DESC
     </select>
 
+    <select id="handlingWorkOrderList" resultType="com.ycl.platform.domain.vo.YwPointJobVO">
+        SELECT
+             wo.id,
+             wod.create_time,
+             yp.point_tag
+        FROM
+             t_work_order wo
+                INNER JOIN t_yw_point yp ON yp.id = wo.point_id AND yp.deleted = 0
+                INNER JOIN t_work_order_distribute_record wod ON wod.work_order_id = wo.id
+        WHERE
+             wo.status = 'DISTRIBUTED' AND wo.deleted = 0
+    </select>
+
 </mapper>

--
Gitblit v1.8.0