From d8aecb329d3e1410346261be68caf2c44107a869 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 23 七月 2024 11:56:17 +0800
Subject: [PATCH] 合同分页重构、报备审核不使用修改接口

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java |   24 ++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportAuditingForm.java      |   47 +++++++++
 ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java            |   10 +
 ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java         |   10 +
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ContractVO.java                |   54 ++++++++++
 ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java    |   25 +++++
 ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml                    |   24 ++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java                |    3 
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java          |   24 ++++
 ycl-server/src/main/java/com/ycl/platform/service/ReportService.java             |   15 +++
 ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java                          |    2 
 ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java       |   15 +++
 ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java    |    5 
 ycl-common/src/main/java/enumeration/ContractStatus.java                         |   18 +++
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java                  |    2 
 15 files changed, 269 insertions(+), 9 deletions(-)

diff --git a/ycl-common/src/main/java/enumeration/ContractStatus.java b/ycl-common/src/main/java/enumeration/ContractStatus.java
new file mode 100644
index 0000000..e7701a8
--- /dev/null
+++ b/ycl-common/src/main/java/enumeration/ContractStatus.java
@@ -0,0 +1,18 @@
+package enumeration;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/23 9:44
+ */
+public enum ContractStatus {
+
+    /** 鏈夋晥 */
+    ACTIVE,
+
+    /** 鏃犳晥 */
+    NOT_START,
+
+    /** 宸插け鏁� */
+    FINISHED
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java
index 8824fd9..4bba239 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java
@@ -1,6 +1,7 @@
 package com.ycl.platform.base;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import enumeration.ContractStatus;
 import lombok.Data;
 
 import java.util.Date;
@@ -23,4 +24,5 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
+
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java
index 599437a..f0e710f 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java
@@ -71,4 +71,7 @@
     @TableField("end_create_time")
     private Date endCreateTime;
 
+    /** 鐗堟湰鍙凤細鍙敤浜庢煡璇㈠巻鍙插鏍歌褰� */
+    @TableField("version")
+    private Integer version;
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportAuditingForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportAuditingForm.java
new file mode 100644
index 0000000..737d75e
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportAuditingForm.java
@@ -0,0 +1,47 @@
+package com.ycl.platform.domain.form;
+
+import com.ycl.platform.base.AbsForm;
+import com.ycl.platform.domain.entity.Report;
+import com.ycl.system.domain.group.Add;
+import com.ycl.system.domain.group.Update;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import java.util.Date;
+
+/**
+ * 鎶ュ琛ㄥ崟
+ *
+ * @author xp
+ * @since 2024-03-19
+ */
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "Report瀹℃牳琛ㄥ崟", description = "鎶ュ瀹℃牳琛ㄥ崟")
+public class ReportAuditingForm {
+
+    @NotNull(message = "璇烽�夋嫨瑕佸鏍哥殑鎶ュ")
+    private Integer id;
+
+    @ApiModelProperty("瀹℃牳鎰忚")
+    private String auditOpinion;
+
+    @NotNull(message = "璇风粰鍑哄鏍哥粨鏋�")
+    @ApiModelProperty("瀹℃牳缁撴灉")
+    private Boolean auditingResult;
+
+    public static Report getEntityByForm(@NonNull ReportAuditingForm form, Report entity) {
+        if(entity == null) {
+          entity = new Report();
+        }
+        BeanUtils.copyProperties(form, entity);
+        return entity;
+    }
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java
new file mode 100644
index 0000000..09eea5f
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java
@@ -0,0 +1,24 @@
+package com.ycl.platform.domain.query;
+
+import com.ycl.platform.base.AbsQuery;
+import enumeration.ContractStatus;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/23 9:40
+ */
+@Data
+public class ContractQuery extends AbsQuery {
+
+    @ApiModelProperty("鍚堝悓鍚嶇О")
+    private String name;
+
+    /**
+     * @see ContractStatus
+     */
+    @ApiModelProperty("鐘舵��")
+    private String status;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ContractVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ContractVO.java
new file mode 100644
index 0000000..7bc9c22
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ContractVO.java
@@ -0,0 +1,54 @@
+package com.ycl.platform.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ycl.platform.base.AbsVo;
+import enumeration.ContractStatus;
+import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Date;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/23 9:59
+ */
+@Data
+public class ContractVO extends AbsVo {
+
+    private Long unitId;
+
+    private String unitName;
+
+    /**
+     * 鍚堝悓鍚嶇О
+     */
+    private String name;
+
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date startTime;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endTime;
+
+    /**
+     * 鍚堝悓闄勪欢
+     */
+    private String attachment;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    private String ruleList;
+
+    private MultipartFile file;
+
+    private ContractStatus status;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java
index b4e0715..aafc0aa 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java
@@ -70,7 +70,7 @@
     private Date endCreateTime;
 
     /**
-     * 瑁呭~
+     * 鐘舵��
      */
     private Integer status;
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java b/ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java
index f3559f7..2f07121 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java
@@ -2,6 +2,7 @@
 
 import com.ycl.platform.domain.entity.Report;
 import com.ycl.platform.domain.entity.TMonitor;
+import com.ycl.platform.domain.form.ReportAuditingForm;
 import com.ycl.platform.domain.vo.ReportVO;
 import com.ycl.platform.domain.vo.TMonitorVO;
 import com.ycl.system.domain.group.Update;
@@ -87,6 +88,20 @@
         return reportService.all();
     }
 
+    @GetMapping("/examine/record")
+    @ApiOperation(value = "瀹℃牳璁板綍", notes = "瀹℃牳璁板綍")
+    @PreAuthorize("@ss.hasPermi('system:report:record')")
+    public Result examineRecord() {
+        return reportService.examineRecord();
+    }
+
+    @PostMapping("/auditing")
+    @ApiOperation(value = "瀹℃牳", notes = "瀹℃牳")
+    @PreAuthorize("@ss.hasPermi('system:report:auditing')")
+    public Result auditing(@RequestBody @Validated ReportAuditingForm form) {
+        return reportService.auditing(form);
+    }
+
     @PostMapping("/export")
     @ApiOperation(value = "瀵煎嚭", notes = "瀵煎嚭")
     @PreAuthorize("@ss.hasPermi('system:report:export')")
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java b/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java
index 3ad75a8..824b018 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java
@@ -5,6 +5,7 @@
 import com.ycl.platform.domain.entity.CalculateMoneyRule;
 import com.ycl.platform.domain.entity.TContract;
 import com.ycl.platform.domain.entity.TMonitor;
+import com.ycl.platform.domain.query.ContractQuery;
 import com.ycl.platform.domain.query.YwUnitQuery;
 import com.ycl.platform.domain.vo.TMonitorVO;
 import com.ycl.platform.service.ITContractService;
@@ -37,8 +38,8 @@
 
     @PreAuthorize("@ss.hasPermi('system:contract:list')")
     @GetMapping("/list")
-    public List<TContract> list() {
-        return tContractService.selectAll();
+    public Result page(ContractQuery query) {
+        return tContractService.selectAll(query);
     }
 
     @PreAuthorize("@ss.hasPermi('system:contract:query')")
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java
index 919f81e..5d73761 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java
@@ -1,7 +1,12 @@
 package com.ycl.platform.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ycl.platform.domain.entity.TContract;
+import com.ycl.platform.domain.query.ContractQuery;
+import com.ycl.platform.domain.vo.ContractVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -12,5 +17,8 @@
  * @date 2024-03-12
  */
 public interface TContractMapper extends BaseMapper<TContract> {
-    List<TContract> selectAll();
+
+    IPage<ContractVO> getPage(IPage page, @Param("query") ContractQuery query);
+
+
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java b/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
index 15d8e8c..aaf5b80 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
@@ -3,7 +3,9 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.platform.domain.entity.CalculateMoneyRule;
 import com.ycl.platform.domain.entity.TContract;
+import com.ycl.platform.domain.query.ContractQuery;
 import com.ycl.system.AjaxResult;
+import com.ycl.system.Result;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -31,7 +33,13 @@
      */
     AjaxResult importData(MultipartFile file, TContract tContract);
 
-    List<TContract> selectAll();
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param query
+     * @return
+     */
+    Result selectAll(ContractQuery query);
 
     /**
      * 鏍规嵁鍚堝悓id鏌ヨ閽辨牳绠楄鍒�
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ReportService.java b/ycl-server/src/main/java/com/ycl/platform/service/ReportService.java
index bf4e0fc..752cfee 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ReportService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ReportService.java
@@ -2,6 +2,7 @@
 
 import com.ycl.platform.domain.entity.Report;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.platform.domain.form.ReportAuditingForm;
 import com.ycl.platform.domain.vo.ReportVO;
 import com.ycl.system.Result;
 import com.ycl.platform.domain.form.ReportForm;
@@ -69,4 +70,18 @@
      * @return
      */
     List<ReportVO> export(ReportQuery query);
+
+    /**
+     * 鑾峰彇瀹℃牳璁板綍
+     *
+     * @return
+     */
+    Result examineRecord();
+
+    /**
+     * 瀹℃牳鎶ュ
+     * @param form
+     * @return
+     */
+    Result auditing(ReportAuditingForm form);
 }
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 531a019..d284f95 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
@@ -8,6 +8,7 @@
 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;
 import com.ycl.platform.domain.vo.ReportVO;
@@ -28,6 +29,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -196,4 +198,27 @@
         return vos;
     }
 
+
+    @Override
+    public Result examineRecord() {
+
+        return null;
+    }
+
+    @Override
+    public Result auditing(ReportAuditingForm form) {
+        Report report = baseMapper.selectById(form.getId());
+        if (Objects.isNull(report)) {
+            throw new RuntimeException("瀹℃牳鐨勬姤澶囦笉瀛樺湪");
+        }
+        if (form.getAuditingResult()) {
+            report.setStatus(1);
+        } else {
+            report.setStatus(2);
+        }
+        report.setAuditOpinion(form.getAuditOpinion());
+        report.setAuditingTime(new Date());
+        baseMapper.updateById(report);
+        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 9182297..855a8a2 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
@@ -4,7 +4,7 @@
 import com.alibaba.excel.write.merge.LoopMergeStrategy;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.fastjson2.JSON;
-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.handler.CommentWriteHandler;
@@ -12,18 +12,22 @@
 import com.ycl.platform.domain.entity.CalculateMoneyRule;
 import com.ycl.platform.domain.entity.CalculateRule;
 import com.ycl.platform.domain.entity.TContract;
+import com.ycl.platform.domain.query.ContractQuery;
+import com.ycl.platform.domain.vo.ContractVO;
 import com.ycl.platform.mapper.TContractMapper;
 import com.ycl.platform.service.ICalculateRuleService;
 import com.ycl.platform.service.ITContractService;
 import com.ycl.system.AjaxResult;
+import com.ycl.system.Result;
+import com.ycl.system.page.PageUtil;
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.StringUtils;
+import enumeration.ContractStatus;
 import enumeration.general.RuleDeductCategoryEnum;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.multipart.MultipartFile;
@@ -196,8 +200,20 @@
     }
 
     @Override
-    public List<TContract> selectAll() {
-        return baseMapper.selectAll();
+    public Result selectAll(ContractQuery query) {
+        IPage<ContractVO> page = PageUtil.getPage(query, ContractVO.class);
+        baseMapper.getPage(page, query);
+        page.getRecords().stream().forEach(contract -> {
+            Date now = new Date();
+            if (now.before(contract.getStartTime())) {
+                contract.setStatus(ContractStatus.NOT_START);
+            } else if (now.after(contract.getEndTime())) {
+                contract.setStatus(ContractStatus.FINISHED);
+            } else {
+                contract.setStatus(ContractStatus.ACTIVE);
+            }
+        });
+        return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
     @Override
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
index f0fd939..eec44b2 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
@@ -12,4 +12,28 @@
         order by create_time desc
     </select>
 
+    <select id="getPage" resultType="com.ycl.platform.domain.vo.ContractVO">
+        select a.*, b.unit_name
+        from t_contract a
+                 left join t_yw_unit b on a.unit_id = b.id and b.deleted = 0
+        where a.deleted = 0
+        <if test="query.name != null and query.name != ''">
+            and a.name like concat('%', #{query.name}, '%')
+        </if>
+        <if test="query.status != null and query.status != ''">
+            <choose>
+                <when test="query.status == 'ACTIVE'">
+                    and a.start_time  &lt; sysdate() and a.end_time > sysdate()
+                </when>
+                <when test="query.status == 'NOT_START'">
+                    and a.start_time  > sysdate()
+                </when>
+                <when test="query.status == 'FINISHED'">
+                    and a.end_time &lt; sysdate()
+                </when>
+            </choose>
+        </if>
+        order by create_time desc
+    </select>
+
 </mapper>

--
Gitblit v1.8.0