From 7ca66b60c524598ca87e03eb79f2bedce12639e2 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 23 八月 2024 17:42:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java                      |    6 
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java             |    4 
 ycl-server/src/main/java/com/ycl/task/ContractTask.java                          |  335 +++++++++++++++++++++++++++--------------
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                    |    8 +
 ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java |   12 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java           |    2 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java               |    3 
 ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml                       |    2 
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |    2 
 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java            |    3 
 ycl-common/src/main/java/enumeration/ErrorType.java                              |    1 
 ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java    |   57 +-----
 12 files changed, 261 insertions(+), 174 deletions(-)

diff --git a/ycl-common/src/main/java/enumeration/ErrorType.java b/ycl-common/src/main/java/enumeration/ErrorType.java
index 3b9e043..a1500f6 100644
--- a/ycl-common/src/main/java/enumeration/ErrorType.java
+++ b/ycl-common/src/main/java/enumeration/ErrorType.java
@@ -15,6 +15,7 @@
     DEVICE_OFFLINE("DEVICEOFFLINE", "璁惧绂荤嚎"),
     VIDEO_LOSS("VIDEOMISS", "褰曞儚缂哄け"),
     VIDEO_NONE("NOVIDEO", "鏃犲綍鍍�"),
+    PIC_URLABNORMAL("PICURLABNORMAL","鍥剧墖璁块棶寮傚父"),
     POINT_INFO_ERROR("POINTINFOERRO", "鐐逛綅淇℃伅閿欒"),
     POINT_INFO_MISS("POINTINFOMISS", "鐐逛綅淇℃伅涓嶅叏"),
     SIGNAL_LOSS("SIGNALMISS", "淇″彿缂哄け"),
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java
index a5c872a..11e52d4 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java
@@ -23,19 +23,19 @@
     /**
      * 鍒涘缓鏃堕棿
      */
-    @TableField(value = "create_time")
+    @TableField(value = "create_time",fill = FieldFill.INSERT)
     private Date createTime;
 
     /**
      * 淇敼鏃堕棿
      */
-    @TableField(value = "update_time")
+    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
     private Date updateTime;
 
     /**
      * 閫昏緫鍒犻櫎
      */
-    @TableField(value = "deleted")
+    @TableField(value = "deleted", fill = FieldFill.INSERT)
     private Integer deleted;
 
 }
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 11b5d0e..870eaf4 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
@@ -68,8 +68,8 @@
     private String ywCondition;
 
     @ApiModelProperty("杩愮淮妫�娴嬫儏鍐�/涓�寮犲浘")
-    @TableField("yw_check_condition")
-    private String ywCheckCondition;
+    @TableField("yw_check_result")
+    private String ywCheckResult;
 
     @ApiModelProperty("澶勭悊鏈熼檺")
     @TableField("processing_period")
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java
index 40c03b5..0e5d2aa 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java
@@ -61,4 +61,6 @@
     private Integer unitId;
     //杩濊璺暟銆佷釜鏁�
     private Integer num;
+    //宸ュ崟涓嬪彂鍒板鏍搁�氳繃鐨勬椂闂�
+    private long handleTime;
 }
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 88b0e63..adde7d2 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
@@ -55,8 +55,8 @@
 
     /** 鏁呴殰绫诲瀷 */
     private List<String> errorTypeList;
+    /** 鏁呴殰绫诲瀷 */
     private String errorType;
-
     /** 杩愮淮浜哄憳 */
     private Integer ywPeopleId;
     private String ywPeopleName;
@@ -81,6 +81,7 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date distributeTime;
 
+    private Date auditTime;
     /** 涓嬪彂浜� */
     private String realName;
 
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 bb16fb9..53c5113 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
@@ -13,6 +13,7 @@
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 
@@ -71,5 +72,7 @@
      */
     List<DeviceInfoVO> hasErrorWorkOrderList();
 
+    List<WorkOrderVO> selectPassOrder(@Param("startTime") LocalDateTime now, @Param("endTime")LocalDateTime thirtyDaysAgo, @Param("status") String status, @Param("auditStatus") String auditStatus);
+
     int addMany(@Param("workOrderList") List<WorkOrder> workOrderList);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
index 0e45a4b..1f80460 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
@@ -1,14 +1,11 @@
 package com.ycl.platform.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.platform.domain.dto.ReportImportDTO;
 import com.ycl.platform.domain.entity.Report;
 import com.ycl.platform.domain.entity.YwPeople;
