From 731088b65667ec3d00ae7d14b851d53831552ac3 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 06 三月 2024 15:01:01 +0800
Subject: [PATCH] 违约审核完善

---
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DefaultAuditingVO.java               |   13 ++
 ycl-common/src/main/java/utils/DateUtils.java                                          |   41 +++++++
 ycl-server/src/main/java/com/ycl/platform/service/impl/DefaultAuditingServiceImpl.java |   38 +++++--
 ycl-pojo/src/main/java/com/ycl/platform/domain/form/DefaultAuditForm.java              |   27 +++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/DefaultAuditingQuery.java         |   46 +++++++++
 ycl-server/src/main/java/com/ycl/platform/mapper/DefaultAuditingMapper.java            |    6 +
 pom.xml                                                                                |    8 +
 ycl-server/src/main/java/com/ycl/config/MybatisPlusConfig.java                         |   25 +++++
 ycl-server/src/main/java/com/ycl/platform/service/DefaultAuditingService.java          |    8 +
 ycl-server/src/main/java/com/ycl/platform/controller/DefaultAuditingController.java    |   11 +
 ycl-server/src/main/resources/mapper/zgyw/DefaultAuditingMapper.xml                    |   34 ++++++
 11 files changed, 238 insertions(+), 19 deletions(-)

diff --git a/pom.xml b/pom.xml
index c6df984..99a7e90 100644
--- a/pom.xml
+++ b/pom.xml
@@ -176,6 +176,12 @@
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper-spring-boot-starter</artifactId>
             <version>${pagehelper.version}</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jsqlparser</artifactId>
+                    <groupId>com.github.jsqlparser</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>
@@ -289,4 +295,4 @@
             </plugin>
         </plugins>
     </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/ycl-common/src/main/java/utils/DateUtils.java b/ycl-common/src/main/java/utils/DateUtils.java
index 131b9ce..77b3e6c 100644
--- a/ycl-common/src/main/java/utils/DateUtils.java
+++ b/ycl-common/src/main/java/utils/DateUtils.java
@@ -2,15 +2,18 @@
 
 import org.apache.commons.lang3.time.DateFormatUtils;
 
+import javax.annotation.Nullable;
 import java.lang.management.ManagementFactory;
+import java.sql.Timestamp;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.*;
 import java.util.Date;
+import java.util.Objects;
 
 /**
  * 鏃堕棿宸ュ叿绫�
- * 
+ *
  * @author ruoyi
  */
 public class DateUtils extends org.apache.commons.lang3.time.DateUtils
@@ -26,13 +29,13 @@
     public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
 
     private static String[] parsePatterns = {
-            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", 
+            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
             "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
             "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
 
     /**
      * 鑾峰彇褰撳墠Date鍨嬫棩鏈�
-     * 
+     *
      * @return Date() 褰撳墠鏃ユ湡
      */
     public static Date getNowDate()
@@ -42,7 +45,7 @@
 
     /**
      * 鑾峰彇褰撳墠鏃ユ湡, 榛樿鏍煎紡涓簓yyy-MM-dd
-     * 
+     *
      * @return String
      */
     public static String getDate()
@@ -185,4 +188,34 @@
         ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
         return Date.from(zdt.toInstant());
     }
