From 7a93f4097430703dc60c4aee0240ed348a0ab1df Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 06 一月 2025 18:12:00 +0800
Subject: [PATCH] 核算重构

---
 ycl-server/src/main/java/com/ycl/task/ContractTask.java                                 |    3 
 ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java     |   23 +++-
 ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRecordMapper.java             |    6 +
 ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java        |    2 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java                |    2 
 ycl-server/src/main/java/com/ycl/task/ContractResultTask.java                           |   25 +++-
 ycl-server/src/main/resources/application-dev.yml                                       |    2 
 ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml                     |   88 +++++++++++------
 ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java             |    2 
 ycl-server/src/main/resources/mapper/zgyw/CalculateRecordMapper.xml                     |   22 ++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java                |    1 
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRecord.java              |    4 
 ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java |   12 +-
 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java  |   64 ++++++------
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java          |    1 
 ycl-common/src/main/java/enumeration/ErrorType.java                                     |    2 
 ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java           |   12 +
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java          |    5 +
 18 files changed, 187 insertions(+), 89 deletions(-)

diff --git a/ycl-common/src/main/java/enumeration/ErrorType.java b/ycl-common/src/main/java/enumeration/ErrorType.java
index 4c4b3f1..51d3f61 100644
--- a/ycl-common/src/main/java/enumeration/ErrorType.java
+++ b/ycl-common/src/main/java/enumeration/ErrorType.java
@@ -27,6 +27,8 @@
     STRIPE_INTERFERENCE("SCREENSTRIP", "鏉$汗骞叉壈","VIDEO"),
     SCREEN_OCCLUSION("SCREENSHADE", "鐢婚潰閬尅","VIDEO"),
     ABNORMAL_CLARITY("SCREENBLUR", "娓呮櫚搴﹀紓甯�","VIDEO"),
+    //鏂板鐨勫浘鍍忓紓甯革紝鍚堝苟鍓嶉潰鎵�鏈夊紓甯哥被鍨�
+    ABNORMAL_PIC("ABNORMALPIC", "鍥惧儚寮傚父","VIDEO"),
 //    ABNORMAL_BRIGHTNESS("SCREENLIGHT", "浜害寮傚父","VIDEO"),
     OSD_ERROR("OSD", "osd寮傚父","VIDEO"),
 //    VIDEO_LOSS("VIDEOMISS", "褰曞儚缂哄け","VIDEO"),
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRecord.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRecord.java
index 06fc99d..5bbd972 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRecord.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRecord.java
@@ -47,5 +47,7 @@
     @TableField("which_month")
     private Integer whichMonth;
 
-
+    @ApiModelProperty("鍙戝竷鐘舵��")
+    @TableField("status")
+    private String status;
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java
index c96a6a5..88650ea 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java
@@ -23,5 +23,10 @@
 
     private Integer unitId;
 
+    private String status;
+
+    private Integer contractId;
+
+    private Integer whichYear;
 }
 
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java
index ee49511..f311d58 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java
@@ -49,6 +49,7 @@
     /** 鏈�鏂颁竴鏉℃牳绠楁爣璇� */
     private Boolean latest;
 
