From 95f0a8b4d82a859f2018c9d77e1a8a3a38b2d523 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 23 七月 2024 17:06:50 +0800
Subject: [PATCH] 报备记录、编号工具方法

---
 ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java              |   12 +---
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java                |    6 +-
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java            |    9 ++-
 ycl-server/src/main/java/com/ycl/platform/service/ReportService.java             |    3 
 ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java               |    9 +++
 ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java       |    6 +-
 ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml                       |   29 ++++++++-
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |    3 
 ycl-server/src/main/java/com/ycl/utils/uuid/IdUtils.java                         |   38 +++++++++++-
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java                  |    4 +
 ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java    |   35 ++++++++---
 11 files changed, 116 insertions(+), 38 deletions(-)

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 f0e710f..07f8c7e 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,7 +71,7 @@
     @TableField("end_create_time")
     private Date endCreateTime;
 
-    /** 鐗堟湰鍙凤細鍙敤浜庢煡璇㈠巻鍙插鏍歌褰� */
-    @TableField("version")
-    private Integer version;
+    /** 鏍囪瘑鍙凤細鍙敤浜庢煡璇㈠巻鍙插鏍歌褰� */
+    @TableField("identify")
+    private String identify;
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java
index 10bf0ff..461f9a2 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java
@@ -1,5 +1,6 @@
 package com.ycl.platform.domain.form;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.system.domain.group.Update;
 import com.ycl.system.domain.group.Add;
 import com.ycl.platform.base.AbsForm;
@@ -35,13 +36,12 @@
     @ApiModelProperty("鐐逛綅")
     private Integer pointId;
 