+
+    /**
+     * 鑾峰彇鏌愬ぉ鐨勫紑濮嬫椂闂�
+     *
+     * @param date
+     * @return 2023-01-01 00:00:00
+     */
+    public static Date getDayStart(@Nullable Date date) {
+        if (Objects.isNull(date)) {
+            date = new Date();
+        }
+        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.of("GMT+8"));
+        LocalDateTime of = LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 0, 0, 0);
+        return Timestamp.valueOf(of);
+    }
+
+    /**
+     * 鑾峰彇鏌愬ぉ鐨勭粨鏉熸椂闂�
+     *
+     * @param date
+     * @return 2023-01-01 23:59:59
+     */
+    public static Date getDayEnd(@Nullable Date date) {
+        if (Objects.isNull(date)) {
+            date = new Date();
+        }
+        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
+        LocalDateTime of = LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 23, 59, 59);
+        return Timestamp.valueOf(of);
+    }
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/DefaultAuditForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/DefaultAuditForm.java
new file mode 100644
index 0000000..030c5a6
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/DefaultAuditForm.java
@@ -0,0 +1,27 @@
+package com.ycl.platform.domain.form;
+
+import com.ycl.platform.base.AbsForm;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * 杩濈害瀹℃牳琛ㄥ崟
+ *
+ * @author锛歺p
+ * @date锛�2024/3/6 8:59
+ */
+@Data
+public class DefaultAuditForm extends AbsForm {
+
+    /**
+     * 瀹℃牳缁撴灉
+     */
+    @NotBlank(message = "瀹℃牳缁撴灉涓嶈兘涓虹┖")
+    private String auditingResult;
+
+    /**
+     * 瀹℃牳璇存槑
+     */
+    private String remark;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DefaultAuditingQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DefaultAuditingQuery.java
index 85b4f21..96576ba 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DefaultAuditingQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DefaultAuditingQuery.java
@@ -1,13 +1,19 @@
 package com.ycl.platform.domain.query;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.platform.base.AbsQuery;
+
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
+
 import org.springframework.lang.NonNull;
 import jakarta.validation.constraints.NotBlank;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
+import utils.DateUtils;
 
 /**
  * 杩濊瀹℃牳鏌ヨ
@@ -19,5 +25,45 @@
 @Accessors(chain = true)
 @ApiModel(value = "DefaultAuditing鏌ヨ", description = "杩濊瀹℃牳鏌ヨ")
 public class DefaultAuditingQuery extends AbsQuery {
+
+    /**
+     * 杩濊鍗曚綅
+     */
+    private Integer unitId;
+
+    /**
+     * 瀹℃牳鏃堕棿鑼冨洿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date auditingStartTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date auditingEndTime;
+
+    /**
+     * 鍒涘缓鏃堕棿鑼冨洿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createStartTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createEndTime;
+
+    /**
+     * 璁剧疆鏃堕棿锛屼娇鍏跺寘鍚粖澶�
+     */
+    public void setTime() {
+        if (Objects.nonNull(auditingStartTime)) {
+            auditingStartTime = DateUtils.getDayStart(auditingStartTime);
+        }
+        if (Objects.nonNull(auditingEndTime)) {
+            auditingEndTime = DateUtils.getDayEnd(auditingEndTime);
+        }
+        if (Objects.nonNull(createStartTime)) {
+            createStartTime = DateUtils.getDayStart(createStartTime);
+        }
+        if (Objects.nonNull(createEndTime)) {
+            createEndTime = DateUtils.getDayEnd(createEndTime);
+        }
+    }
+
 }
 
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DefaultAuditingVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DefaultAuditingVO.java
index 3a5fde8..da99993 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DefaultAuditingVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DefaultAuditingVO.java
@@ -1,5 +1,6 @@
 package com.ycl.platform.domain.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.platform.base.AbsVo;
 import com.ycl.platform.domain.entity.DefaultAuditing;
 import java.util.List;
@@ -24,6 +25,16 @@
     /** 杩濊 */
     private Integer defaultId;
 
+    /**
+     * 杩濈害瑙勫垯鍚�
+     */
+    private String defaultRuleName;
+
+    /**
+     * 杩濈害杩愮淮鍗曚綅
+     */
+    private String unitName;
+
     /** 瀹℃牳鐘舵�� */
     private String auditingStatus;
 
@@ -31,10 +42,12 @@
     private String remark;
 
     /** 瀹℃牳鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime auditingTime;
 
     /** 瀹℃牳浜� */
     private Integer auditingUser;