-import com.ycl.platform.domain.entity.YwPoint;
-import com.ycl.platform.domain.entity.YwUnit;
 import com.ycl.platform.domain.form.ReportAuditingForm;
 import com.ycl.platform.domain.form.ReportForm;
 import com.ycl.platform.domain.query.ReportQuery;
@@ -22,18 +19,17 @@
 import com.ycl.system.page.PageUtil;
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.SecurityUtils;
+import com.ycl.utils.html.EscapeUtil;
 import com.ycl.utils.poi.ExcelUtil;
 import com.ycl.utils.uuid.IdUtils;
 import enumeration.general.ErrorTypeEnum;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
-import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -222,49 +218,16 @@
         return Result.ok().data(vos);
     }
 
+    @Override
     public List<ReportVO> export(ReportQuery query) {
-
-        if (StringUtils.isNotBlank(query.getPointId())) {
-            LambdaQueryWrapper<YwPoint> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.like(YwPoint::getPointName, query.getPointId());
-            query.setPointIdList(ywpointMapper.selectList(queryWrapper).stream().map(YwPoint::getId).collect(Collectors.toList()));
-            if(CollectionUtils.isEmpty(query.getPointIdList())) {
-                return new ArrayList<>();
-            }
-        }
-        if (StringUtils.isNotBlank(query.getPeopleId())) {
-            LambdaQueryWrapper<YwPeople> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.like(YwPeople::getYwPersonName, query.getPeopleId());
-            query.setPeopleIdList(peopleMapper.selectList(queryWrapper).stream().map(YwPeople::getId).collect(Collectors.toList()));
-            if(CollectionUtils.isEmpty(query.getPeopleIdList())) {
-                return new ArrayList<>();
-            }
-        }
-
-        IPage<Report> page = new LambdaQueryChainWrapper<>(baseMapper)
-                .eq(StringUtils.isNotBlank(query.getReportType()), Report::getReportType, query.getReportType())
-//                .le(Objects.nonNull(query.getBeginCreateTime()), Report::getBeginCreateTime, query.getBeginCreateTime())
-//                .ge(Objects.nonNull(query.getEndCreateTime()), Report::getEndCreateTime, query.getEndCreateTime())
-//                 .in(!CollectionUtils.isEmpty(query.getPointIdList()), Report::getPointId, query.getPointIdList())
-                .in(!CollectionUtils.isEmpty(query.getPeopleIdList()), Report::getPeopleId, query.getPeopleIdList())
-                .orderByDesc(Report::getCreateTime)
-                .page(PageUtil.getPage(query, Report.class));
-
-        List<ReportVO> vos = page.getRecords().stream()
-                .map(
-                        entity -> {
-                            ReportVO vo = ReportVO.getVoByEntity(entity, null);
-                            YwUnit unit = unitMapper.selectById(vo.getUnitId());
-                            vo.setUnitName(unit.getUnitName());
-                            YwPeople ywPeople = peopleMapper.selectById(vo.getPeopleId());
-                            vo.setPeopleName(ywPeople.getYwPersonName());
-                            // YwPoint ywPoint = ywpointMapper.selectById(vo.getPointId());
-                            // vo.setPointName(ywPoint.getPointName());
-                            return vo;
-                        }
-                )
-                .collect(Collectors.toList());
-        return vos;
+        IPage<ReportVO> page = PageUtil.getPage(query, ReportVO.class);
+        page.setSize(-1);
+        baseMapper.page(page, query);
+        page.getRecords().forEach(item -> {
+            item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType()));
+            item.setReportContent(EscapeUtil.clean(item.getReportContent()));
+        });
+        return page.getRecords();
     }
 
 
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 61c7f20..7f6b6f0 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
@@ -84,16 +84,16 @@
         setTemplateRule(list,null,"璁惧骞冲潎鍦ㄧ嚎鐜�","90%鈮よ澶囧钩鍧囧湪绾跨巼锛�95%",94D,90D,RuleDeductCategoryEnum.DEDUCT_POINTS,10.00);
         setTemplateRule(list,null,"璁惧骞冲潎鍦ㄧ嚎鐜�","锛�90%",89D,null,RuleDeductCategoryEnum.DEDUCT_POINTS,20.00);
 