-    @ApiModelProperty("瀹℃牳鏃堕棿")
-    private Date auditingTime;
-
     @ApiModelProperty("鐢熸晥鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date beginCreateTime;
 
     @ApiModelProperty("澶辨晥鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endCreateTime;
 
     @ApiModelProperty("瀹℃牳绫诲瀷")
@@ -57,12 +57,6 @@
 
     @ApiModelProperty("鏁呴殰绫诲瀷")
     private String errorType;
-
-    @ApiModelProperty("瀹℃牳鎰忚")
-    private String auditOpinion;
-
-    @ApiModelProperty("鐘舵��")
-    private Integer status;
 
     public static Report getEntityByForm(@NonNull ReportForm form, Report entity) {
         if(entity == null) {
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
index 4e63f3b..2e69882 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
@@ -24,9 +24,9 @@
 
     private String reportType;
 
-    private Date beginCreateTime;
-
-    private Date endCreateTime;
+//    private Date beginCreateTime;
+//
+//    private Date endCreateTime;
 
     private String pointId;
 
@@ -36,5 +36,8 @@
 
     private List<Integer> peopleIdList;
 
+    @ApiModelProperty("鐘舵��")
+    private Integer 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 aafc0aa..13f523d 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
@@ -1,6 +1,7 @@
 package com.ycl.platform.domain.vo;
 
 import annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.platform.base.AbsVo;
 import com.ycl.platform.domain.entity.Report;
 
@@ -56,17 +57,20 @@
     private String errorType;
 
     /** 瀹℃牳鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Excel(name = "瀹℃牳鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
     private Date auditingTime;
 
     /**
      * 鐢熸晥鏃堕棿
      */
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date beginCreateTime;
 
     /**
      * 澶辨晥鏃堕棿
      */
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endCreateTime;
 
     /**
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 2f07121..4f85e46 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
@@ -88,11 +88,11 @@
         return reportService.all();
     }
 
-    @GetMapping("/examine/record")
+    @GetMapping("/auditing/record/{id}")
     @ApiOperation(value = "瀹℃牳璁板綍", notes = "瀹℃牳璁板綍")
     @PreAuthorize("@ss.hasPermi('system:report:record')")
-    public Result examineRecord() {
-        return reportService.examineRecord();
+    public Result auditingRecord(@PathVariable("id") Integer id) {
+        return reportService.auditingRecord(id);
     }
 
     @PostMapping("/auditing")
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
index bb38f57..aff5d13 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
@@ -9,6 +9,7 @@
 import java.util.List;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.web.bind.annotation.PathVariable;
 
 /**
  * 鎶ュ Mapper 鎺ュ彛
@@ -20,4 +21,12 @@
 public interface ReportMapper extends BaseMapper<Report> {
 
     IPage<ReportVO> page(IPage page, @Param("query") ReportQuery query);
+
+    /**
+     * 瀹℃牳璁板綍
+     *
+     * @param id
+     * @return
+     */
+    List<ReportVO> examineRecord(@Param("id") Integer 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 752cfee..c8f3bba 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
@@ -75,8 +75,9 @@
      * 鑾峰彇瀹℃牳璁板綍
      *
      * @return
+     * @param id
      */
-    Result examineRecord();
+    Result auditingRecord(Integer id);
 
     /**
      * 瀹℃牳鎶ュ
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 d284f95..3230e09 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
@@ -12,7 +12,6 @@
 import com.ycl.platform.domain.form.ReportForm;
 import com.ycl.platform.domain.query.ReportQuery;
 import com.ycl.platform.domain.vo.ReportVO;
-import com.ycl.platform.domain.vo.WorkOrderVO;
 import com.ycl.platform.mapper.ReportMapper;
 import com.ycl.platform.mapper.YwPeopleMapper;
 import com.ycl.platform.mapper.YwPointMapper;
@@ -21,9 +20,11 @@
 import com.ycl.system.Result;
 import com.ycl.system.page.PageUtil;
 import com.ycl.utils.SecurityUtils;
+import com.ycl.utils.uuid.IdUtils;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 import org.springframework.util.CollectionUtils;
@@ -61,6 +62,7 @@
         form.setUnitId(people.getBelongUnit());
         Report entity = ReportForm.getEntityByForm(form, null);
         entity.setStatus(0);
+        entity.setIdentify(IdUtils.timeAddRandomNO(3));
         if(baseMapper.insert(entity) > 0) {
             return Result.ok("娣诲姞鎴愬姛");
         }
@@ -76,14 +78,25 @@
     public Result update(ReportForm form) {
 
         Report entity = baseMapper.selectById(form.getId());
-
         // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
         Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
-        BeanUtils.copyProperties(form, entity);
-        if (baseMapper.updateById(entity) > 0) {
-            return Result.ok("淇敼鎴愬姛");
+
+        if (0 == entity.getStatus()) {
+            // 寰呭鏍哥殑鐩存帴鏀�
+            BeanUtils.copyProperties(form, entity);
+            baseMapper.updateById(entity);
+        } else if (2 == entity.getStatus()) {
+            // 濡傛灉鏄湭瀹℃牳閫氳繃锛岃繘琛屼慨鏀癸紝閭d箞鐩存帴鏂板锛堜负浜嗕繚瀛樺鏍歌褰曪級
+            Report report = new Report();
+            BeanUtils.copyProperties(entity, report);
+            BeanUtils.copyProperties(form, report);
+            report.setId(null);
+            report.setStatus(0);
+            report.setAuditingTime(null);
+            report.setAuditOpinion(null);
+            baseMapper.insert(report);
         }
-        return Result.error("淇敼澶辫触");
+        return Result.ok("淇敼鎴愬姛");
     }
 
     /**
@@ -174,8 +187,8 @@
 
         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())
+//                .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)
@@ -200,9 +213,9 @@
 
 
     @Override
-    public Result examineRecord() {
-
-        return null;
+    public Result auditingRecord(Integer id) {
+        List<ReportVO> reportList = baseMapper.examineRecord(id);
+        return Result.ok().data(reportList);
     }
 
     @Override
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 03e14a0..7e75841 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
@@ -23,6 +23,7 @@
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.SecurityUtils;
 import com.ycl.utils.redis.RedisCache;
+import com.ycl.utils.uuid.IdUtils;
 import enumeration.general.*;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ArrayUtils;
@@ -74,7 +75,7 @@
     @Override
     public Result add(WorkOrderForm form) {
         WorkOrder entity = WorkOrderForm.getEntityByForm(form, null);
-        entity.setWorkOrderNo(DateUtils.dateTimeNow());
+        entity.setWorkOrderNo(IdUtils.timeAddRandomNO(5));
         entity.setCreateTime(DateUtils.getNowDate());
         entity.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE);
         if(baseMapper.insert(entity) > 0) {
diff --git a/ycl-server/src/main/java/com/ycl/utils/uuid/IdUtils.java b/ycl-server/src/main/java/com/ycl/utils/uuid/IdUtils.java
index c95c6e3..eaf4e6b 100644
--- a/ycl-server/src/main/java/com/ycl/utils/uuid/IdUtils.java
+++ b/ycl-server/src/main/java/com/ycl/utils/uuid/IdUtils.java
@@ -1,15 +1,22 @@
 package com.ycl.utils.uuid;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Random;
+
 /**
  * ID鐢熸垚鍣ㄥ伐鍏风被
- * 
+ *
  * @author ruoyi
  */
 public class IdUtils
 {
+
+    private final static SimpleDateFormat FORMAT = new SimpleDateFormat("yyyyMMddHHmmss");
+
     /**
      * 鑾峰彇闅忔満UUID
-     * 
+     *
      * @return 闅忔満UUID
      */
     public static String randomUUID()
@@ -39,11 +46,36 @@
 
     /**
      * 绠�鍖栫殑UUID锛屽幓鎺変簡妯嚎锛屼娇鐢ㄦ�ц兘鏇村ソ鐨凾hreadLocalRandom鐢熸垚UUID
-     * 
+     *
      * @return 绠�鍖栫殑UUID锛屽幓鎺変簡妯嚎
      */
     public static String fastSimpleUUID()
     {
         return UUID.fastUUID().toString(true);
     }
+
+    /**
+     * 鑾峰彇褰撳墠鏃堕棿+闅忔満鏁扮殑缂栧彿
+     *
+     * @param numberNum 鏃堕棿鍚庣敓鎴愬嚑浣嶆暟瀛楋紝榛樿5
+     * @return 缂栧彿
+     */
+    public static String timeAddRandomNO(Integer numberNum)
+    {
+        if (numberNum == null || numberNum == 0 || numberNum < 3) {
+            numberNum = 5;
+        }
+
+        Date now = new Date();
+        String timeString = FORMAT.format(now);
+
+        Random random = new Random();
+        StringBuilder builder = new StringBuilder();
+        builder.append(timeString);
+        for (int i = 0; i < numberNum; i++) {
+            // 鐢熸垚涓�涓�0鍒�9涔嬮棿鐨勯殢鏈烘暟锛堝寘鎷�0鍜�9锛�
+            builder.append(random.nextInt(10));
+        }
+        return builder.toString();
+    }
 }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
index a6bac16..382f7b4 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
@@ -24,13 +24,19 @@
         LEFT JOIN t_yw_unit u ON r.unit_id = u.id and u.deleted = 0
         LEFT JOIN t_yw_people p ON r.people_id = p.id and p.deleted = 0
         LEFT JOIN t_yw_point pt ON r.point_id = pt.id and pt.deleted = 0
-        where
+        INNER JOIN (
+            SELECT identify,MAX(create_time) AS create_time
+            FROM t_report
+            WHERE deleted = 0
+            GROUP BY identify
+        ) as rr ON r.create_time = rr.create_time
+        WHERE
         r.deleted = 0
         <if test="query.reportType != null and query.reportType != ''">
             AND r.report_type = #{query.reportType}
         </if>
-        <if test="query.beginCreateTime != null">
-            AND r.create_time between #{query.beginCreateTime} and #{query.endCreateTime}
+        <if test="query.status != null">
+            AND r.status = #{query.status}
         </if>
         <if test="query.pointId != null and query.pointId != ''">
             AND pt.point_name like concat('%', #{query.pointId}, '%')
@@ -38,7 +44,22 @@
         <if test="query.peopleId != null and query.peopleId != ''">
             AND p.yw_person_name like concat('%', #{query.peopleId}, '%')
         </if>
-        ORDER BY r.create_time DESC
+        ORDER BY r.update_time DESC
+    </select>
+
+    <select id="examineRecord" resultMap="BaseResultMap">
+        SELECT
+            r.*, u.unit_name, p.yw_person_name as peopleName, pt.point_name
+        FROM
+            t_report r
+                LEFT JOIN t_yw_unit u ON r.unit_id = u.id and u.deleted = 0
+                LEFT JOIN t_yw_people p ON r.people_id = p.id and p.deleted = 0
+                LEFT JOIN t_yw_point pt ON r.point_id = pt.id and pt.deleted = 0
+                INNER JOIN (
+                    SELECT identify, create_time
+                    FROM t_report
+                    WHERE id = #{id} AND deleted = 0
+            ) as rr ON r.identify = rr.identify AND r.create_time &lt;= rr.create_time
     </select>
 
 </mapper>

--
Gitblit v1.8.0