+    private String auditingUserName;
 
     public static DefaultAuditingVO getVoByEntity(@NonNull DefaultAuditing entity, DefaultAuditingVO vo) {
         if(vo == null) {
diff --git a/ycl-server/src/main/java/com/ycl/config/MybatisPlusConfig.java b/ycl-server/src/main/java/com/ycl/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..aa79139
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/config/MybatisPlusConfig.java
@@ -0,0 +1,25 @@
+package com.ycl.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author xp
+ * @date 2024/3/6
+ */
+@Configuration
+public class MybatisPlusConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+
+        // 閰嶇疆鍒嗛〉鎻掍欢
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+}
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/DefaultAuditingController.java b/ycl-server/src/main/java/com/ycl/platform/controller/DefaultAuditingController.java
index cb99f29..1f3003b 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/DefaultAuditingController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/DefaultAuditingController.java
@@ -1,5 +1,6 @@
 package com.ycl.platform.controller;
 
+import com.ycl.platform.domain.form.DefaultAuditForm;
 import com.ycl.system.domain.group.Update;
 import com.ycl.system.domain.group.Add;
 import org.springframework.validation.annotation.Validated;
@@ -55,9 +56,9 @@
         return defaultAuditingService.remove(ids);
     }
 
-    @GetMapping("/page")
+    @PostMapping("/page")
     @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