-        setTemplateRule(list,2,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","鏃堕挓鍚屾",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1);
-        setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","OSD鏍囪瘑",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1);
-        setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","涓�鏈轰竴妗�",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1);
+        setTemplateRule(list,2,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","鏃堕挓鍚屾",24D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1);
+        setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","OSD鏍囪瘑",24D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1);
+        setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","涓�鏈轰竴妗�",24D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1);
 
         setTemplateRule(list,3,"瀛樺偍鏁呴殰","鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍�,椤诲湪24灏忔椂鎺掗櫎鏁呴殰,鍗曟鏁呴殰鍦�24灏忔椂浠ュ唴",24D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5);
-        setTemplateRule(list,null,"瀛樺偍鏁呴殰","鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍�,椤诲湪24灏忔椂鎺掗櫎鏁呴殰,鍗曟鏁呴殰鍦�48灏忔椂浠ュ唴",null,24D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0);
+        setTemplateRule(list,null,"瀛樺偍鏁呴殰","鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍�,椤诲湪24灏忔椂鎺掗櫎鏁呴殰,鍗曟鏁呴殰鍦�48灏忔椂浠ュ唴",48D,25D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0);
         setTemplateRule(list,null,"瀛樺偍鏁呴殰","鍥犺棰戞垨鑰呭浘鐗囦涪澶卞鑷撮噸瑕佹浜嬩欢涓嶈兘鍥炴斁鎴栨煡鐪�",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,2.0);
 
-        setTemplateRule(list,4,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�","闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�,24灏忔椂鍚庢湭淇鐨�",null,24D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5);
-        setTemplateRule(list,null,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�","闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�,48灏忔椂鍚庢湭淇鐨�",null,48D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0);
+        setTemplateRule(list,4,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�","闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�,24灏忔椂鍚庢湭淇鐨�",48D,25D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5);
+        setTemplateRule(list,null,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�","闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�,48灏忔椂鍚庢湭淇鐨�",null,49D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0);
 
         setTemplateRule(list,5,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","姣忚矾瑙嗛绱涓㈠け10鍒嗛挓锛堝惈锛変互鍐�",10D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.2);
         setTemplateRule(list,null,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","涓㈠け10-60 鍒嗛挓锛堝惈锛�",60D,9D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5);
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 8331f28..fc7760c 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
@@ -679,6 +679,6 @@
     public void updateImgById(Integer workOrderId, String imgPath) {
         new LambdaUpdateChainWrapper<>(baseMapper)
                 .eq(WorkOrder::getId, workOrderId)
-                .set(WorkOrder::getYwCheckCondition, imgPath);
+                .set(WorkOrder::getYwCheckResult, imgPath);
     }
 }
diff --git a/ycl-server/src/main/java/com/ycl/task/ContractTask.java b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
index ac7cb70..aa9b899 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -2,6 +2,7 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.mongodb.client.result.DeleteResult;
 import com.ycl.platform.domain.entity.*;
 import com.ycl.platform.domain.result.HK.PicAccessResult;
@@ -11,14 +12,18 @@
 import com.ycl.platform.domain.vo.CalculateRuleVO;
 import com.ycl.platform.domain.vo.ContractVO;
 import com.ycl.platform.domain.vo.ReportVO;
+import com.ycl.platform.domain.vo.WorkOrderVO;
 import com.ycl.platform.mapper.*;
 import com.ycl.platform.service.IContractScoreService;
 import com.ycl.utils.DateUtils;
 import constant.ApiConstants;
 import constant.RedisConstant;
 import enumeration.ContractRule;
+import enumeration.ErrorType;
 import enumeration.general.AuditingStatus;
+import enumeration.general.ErrorTypeEnum;
 import enumeration.general.RuleDeductCategoryEnum;
+import enumeration.general.WorkOrderStatusEnum;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -31,6 +36,8 @@
 import javax.management.monitor.Monitor;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -44,10 +51,6 @@
     @Autowired
     private MongoTemplate mongoTemplate;
     @Autowired
-    private RedisTemplate redisTemplate;
-    @Autowired
-    private TMonitorMapper monitorMapper;
-    @Autowired
     private TContractMapper contractMapper;
     @Autowired
     private YwPointMapper ywPointMapper;
@@ -57,6 +60,8 @@
     private ContractRuleRecordMapper recordMapper;
     @Autowired
     private IContractScoreService contractScoreService;
+    @Autowired
+    private WorkOrderMapper workOrderMapper;
 
     private static final Integer Online = 1;
     private static final Integer Offline = -1;
@@ -172,21 +177,7 @@
                     if (checkRange(min, max, siteOnline.multiply(new BigDecimal(100)))) {
                         //闇�瑕佹墸闄ょ殑鍒嗘暟
                         Double deductScore = ruleVO.getCalcFraction();
-                        ContractScore contractScore = new ContractScore();
-                        contractScore.setContractId(Long.parseLong(contractId + ""));
-                        contractScore.setAuditingStatus(AuditingStatus.PASS);
-                        contractScore.setAuditingTime(new Date());
-                        contractScore.setAuditingUser(Remark);
-                        contractScore.setUnitId(Long.parseLong(unitId + ""));
-                        contractScore.setRuleId(Long.parseLong(ruleVO.getId() + ""));
-                        contractScore.setRuleIds("0," + ruleVO.getId());
-                        contractScore.setNum(siteOnline + "");
-                        contractScore.setDeductCategory(ruleVO.getDeductCategory().getDesc());
-                        contractScore.setScore(new BigDecimal(deductScore));
-                        contractScore.setRuleName(ruleVO.getRuleName() + "/" + ruleVO.getRuleCondition());
-                        contractScore.setCreateTime(new Date());
-                        contractScore.setUpdateTime(new Date());
-                        contractScore.setRemark(Remark);
+                        ContractScore contractScore = getContractScore(ruleVO, deductScore, siteOnline + "", Remark);
                         contractScoreList.add(contractScore);
                     }
                 }
@@ -197,19 +188,6 @@
         log.info("缁撴潫璁$畻鍚堝悓鐐逛綅鍦ㄧ嚎鐜囧垎鏁�");
     }
 
-    private boolean checkRange(Double min, Double max, BigDecimal siteOnline) {
-        if (siteOnline == null) {
-            return false;
-        }
-        if (max != null && siteOnline.compareTo(new BigDecimal(max)) > 0) {
-            return false;
-        }
-        if (min != null && siteOnline.compareTo(new BigDecimal(min)) < 0) {
-            return false;
-        }
-        return true;
-    }
-
     /**
      * 妫�娴嬪伐鍗曡〃 杩涜鍚堝悓绉垎鎵i櫎
      * 鏌ュ嚭宸ュ崟闇�瑕佹墸鍒嗙殑鎵�鏈夎鍒�
@@ -218,6 +196,10 @@
      * 鎻掑叆鍚堝悓绉垎琛紝淇敼宸ュ崟鐘舵�佷负宸叉墸鍒�
      */
     public void workOrderDeduct() {
+        log.info("寮�濮嬫壂鎻忓伐鍗曟墸鍒�");
+        //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
+        List<ContractScore> contractScoreList = new ArrayList<>();
+        List<String> workOrderList = new ArrayList<>();
         //鏌ヨ鐢熸晥鍚堝悓瀵瑰簲鎵�鏈夌殑瑙勫垯
         List<CalculateRuleVO> calculateRules = contractMapper.getCalculateRule(new Date());
         Map<String, Map<Integer, List<CalculateRuleVO>>> ruleMap = calculateRules.stream()
@@ -233,8 +215,112 @@
         Map<Integer, List<CalculateRuleVO>> storeRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Store.getName());
         //鐐逛綅寮傚父鎯呭喌澶勭悊 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map
         Map<Integer, List<CalculateRuleVO>> siteRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Site.getName());
+        //鏌ヨ鎶ュ鍒楄〃
+        List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate());
+        //鏌ヨ30澶╁唴鎵�鏈夋湭鎵e垎銆佸鏍搁�氳繃鐨勫伐鍗�
+        // 鑾峰彇褰撳墠鏃ユ湡
+        LocalDateTime endTime = LocalDateTime.now();
+        // 璁$畻30澶╁墠鐨勬棩鏈�
+        LocalDateTime startTime = endTime.minusDays(30);
+        List<WorkOrderVO> workOrders = workOrderMapper.selectPassOrder(startTime, endTime, WorkOrderStatusEnum.AUDITING_SUCCESS.getValue(), "瀹℃牳閫氳繃");
+        for (WorkOrderVO workOrder : workOrders) {
+            //妫�娴嬫槸鍚︽姤澶囪繃
+            if (!CollectionUtils.isEmpty(reportNumbers)) {
+                if(reportNumbers.contains(workOrder.getSerialNumber())) continue;
+            }
+            String errorType = workOrder.getErrorType();
+            //瀛樺偍鏁呴殰 褰曞儚鎴栧浘鐗囪闂紓甯�
+            if (ErrorType.VIDEO_NONE.getValue().equals(errorType) || ErrorType.PIC_URLABNORMAL.getValue().equals(errorType)) {
+                if (!CollectionUtils.isEmpty(storeRuleMap)) {
+                    storeRuleMap.forEach((contractId, rules) -> {
+                        Integer unitId = rules.get(0).getUnitId();
+                        //鎵惧埌瀵瑰簲鐨勮鍒�
+                        if (workOrder.getUnitId().equals(unitId)) {
+                            //宸ュ崟涓嬪彂鏃堕棿
+                            Date createTime = workOrder.getDistributeTime();
+                            Date auditTime = workOrder.getAuditTime();
+                            double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60);
+                            //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯
+                            for (CalculateRuleVO rule : rules) {
+                                if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) {
+                                    double deductScore = rule.getCalcFraction() * Math.ceil(diffTime);
+                                    ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�");
+                                    contractScoreList.add(contractScore);
+                                    workOrderList.add(workOrder.getWorkOrderNo());
+                                }
+                            }
+                        }
+                    });
+                }
+            }
+            //鍓嶇鎰熺煡婧愭不鐞嗗伐浣滐紙鏃堕挓鍚屾瑙勫垯銆丱SD瑙勫垯銆佷竴鏈轰竴妗h鍒欙級
+            if (ErrorType.MONITOR_UNQUALIFY.getValue().equals(errorType) || ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType)) {
+                if (!CollectionUtils.isEmpty(monitorRuleMap)) {
+                    monitorRuleMap.forEach((contractId, rules) -> {
+                        Integer unitId = rules.get(0).getUnitId();
+                        //鎵惧埌瀵瑰簲鐨勮鍒�
+                        if (workOrder.getUnitId().equals(unitId)) {
+                            //宸ュ崟涓嬪彂鏃堕棿
+                            Date createTime = workOrder.getDistributeTime();
+                            Date auditTime = workOrder.getAuditTime();
+                            double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60);
+                            //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯
+                            for (CalculateRuleVO rule : rules) {
+                                if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) {
+                                    double deductScore = rule.getCalcFraction();
+                                    ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�");
+                                    contractScoreList.add(contractScore);
+                                    workOrderList.add(workOrder.getWorkOrderNo());
+                                }
+                            }
+                        }
+                    });
+                }
+            }
+            //鐐逛綅寮傚父鎯呭喌澶勭悊锛堥暅澶村紓甯搞�佹憚鍍忓ご閬尅绛夛級
+            if (ErrorType.SCREEN_COLOR_DEVIATION.getValue().equals(errorType) || ErrorType.SNOW_STORM.getValue().equals(errorType) || ErrorType.STRIPE_INTERFERENCE.getValue().equals(errorType) || ErrorType.SCREEN_OCCLUSION.getValue().equals(errorType) || ErrorType.ABNORMAL_CLARITY.getValue().equals(errorType) || ErrorType.ABNORMAL_BRIGHTNESS.getValue().equals(errorType)) {
+                if (!CollectionUtils.isEmpty(monitorRuleMap)) {
+                    siteRuleMap.forEach((contractId, rules) -> {
+                        Integer unitId = rules.get(0).getUnitId();
+                        //璁惧鏄惁鏄鍏徃杩愮淮
+                        if (workOrder.getUnitId().equals(unitId)) {
+                            //宸ュ崟涓嬪彂鏃堕棿
+                            Date createTime = workOrder.getDistributeTime();
+                            Date auditTime = workOrder.getAuditTime();
+                            double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60);
+                            //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯
+                            for (CalculateRuleVO rule : rules) {
+                                if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) {
+                                    double deductScore = 0d;
+                                    if (ContractRule.CONTRACT_RULE_Store_48H.getName().equals(rule.getRuleCondition())) {
+                                        //璁$畻瓒呮椂澶╂暟
+                                        int day = (int) ((diffTime - 48) / 24 + 1);
+                                        deductScore = rule.getCalcFraction() * (day);
+                                    } else {
+                                        deductScore = rule.getCalcFraction();
+                                    }
+                                    ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�");
+                                    contractScoreList.add(contractScore);
+                                    workOrderList.add(workOrder.getWorkOrderNo());
+                                }
+                            }
 
+                        }
+                    });
+                }
+            }
+        }
+        contractScoreService.saveBatch(contractScoreList);
+        if (!CollectionUtils.isEmpty(workOrderList)) {
+            //淇敼宸ュ崟鎵e垎鐘舵�佷负宸叉墸鍒�
+            UpdateWrapper<WorkOrder> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.in("work_order_no", workOrderList);
+            updateWrapper.set("deduct", 1);
+            workOrderMapper.update(null, updateWrapper);
+        }
+        log.info("缁撴潫鎵ц宸ュ崟鎵e垎");
     }