+    private String status;
     public static CalculateRecordVO getVoByEntity(@NonNull CalculateRecord entity, CalculateRecordVO vo) {
         if(vo == null) {
             vo = new CalculateRecordVO();
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java
index 4f6d8e4..2717bf1 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java
@@ -30,6 +30,7 @@
     /** 鍚堝悓 */
     private Integer contractId;
 
+    private Integer whichYear;
     /** 杩愮淮鍗曚綅 */
     private String unitName;
 
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java
index ea5e790..0dbfcf4 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java
@@ -53,6 +53,8 @@
     /** 鏄庣粏 */
     private List<CalculateRecordVO> recordList;
 
+    private Integer whichYear;
+
     public static CalculateReportVO getVoByEntity(@NonNull CalculateReport entity, CalculateReportVO vo) {
         if(vo == null) {
             vo = new CalculateReportVO();
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java b/ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java
index 7c23eea..945bbaf 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java
@@ -1,5 +1,6 @@
 package com.ycl.platform.controller;
 
+import com.ycl.platform.domain.entity.CalculateRecord;
 import com.ycl.platform.domain.form.CalculateReportBackfillForm;
 import com.ycl.platform.domain.query.CalculateReportQuery;
 import com.ycl.platform.service.CalculateReportService;
@@ -41,20 +42,30 @@
         return calculateReportService.backfill(form);
     }
 
-    @GetMapping("/{id}")
+    @GetMapping("/{contractId}/{whichYear}")
     @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
     @PreAuthorize("@ss.hasPermi('system:calculate:report:detail')")
-    public Result detail(@PathVariable("id") Long id) {
-        return calculateReportService.detail(id);
+    public Result detail(@PathVariable("contractId") Integer contractId,@PathVariable("whichYear") Integer whichYear) {
+        CalculateReportQuery query = new CalculateReportQuery();
+        query.setContractId(contractId);
+        query.setWhichYear(whichYear);
+        return calculateReportService.detail(query);
     }
 
-    @PutMapping("/status/{reportId}")
+    @PutMapping("/status/{contractId}/{whichYear}")
     @ApiOperation(value = "淇敼鍙戝竷鐘舵��", notes = "淇敼鍙戝竷鐘舵��")
     @PreAuthorize("@ss.hasPermi('system:calculate:report:status')")
-    public Result updatePublishStatus(@PathVariable("reportId") Long reportId) {
-        return calculateReportService.updatePublishStatus(reportId);
+    public Result updatePublishStatus(@PathVariable("contractId") Integer contractId,@PathVariable("whichYear") Integer whichYear) {
+        return calculateReportService.updatePublishStatus(contractId,whichYear);
     }
 
+    @PutMapping("/status/detail/{id}/{status}")
+    @ApiOperation(value = "淇敼鍙戝竷鐘舵��", notes = "淇敼鍙戝竷鐘舵��")
+    @PreAuthorize("@ss.hasPermi('system:calculate:report:status')")
+    public Result updatePublishStatusById(@PathVariable("id") Integer id,@PathVariable("status") String status) {
+
+        return calculateReportService.updatePublishStatusById(id,status);
+    }
     @PostMapping("/export")
     @ApiOperation(value = "瀵煎嚭", notes = "瀵煎嚭")
     @PreAuthorize("@ss.hasPermi('system:calculate:report:export')")
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRecordMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRecordMapper.java
index 08a00f2..71e2687 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRecordMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRecordMapper.java
@@ -2,6 +2,7 @@
 
 import com.ycl.platform.domain.entity.CalculateRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.platform.domain.form.CalculateReportBackfillForm;
 import com.ycl.platform.domain.vo.CalculateRecordVO;
 import com.ycl.platform.domain.form.CalculateRecordForm;
 
@@ -19,4 +20,9 @@
 @Mapper
 public interface CalculateRecordMapper extends BaseMapper<CalculateRecord> {
 
+    public void updateBatch(List<CalculateReportBackfillForm.RecordForm> list);
+
+    void batchPublish(Integer contractId, Integer whichYear);
+
+    void updatePublishById(Integer id, String status);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java
index 8b5e223..dea68e4 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java
@@ -36,7 +36,7 @@
      * @param id 鏍哥畻ID
      * @return
      */
-    CalculateReportDetailVO getById(@Param("id") Long id);
+    CalculateReportDetailVO getById(@Param("query") CalculateReportQuery query);
 
     /**
      * 瀵煎嚭鏁版嵁
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java b/ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java
index 96d9dd8..8503154 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java
@@ -58,7 +58,7 @@
      * @param id
      * @return
      */
-    Result detail(Long id);
+    Result detail(CalculateReportQuery query);
 
     /**
      * 鍒楄〃
@@ -80,8 +80,14 @@
      * @param reportId
      * @return
      */
-    Result updatePublishStatus(Long reportId);
-
+    Result updatePublishStatus(Integer contractId,Integer whichYear);
+    /**
+     * 淇敼鍙戝竷鐘舵��
+     *
+     * @param reportId
+     * @return
+     */
+    Result updatePublishStatusById(Integer id,String status);
     /**
      * 瀵煎嚭
      * @param response 鍝嶅簲
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java
index 10c8a12..839dde9 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java
@@ -143,9 +143,9 @@
      * @return
      */
     @Override
-    public Result detail(Long id) {
+    public Result detail(CalculateReportQuery query) {
         // 鏄庣粏鍒楄〃
-        CalculateReportDetailVO detail = baseMapper.getById(id);
+        CalculateReportDetailVO detail = baseMapper.getById(query);
         if (Objects.nonNull(detail) && ! CollectionUtils.isEmpty(detail.getRecordList())) {
             if (CalculateReportStatusEnum.NOT_PUBLISH.equals(detail.getStatus())) {
                 detail.getRecordList().get(0).setLatest(Boolean.TRUE);
@@ -172,40 +172,40 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Result backfill(CalculateReportBackfillForm form) {
-        CalculateReport report = baseMapper.selectById(form.getId());
-        if (Objects.isNull(report)) {
-            throw new RuntimeException("璇ユ牳绠楁姤鍛婁笉瀛樺湪");
-        }
-        if (CalculateReportStatusEnum.PUBLISHED.equals(report.getStatus())) {
-            throw new RuntimeException("鏈�鏂颁竴娆℃牳绠楁姤鍛婂凡缁忓彂甯冿紝鏃犳硶淇敼");
-        }
-        CalculateReportBackfillForm.RecordForm latestRecord = form.getRecordList().get(0);
-        CalculateRecord beforeRecord = calculateRecordMapper.selectById(latestRecord.getId());
-        if (Objects.isNull(beforeRecord)) {
-            throw new RuntimeException("鏈�杩戜竴娆℃牳绠楄褰曚笉瀛樺湪");
-        }
-        // 璁$畻寰楀埌鎵f鎬婚锛堝彧绠楁渶杩戜竴鏉★級
-        BigDecimal totalDeduct = report.getDeductMoney().subtract(latestRecord.getDeductMoney()).add(latestRecord.getDeductMoney());
-        report.setDeductMoney(totalDeduct);
-        baseMapper.updateById(report);
-
-        beforeRecord.setDeductMoney(latestRecord.getDeductMoney());
-        calculateRecordMapper.updateById(beforeRecord);
+//        CalculateReport report = baseMapper.selectById(form.getId());
+//        if (Objects.isNull(report)) {
+//            throw new RuntimeException("璇ユ牳绠楁姤鍛婁笉瀛樺湪");
+//        }
+//        if (CalculateReportStatusEnum.PUBLISHED.equals(report.getStatus())) {
+//            throw new RuntimeException("鏈�鏂颁竴娆℃牳绠楁姤鍛婂凡缁忓彂甯冿紝鏃犳硶淇敼");
+//        }
+//        CalculateReportBackfillForm.RecordForm latestRecord = form.getRecordList().get(0);
+//        CalculateRecord beforeRecord = calculateRecordMapper.selectById(latestRecord.getId());
+//        if (Objects.isNull(beforeRecord)) {
+//            throw new RuntimeException("鏈�杩戜竴娆℃牳绠楄褰曚笉瀛樺湪");
+//        }
+//        // 璁$畻寰楀埌鎵f鎬婚锛堝彧绠楁渶杩戜竴鏉★級
+//        BigDecimal totalDeduct = report.getDeductMoney().subtract(latestRecord.getDeductMoney()).add(latestRecord.getDeductMoney());
+//        report.setDeductMoney(totalDeduct);
+//        baseMapper.updateById(report);
+//
+//        beforeRecord.setDeductMoney(latestRecord.getDeductMoney());
+//        calculateRecordMapper.updateById(beforeRecord);
+        List<CalculateReportBackfillForm.RecordForm> recordList = form.getRecordList();
+        if(!CollectionUtils.isEmpty(recordList)) calculateRecordMapper.updateBatch(recordList);
         return Result.ok("鎿嶄綔鎴愬姛");
     }
 
     @Override
-    public Result updatePublishStatus(Long reportId) {
-        CalculateReport report = baseMapper.selectById(reportId);
-        if (Objects.isNull(report)) {
-            throw new RuntimeException("璇ユ牳绠楁姤鍛婁笉瀛樺湪");
-        }
-        if (CalculateReportStatusEnum.NOT_PUBLISH.equals(report.getStatus())) {
-            report.setStatus(CalculateReportStatusEnum.PUBLISHED);
-        } else if (CalculateReportStatusEnum.PUBLISHED.equals(report.getStatus())) {
-            report.setStatus(CalculateReportStatusEnum.NOT_PUBLISH);
-        }
-        baseMapper.updateById(report);
+    public Result updatePublishStatus(Integer contractId,Integer whichYear) {
+
+        calculateRecordMapper.batchPublish(contractId,whichYear);
+        return Result.ok("鎿嶄綔鎴愬姛");
+    }
+
+    @Override
+    public Result updatePublishStatusById(Integer id, String status) {
+        calculateRecordMapper.updatePublishById(id,status);
         return Result.ok("鎿嶄綔鎴愬姛");
     }
 
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 0e0e896..a3d1960 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
@@ -155,6 +155,8 @@
         calculateMoneyRuleService.saveBatch(JSON.parseArray(tContract.getRuleList(), CalculateMoneyRule.class).stream().peek(
                 calculateMoneyRule -> calculateMoneyRule.setContractId(tContract.getId().intValue())
         ).collect(Collectors.toList()));
+
+
         return AjaxResult.success("鎿嶄綔鎴愬姛");
     }
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
index 2236f58..b52a9a4 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
@@ -56,27 +56,27 @@
                     WorkOrder workOrder = new WorkOrder();
                     // 淇″彿缂哄け
                     if (-1 == item.getSigna1()) {
-                        this.genWorkOrder(workOrder, ErrorType.SIGNAL_LOSS, item.getDeviceId());
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
                     }
                     // 鐢婚潰鍋忚壊
                     if (-1 == item.getColor()) {
-                        this.genWorkOrder(workOrder, ErrorType.SCREEN_COLOR_DEVIATION, item.getDeviceId());
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
                     }
                     // 闆姳骞叉壈
                     if (-1 == item.getSnow()) {
-                        this.genWorkOrder(workOrder, ErrorType.SNOW_STORM, item.getDeviceId());
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
                     }
                     // 鏉$汗骞叉壈
                     if (-1 == item.getStripe()) {
-                        this.genWorkOrder(workOrder, ErrorType.STRIPE_INTERFERENCE, item.getDeviceId());
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
                     }
                     // 鐢婚潰閬尅
                     if (-1 == item.getShade()) {
-                        this.genWorkOrder(workOrder, ErrorType.SCREEN_OCCLUSION, item.getDeviceId());
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
                     }
                     // 娓呮櫚搴﹀紓甯�
                     if (-1 == item.getBlur()) {
-                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_CLARITY, item.getDeviceId());
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
                     }
 //            // 浜害寮傚父
 //            if (-1 == item.getLight()) {
diff --git a/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java b/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java
index 339f924..a20c5bd 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractResultTask.java
@@ -1,14 +1,14 @@
 package com.ycl.task;
 
-import com.ycl.platform.domain.entity.ContractResult;
-import com.ycl.platform.domain.entity.ContractResultRecord;
-import com.ycl.platform.domain.entity.ContractScore;
-import com.ycl.platform.domain.entity.TContract;
+import com.ycl.platform.domain.entity.*;
+import com.ycl.platform.mapper.CalculateRecordMapper;
+import com.ycl.platform.service.CalculateRecordService;
 import com.ycl.platform.service.IContractResultService;
 import com.ycl.platform.service.IContractScoreService;
 import com.ycl.platform.service.ITContractService;
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.bean.BeanUtils;
+import enumeration.general.CalculateReportStatusEnum;
 import lombok.Data;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -16,6 +16,8 @@
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -30,7 +32,7 @@
     private final ITContractService contractService;
     private final IContractScoreService contractScoreService;
     private final IContractResultService checkResultService;
-
+    private final CalculateRecordMapper calculateRecordMapper;
     private String startTime;
     private String endTime;
 
@@ -38,7 +40,6 @@
      * 姣忎釜鏈�1鍙锋墽琛岋紝缁熻鑰冩牳缁撴灉
      */
     @Transactional
-    // @PostConstruct //鍚姩鏃舵墽琛屼竴娆�
     public void contractResultTask() {
         // 鏌ヨ鏈夋晥鏈熷唴鐨勫悎鍚�
         List<TContract> list = contractService.selectUsingContract();
@@ -52,6 +53,18 @@
             // 鏂板鑰冩牳缁撴灉璁板綍
             List<ContractResultRecord> contractResultRecord = getContractResultRecord(contractScore, contractResult);
             checkResultService.saveBatchRecord(contractResultRecord);
+            // 鏂板鏍哥畻鏄庣粏璁板綍
+            CalculateRecord calculateRecord = new CalculateRecord();
+            calculateRecord.setScore(contractResult.getScore());
+            calculateRecord.setContractId(Integer.parseInt(tContract.getId()+""));
+            calculateRecord.setCreateTime(new Date());
+            calculateRecord.setUpdateTime(new Date());
+            calculateRecord.setStatus(CalculateReportStatusEnum.NOT_PUBLISH.getValue());
+            Calendar calendar = Calendar.getInstance();
+            calculateRecord.setWhichYear(calendar.get(Calendar.YEAR));
+            calculateRecord.setWhichMonth(calendar.get(Calendar.MONTH)+1);
+            calculateRecordMapper.insert(calculateRecord);
+
         }
     }
 
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 7767e99..a31b5e5 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -120,7 +120,6 @@
 
     //鏈堝簳璁$畻鍦ㄧ嚎鐜囧垎鏁�
     public void calculateOnlineScore() {
-        //TODO:妫�鏌ヨ〃
         log.info("寮�濮嬭绠楀悎鍚岀偣浣嶅湪绾跨巼鍒嗘暟");
         //鏈堝簳闇�瑕佺粺璁″钩鍧囧湪绾跨巼鐒跺悗杩涜绉垎鎵i櫎
         String mouthStart = DateUtils.getMouthStart(new Date());
@@ -261,7 +260,7 @@
                 }
             }
             //鐐逛綅寮傚父鎯呭喌澶勭悊锛堥暅澶村紓甯搞�佹憚鍍忓ご閬尅绛夛級
-            if (ErrorType.SCREEN_OCCLUSION.getValue().equals(errorType) || ErrorType.SIGNAL_LOSS.getValue().equals(errorType) || ErrorType.SCREEN_COLOR_DEVIATION.getValue().equals(errorType) || ErrorType.SNOW_STORM.getValue().equals(errorType) || ErrorType.STRIPE_INTERFERENCE.getValue().equals(errorType) || ErrorType.ABNORMAL_CLARITY.getValue().equals(errorType)) {
+            if (ErrorType.ABNORMAL_PIC.getValue().equals(errorType)) {
                 if (!CollectionUtils.isEmpty(monitorRuleMap)) {
                     siteRuleMap.forEach((contractId, rules) -> {
                         Integer unitId = rules.get(0).getUnitId();
diff --git a/ycl-server/src/main/resources/application-dev.yml b/ycl-server/src/main/resources/application-dev.yml
index 0a4d4be..3d5e6c0 100644
--- a/ycl-server/src/main/resources/application-dev.yml
+++ b/ycl-server/src/main/resources/application-dev.yml
@@ -131,7 +131,7 @@
     mongodb:
 #      uri: mongodb://root1:yunwei%402024@192.168.3.88:27017/zgyw?authSource=admin
        uri: mongodb://localhost:27017/zgyw
-       auto-index-creation: true
+#       auto-index-creation: true
 
 # 鎷夊彇鏁版嵁璇锋眰閰嶇疆
 request:
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CalculateRecordMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CalculateRecordMapper.xml
index b8944a7..55a3ad0 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CalculateRecordMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CalculateRecordMapper.xml
@@ -14,6 +14,28 @@
         <collection property="recordList" column="contract_id" select="selectByContractId" ofType="com.ycl.platform.domain.vo.CalculateMoneyRuleVO"/>
     </resultMap>
 
+    <update id="updateBatch" parameterType="java.util.List">
+        update t_calculate_record
+        <trim prefix="set" suffixOverrides=","><!-- 琛ㄧず鍦ㄧ敓鎴愮殑 SQL 璇彞鍓嶉潰娣诲姞 set 鍏抽敭瀛楋紝骞剁Щ闄ゆ湯灏鹃�楀彿 -->
+            <trim prefix="deduct_money =case" suffix="end,"><!-- 鏋勯�燾ase璇硶 鏈熬鍔犱笂end锛屽鏋滈渶瑕佹洿鏂板涓瓧娈靛鍒惰繖涓猼rim -->
+                <foreach collection="list" item="item">
+                    when id=#{item.id} then #{item.deductMoney}
+                </foreach>
+            </trim>
+        </trim>
+        where id in
+        <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
+            #{item.id,jdbcType=BIGINT}
+        </foreach>
+    </update>
 
+    <update id="batchPublish">
+        update t_calculate_record set status = 'publish'
+        where contract_id = #{contractId} and which_year =#{whichYear}
+    </update>
 
+    <update id="updatePublishById">
+        update t_calculate_record set status = #{status}
+        where id = #{id}
+    </update>
 </mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
index 2f3ec80..9733db3 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
@@ -18,46 +18,73 @@
         <result column="latestDeductMoney" property="latestDeductMoney"/>
     </resultMap>
 
-    <select id="page" resultMap="BaseResultMap">
+<!--    <select id="page" resultMap="BaseResultMap">-->
+<!--        SELECT-->
+<!--            tcr.contract_id,-->
+<!--            tyu.unit_name,-->
+<!--            tc.name,-->
+<!--            tcr.id,-->
+<!--            tcr.status,-->
+<!--            tcr.deduct_money,-->
+<!--            tcr.create_time,-->
+<!--            tcr.update_time,-->
+<!--            tcr.calculate_time,-->
+<!--            tcr.latest_time,-->
+<!--            (SELECT a.deduct_money FROM (SELECT deduct_money,which_year, which_month FROM t_calculate_record WHERE contract_id = tcr.contract_id ORDER BY which_year, which_month DESC limit 1) a) as latestDeductMoney-->
+<!--        FROM-->
+<!--        t_calculate_report tcr-->
+<!--        INNER JOIN t_contract tc ON tcr.contract_id = tc.id-->
+<!--        INNER JOIN t_yw_unit tyu ON tyu.id = tc.unit_id-->
+<!--        <where>-->
+<!--            AND tcr.deleted = 0 AND tc.deleted = 0 AND tyu.deleted = 0-->
+<!--            <if test="query.unitName != null and query.unitName != '' ">-->
+<!--                AND tyu.unit_name like concat('%', #{query.unitName}, '%')-->
+<!--            </if>-->
+<!--            <if test="query.unitId != null">-->
+<!--                AND tyu.id = #{query.unitId}-->
+<!--            </if>-->
+<!--        </where>-->
+<!--    </select>-->
+    <select id="page" resultType="com.ycl.platform.domain.vo.CalculateReportVO">
         SELECT
-            tcr.contract_id,
-            tyu.unit_name,
-            tc.name,
-            tcr.id,
-            tcr.status,
-            tcr.deduct_money,
-            tcr.create_time,
-            tcr.update_time,
-            tcr.calculate_time,
-            tcr.latest_time,
-            (SELECT a.deduct_money FROM (SELECT deduct_money,which_year, which_month FROM t_calculate_record WHERE contract_id = tcr.contract_id ORDER BY which_year, which_month DESC limit 1) a) as latestDeductMoney
+        tcr.id,
+        tcr.contract_id,
+        tyu.unit_name,
+        tc.name as contractName,
+        tcr.which_year,
+        SUM(tcr.deduct_money) AS deductMoney,
+        MAX(tcr.create_time) AS latest_time,
+        (
+        SELECT deduct_money
+        FROM t_calculate_record
+        WHERE contract_id = tcr.contract_id
+        AND which_year = tcr.which_year
+        ORDER BY which_month DESC
+        LIMIT 1
+        ) AS latestDeductMoney
         FROM
-        t_calculate_report tcr
+        t_calculate_record tcr
         INNER JOIN t_contract tc ON tcr.contract_id = tc.id
         INNER JOIN t_yw_unit tyu ON tyu.id = tc.unit_id
         <where>
             AND tcr.deleted = 0 AND tc.deleted = 0 AND tyu.deleted = 0
-            <if test="query.unitName != null and query.unitName != '' ">
-                AND tyu.unit_name like concat('%', #{query.unitName}, '%')
-            </if>
-            <if test="query.unitId != null">
-                AND tyu.id = #{query.unitId}
+            <if test="query.status!=null and query.status !=''">
+                AND tcr.status = #{query.status}
             </if>
         </where>
+        group by contract_id,which_year
     </select>
-
     <resultMap id="DetailResultMap" type="com.ycl.platform.domain.vo.CalculateReportDetailVO">
         <result column="id" property="id"/>
         <result column="create_time" property="createTime"/>
         <result column="unit_name" property="unitName"/>
         <result column="name" property="contractName"/>
         <result column="contract_id" property="contractId"/>
-        <result column="calculate_time" property="calculateTime"/>
-        <result column="deduct_money" property="deductMoney"/>
+        <result column="which_year" property="whichYear"/>
         <result column="status" property="status"/>
         <collection property="ruleList" column="contract_id" ofType="com.ycl.platform.domain.vo.CalculateMoneyRuleVO"
                     select="selectRuleByContractId"/>
-        <collection property="recordList" column="contract_id" ofType="com.ycl.platform.domain.vo.CalculateRecordVO"
+        <collection property="recordList" column="{contractId=contract_id, whichYear=which_year}" ofType="com.ycl.platform.domain.vo.CalculateRecordVO"
                     select="selectRecordByContractId"/>
     </resultMap>
 
@@ -77,14 +104,14 @@
                score,
                deduct_money as deductMoney,
                which_year as whichYear,
-               which_month as whichMonth
+               which_month as whichMonth,
+               status
         FROM
              t_calculate_record
         WHERE
-              contract_id = #{contractId} AND deleted = 0
+              contract_id = #{contractId} AND which_year = #{whichYear} AND deleted = 0
         ORDER BY
-            create_time DESC
-
+            create_time
     </select>
 
     <select id="getById" resultMap="DetailResultMap">
@@ -92,15 +119,14 @@
                tc.name,
                tcr.id,
                tcr.contract_id,
-               tcr.deduct_money,
                tcr.create_time,
                tcr.update_time,
-               tcr.calculate_time,
-               tcr.status
-        FROM t_calculate_report tcr
+               tcr.which_year
+        FROM t_calculate_record tcr
                  INNER JOIN t_contract tc ON tcr.contract_id = tc.id
                  INNER JOIN t_yw_unit tyu ON tyu.id = tc.unit_id
-        WHERE tcr.id = #{id}
+        WHERE tcr.contract_id = #{query.contractId} AND tcr.which_year = #{query.whichYear}
+        limit 1
     </select>
 
     <select id="exportData" resultType="com.ycl.platform.domain.excel.CalculateExport">

--
Gitblit v1.8.0