-    public Result page(DefaultAuditingQuery query) {
+    public Result page(@RequestBody DefaultAuditingQuery query) {
         return defaultAuditingService.page(query);
     }
 
@@ -72,4 +73,10 @@
     public Result list() {
         return defaultAuditingService.all();
     }
+
+    @PostMapping("/auditing")
+    @ApiOperation(value = "瀹℃牳", notes = "瀹℃牳")
+    public Result auditing(@RequestBody @Validated DefaultAuditForm form) {
+        return defaultAuditingService.auditing(form);
+    }
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/DefaultAuditingMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/DefaultAuditingMapper.java
index 3877306..2b76016 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/DefaultAuditingMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/DefaultAuditingMapper.java
@@ -1,11 +1,15 @@
 package com.ycl.platform.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ycl.platform.domain.entity.DefaultAuditing;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.platform.domain.query.DefaultAuditingQuery;
 import com.ycl.platform.domain.vo.DefaultAuditingVO;
 import com.ycl.platform.domain.form.DefaultAuditingForm;
 import java.util.List;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 杩濊瀹℃牳 Mapper 鎺ュ彛
@@ -16,4 +20,6 @@
 @Mapper
 public interface DefaultAuditingMapper extends BaseMapper<DefaultAuditing> {
 
+    Page page(IPage page, @Param("query") DefaultAuditingQuery query);
 }
+
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/DefaultAuditingService.java b/ycl-server/src/main/java/com/ycl/platform/service/DefaultAuditingService.java
index 16f1a18..39906f9 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/DefaultAuditingService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/DefaultAuditingService.java
@@ -2,6 +2,7 @@
 
 import com.ycl.platform.domain.entity.DefaultAuditing;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.platform.domain.form.DefaultAuditForm;
 import com.ycl.system.Result;
 import com.ycl.platform.domain.form.DefaultAuditingForm;
 import com.ycl.platform.domain.query.DefaultAuditingQuery;
@@ -62,4 +63,11 @@
      * @return
      */
     Result all();
+
+    /**
+     * 瀹℃牳
+     * @param form
+     * @return
+     */
+    Result auditing(DefaultAuditForm form);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/DefaultAuditingServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/DefaultAuditingServiceImpl.java
index 0e4dda4..000eadd 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DefaultAuditingServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DefaultAuditingServiceImpl.java
@@ -1,6 +1,8 @@
 package com.ycl.platform.service.impl;
 
+import com.ycl.exception.ServiceException;
 import com.ycl.platform.domain.entity.DefaultAuditing;
+import com.ycl.platform.domain.form.DefaultAuditForm;
 import com.ycl.platform.mapper.DefaultAuditingMapper;
 import com.ycl.platform.service.DefaultAuditingService;
 import com.ycl.system.Result;
@@ -8,6 +10,9 @@
 import com.ycl.platform.domain.form.DefaultAuditingForm;
 import com.ycl.platform.domain.vo.DefaultAuditingVO;
 import com.ycl.platform.domain.query.DefaultAuditingQuery;
+
+import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -18,6 +23,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 import java.util.ArrayList;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
@@ -101,17 +107,10 @@
      */
     @Override
     public Result page(DefaultAuditingQuery query) {
-
-        IPage<DefaultAuditing> page = new LambdaQueryChainWrapper<>(baseMapper)
-                .orderByDesc(DefaultAuditing::getCreateTime)
-                .page(PageUtil.getPage(query, DefaultAuditing.class));
-
-        List<DefaultAuditingVO> vos = page.getRecords().stream()
-                .map(
-                        entity -> DefaultAuditingVO.getVoByEntity(entity, null)
-                )
-                .collect(Collectors.toList());
-        return Result.ok().data(vos).total(page.getTotal());
+        query.setTime();
+        IPage page = PageUtil.getPage(query, DefaultAuditing.class);
+        baseMapper.page(page, query);
+        return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
     /**
@@ -142,4 +141,21 @@
                 .collect(Collectors.toList());
         return Result.ok().data(vos);
     }
+
+    @Override
+    public Result auditing(DefaultAuditForm form) {
+        DefaultAuditing defaultAuditing = baseMapper.selectById(form.getId());
+        if (Objects.isNull(defaultAuditing)) {
+            throw new ServiceException("璇ヨ繚绾︿笉瀛樺湪");
+        }
+        if ("pass".equals(form.getAuditingResult())) {
+            defaultAuditing.setAuditingStatus("瀹℃牳閫氳繃");
+        } else {
+            defaultAuditing.setAuditingStatus("瀹℃牳鏈�氳繃");
+        }
+        BeanUtils.copyProperties(form, defaultAuditing);
+        defaultAuditing.setAuditingTime(LocalDateTime.now());
+        baseMapper.updateById(defaultAuditing);
+        return Result.ok("鎿嶄綔鎴愬姛");
+    }
 }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/DefaultAuditingMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/DefaultAuditingMapper.xml
index bf1ba09..49132a1 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/DefaultAuditingMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/DefaultAuditingMapper.xml
@@ -10,7 +10,39 @@
         <result column="auditing_status" property="auditingStatus" />
         <result column="remark" property="remark" />
         <result column="auditing_time" property="auditingTime" />
-        <result column="auditing_user" property="auditingUser" />
+        <result column="nick_name" property="auditingUserName" />
+        <result column="rule_name" property="defaultRuleName" />
+        <result column="unit_name" property="unitName" />
     </resultMap>
 
+    <select id="page" resultMap="BaseResultMap">
+        SELECT
+               tda.id,
+               tda.create_time,
+               tda.default_id,
+               tda.auditing_status,
+               tda.remark,
+               tda.auditing_time,
+               tda.auditing_user,
+               su.nick_name,
+               (SELECT unit_name FROM t_yw_unit WHERE id = tdr.unit_id AND deleted = 0) as unit_name,
+               (SELECT rule_name FROM t_default_rule WHERE id = tdr.default_rule_id AND deleted = 0) as rule_name
+        FROM
+             t_default_auditing tda
+              INNER JOIN t_default_record tdr ON tda.default_id = tdr.id AND tda.deleted = 0 AND tdr.deleted = 0
+              LEFT JOIN sys_user su ON tda.auditing_user = su.user_id
+        <where>
+
+            <if test="query.unitId != null and query.unitId != ''">
+                AND tdr.unit_id = #{query.unitId}
+            </if>
+            <if test="query.auditingStartTime != null and query.auditingEndTime != null">
+                AND tda.auditing_time BETWEEN #{query.auditingStartTime} AND #{query.auditingEndTime}
+            </if>
+            <if test="query.createStartTime != null and query.createEndTime != null">
+                AND tda.create_time BETWEEN #{query.createStartTime} AND #{query.createEndTime}
+            </if>
+        </where>
+    </select>
+
 </mapper>

--
Gitblit v1.8.0