+
 
     /**
      * 涓嶅畾鏈熸鏌ユ暟鎹� 鎵i櫎绉垎
@@ -249,7 +335,8 @@
             log.info("寮�濮嬫娊鏌ュ浘鐗囧畬鏁寸姸鎬�");
             //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
             List<ContractScore> contractScoreList = new ArrayList<>();
-
+            //鏌ヨ鎶ュ鍒楄〃
+            List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate());
             Date date = DateUtils.getDay(2024, 7, 13);
             //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map
             Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream()
@@ -269,45 +356,37 @@
                             Collectors.mapping(
                                     YwPoint::getSerialNumber,
                                     Collectors.toList())));
-            contractMap.forEach((contractId, ruleList) -> {
-                boolean deduct = false;
-                String serialNumber = null;
-                //姝よ鍒欏搴旂殑unitId鍧囩浉绛�
-                CalculateRuleVO ruleVO = ruleList.get(0);
-                Integer unitId = ruleVO.getUnitId();
-                List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + ""));
-                for (PicAccessResult picAccessResult : picAccessResults) {
-                    //鍒ゆ柇鏄惁鏄鍏徃杩愮淮
-                    if (monitorList.contains(picAccessResult.getExternalIndexCode())) {
-                        //瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹噺锛岄渶瑕佹墸鍑�
-                        if (picAccessResult.getBigDisableCount() > 0) {
-                            deduct = true;
-                            serialNumber = picAccessResult.getExternalIndexCode();
-                            break;
+            if (!CollectionUtils.isEmpty(contractMap)) {
+                contractMap.forEach((contractId, ruleList) -> {
+                    boolean deduct = false;
+                    String serialNumber = null;
+                    //姝よ鍒欏搴旂殑unitId鍧囩浉绛�
+                    CalculateRuleVO ruleVO = ruleList.get(0);
+                    Integer unitId = ruleVO.getUnitId();
+                    List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + ""));
+                    for (PicAccessResult picAccessResult : picAccessResults) {
+                        //鍒ゆ柇鏄惁鎶ュ杩�
+                        if (!CollectionUtils.isEmpty(reportNumbers)) {
+                            if(reportNumbers.contains(picAccessResult.getExternalIndexCode())) continue;
+                        }
+                        //鍒ゆ柇鏄惁鏄鍏徃杩愮淮
+                        if (monitorList.contains(picAccessResult.getExternalIndexCode())) {
+                            //瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹噺锛岄渶瑕佹墸鍑�
+                            if (picAccessResult.getBigDisableCount() > 0) {
+                                deduct = true;
+                                serialNumber = picAccessResult.getExternalIndexCode();
+                                break;
+                            }
                         }
                     }
-                }
-                if (deduct) {
-                    //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
-                    Double deductScore = ruleVO.getCalcFraction();
-                    ContractScore contractScore = new ContractScore();
-                    contractScore.setContractId(Long.parseLong(contractId + ""));
-                    contractScore.setAuditingStatus(AuditingStatus.PASS);
-                    contractScore.setAuditingTime(new Date());
-                    contractScore.setAuditingUser(Remark);
-                    contractScore.setUnitId(Long.parseLong(ruleVO.getUnitId() + ""));
-                    contractScore.setRuleId(Long.parseLong(ruleVO.getId() + ""));
-                    contractScore.setRuleIds("0," + ruleVO.getId());
-                    contractScore.setNum(1 + "");
-                    contractScore.setDeductCategory(ruleVO.getDeductCategory().getDesc());
-                    contractScore.setScore(new BigDecimal(deductScore));
-                    contractScore.setRuleName(ruleVO.getRuleName() + "/" + ruleVO.getRuleCondition());
-                    contractScore.setCreateTime(new Date());
-                    contractScore.setUpdateTime(new Date());
-                    contractScore.setRemark(Remark + "鍥芥爣鐮佷负:" + serialNumber + "鏃堕棿锛�" + new Date() + "瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹�");
-                    contractScoreList.add(contractScore);
-                }
-            });
+                    if (deduct) {
+                        //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
+                        Double deductScore = ruleVO.getCalcFraction();
+                        ContractScore contractScore = getContractScore(ruleVO, deductScore, "1", Remark + "鍥芥爣鐮佷负:" + serialNumber + "鏃堕棿锛�" + new Date() + "瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹�");
+                        contractScoreList.add(contractScore);
+                    }
+                });
+            }
             contractScoreService.saveBatch(contractScoreList);
             log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��");
         }
@@ -327,7 +406,8 @@
             log.info("寮�濮嬫娊鏌ュ綍鍍忓畬鏁寸姸鎬�");
             //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚�
             List<ContractScore> contractScoreList = new ArrayList<>();
-
+            //鏌ヨ鎶ュ鍒楄〃
+            List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate());
             Date date = DateUtils.getDay(2024, 7, 13);
             //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map
             Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream()
@@ -347,54 +427,83 @@
                             Collectors.mapping(
                                     YwPoint::getSerialNumber,
                                     Collectors.toList())));
-            contractMap.forEach((contractId, ruleList) -> {
-                //姝よ鍒欏搴旂殑unitId鍧囩浉绛�
-                CalculateRuleVO ruleVO = ruleList.get(0);
-                Integer unitId = ruleVO.getUnitId();
-                List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + ""));
-                for (RecordMetaDSumResult result : recordMetaDSumResults) {
-                    //鍒ゆ柇鏄惁鏄鍏徃杩愮淮
-                    if (monitorList.contains(result.getDeviceId())) {
-                        //褰曞儚鐘舵�佷笉瀹屾暣
-                        if (!Objects.equals(result.getRecordStatus(), ApiConstants.UY_RecordStatus_Integrity)) {
-                            for (CalculateRuleVO calculateRuleVO : ruleList) {
-                                Double max = calculateRuleVO.getMax();
-                                Double min = calculateRuleVO.getMin();
-                                //鍒ゆ柇鑼冨洿鍦ㄥ摢涓尯闂�
-                                if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration()))) {
-                                    if(calculateRuleVO.getNum() == null){
-                                        calculateRuleVO.setNum(1);
-                                    }else {
-                                        calculateRuleVO.setNum(calculateRuleVO.getNum()+1);
+            if (!CollectionUtils.isEmpty(contractMap)) {
+                contractMap.forEach((contractId, ruleList) -> {
+                    //姝よ鍒欏搴旂殑unitId鍧囩浉绛�
+                    CalculateRuleVO ruleVO = ruleList.get(0);
+                    Integer unitId = ruleVO.getUnitId();
+                    List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + ""));
+                    for (RecordMetaDSumResult result : recordMetaDSumResults) {
+                        //鍒ゆ柇鏄惁鎶ュ杩�
+                        if (!CollectionUtils.isEmpty(reportNumbers)) {
+                            if(reportNumbers.contains(result.getDeviceId())) continue;
+                        }
+                        //鍒ゆ柇鏄惁鏄鍏徃杩愮淮
+                        if (monitorList.contains(result.getDeviceId())) {
+                            //褰曞儚鐘舵�佷笉瀹屾暣
+                            if (!Objects.equals(result.getRecordStatus(), ApiConstants.UY_RecordStatus_Integrity)) {
+                                for (CalculateRuleVO calculateRuleVO : ruleList) {
+                                    Double max = calculateRuleVO.getMax();
+                                    Double min = calculateRuleVO.getMin();
+                                    //鍒ゆ柇鑼冨洿鍦ㄥ摢涓尯闂�
+                                    if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration()))) {
+                                        if (calculateRuleVO.getNum() == null) {
+                                            calculateRuleVO.setNum(1);
+                                        } else {
+                                            calculateRuleVO.setNum(calculateRuleVO.getNum() + 1);
+                                        }
                                     }
                                 }
                             }
                         }
                     }
-                }
-                for (CalculateRuleVO calculateRuleVO : ruleList) {
-                    //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
-                    double deductScore = calculateRuleVO.getCalcFraction()*calculateRuleVO.getNum();
-                    ContractScore contractScore = new ContractScore();
-                    contractScore.setContractId(Long.parseLong(contractId + ""));
-                    contractScore.setAuditingStatus(AuditingStatus.PASS);
-                    contractScore.setAuditingTime(new Date());
-                    contractScore.setAuditingUser(Remark);
-                    contractScore.setUnitId(Long.parseLong(calculateRuleVO.getUnitId() + ""));
-                    contractScore.setRuleId(Long.parseLong(calculateRuleVO.getId() + ""));
-                    contractScore.setRuleIds("0," + calculateRuleVO.getId());
-                    contractScore.setNum(calculateRuleVO.getNum() + "");
-                    contractScore.setDeductCategory(calculateRuleVO.getDeductCategory().getDesc());
-                    contractScore.setScore(new BigDecimal(deductScore));
-                    contractScore.setRuleName(calculateRuleVO.getRuleName() + "/" + calculateRuleVO.getRuleCondition());
-                    contractScore.setCreateTime(new Date());
-                    contractScore.setUpdateTime(new Date());
-                    contractScore.setRemark(Remark+calculateRuleVO.getNum()+"璺澶囪繚鍙嶈鍒�");
-                    contractScoreList.add(contractScore);
-                }
-            });
+                    for (CalculateRuleVO calculateRuleVO : ruleList) {
+                        if (calculateRuleVO.getNum() > 0) {
+                            //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥�
+                            double deductScore = calculateRuleVO.getCalcFraction() * calculateRuleVO.getNum();
+                            ContractScore contractScore = getContractScore(calculateRuleVO, deductScore, calculateRuleVO.getNum() + "", Remark + calculateRuleVO.getNum() + "璺澶囪繚鍙嶈鍒�");
+                            contractScoreList.add(contractScore);
+                        }
+                    }
+                });
+            }
             contractScoreService.saveBatch(contractScoreList);
-            log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��");
+            log.info("缁撴潫鎶芥煡褰曞儚瀹屾暣鐘舵��");
         }
     }
+
+    private boolean checkRange(Double min, Double max, BigDecimal index) {
+        if (index == null) {
+            return false;
+        }
+        if (max == null && min == null) {
+            return false;
+        }
+        if (max != null && index.setScale(0, RoundingMode.DOWN).compareTo(new BigDecimal(max)) > 0) {
+            return false;
+        }
+        if (min != null && index.setScale(0, RoundingMode.UP).compareTo(new BigDecimal(min)) < 0) {
+            return false;
+        }
+        return true;
+    }
+
+    private ContractScore getContractScore(CalculateRuleVO rule, double deductScore, String num, String remark) {
+        ContractScore contractScore = new ContractScore();
+        contractScore.setContractId(Long.parseLong(rule.getContractId() + ""));
+        contractScore.setAuditingStatus(AuditingStatus.PASS);
+        contractScore.setAuditingTime(new Date());
+        contractScore.setAuditingUser(Remark);
+        contractScore.setUnitId(Long.parseLong(rule.getUnitId() + ""));
+        contractScore.setRuleId(Long.parseLong(rule.getId() + ""));
+        contractScore.setRuleIds("0," + rule.getId());
+        contractScore.setNum(num);
+        contractScore.setDeductCategory(rule.getDeductCategory().getDesc());
+        contractScore.setScore(new BigDecimal(deductScore));
+        contractScore.setRuleName(rule.getRuleName() + "/" + rule.getRuleCondition());
+        contractScore.setCreateTime(new Date());
+        contractScore.setUpdateTime(new Date());
+        contractScore.setRemark(remark);
+        return contractScore;
+    }
 }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
index c97ca6c..3b06197 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
@@ -39,7 +39,7 @@
             AND r.status = #{query.status}
         </if>
         <if test="query.keyword != null and query.keyword != ''">
-            AND (pt.point_name like concat('%', #{query.pointId}, '%') OR p.yw_person_name like concat('%', #{query.peopleId}, '%'))
+            AND (pt.point_name like concat('%', #{query.keyword}, '%') OR p.yw_person_name like concat('%', #{query.keyword}, '%'))
         </if>
         ORDER BY r.update_time DESC
     </select>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index c51e86a..5f18c6c 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -205,4 +205,12 @@
     </foreach>
     </insert>
 
+    <select id="selectPassOrder" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
+        SELECT wo.id,wo.work_order_no,wo.unit_id,woet.error_name as errorType,woet.distribute_time,woar.create_time as auditTime
+        FROM t_work_order wo
+        LEFT JOIN t_work_order_error_type woet ON woet.work_order_no = wo.work_order_no
+        LEFT JOIN t_work_order_auditing_record woar ON woar.work_order_id = wo.id
+        WHERE wo.deleted = 0 AND wo.status = #{status}  AND woar.result = #{auditStatus}
+          AND wo.deduct = 0 AND woar.create_time between #{startTime} and #{endTime}
+    </select>
 </mapper>

--
Gitblit v1.8.0