浏览代码

feat(system): 增强用户签署合同列表查询功能

- 新增 ContractSignDTO 类作为查询参数
- 扩展查询条件,支持家庭成员姓名、联系电话、签署状态等多维度筛选
- 添加创建时间和签约完成时间范围查询- 修改查询方法签名,使用 ContractSignDTO 作为参数
-优化 SQL 查询语句,加入新查询条件
SheepHy 2 天之前
父节点
当前提交
d87bf3aaec

+ 4 - 5
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/ESignController.java

@@ -10,6 +10,7 @@ import org.jeecg.modules.app.dto.SealInfoDTO;
 import org.jeecg.modules.app.esign.exception.EsignDemoException;
 import org.jeecg.modules.app.service.IESignService;
 import org.jeecg.modules.system.app.dto.AppContractInfoDTO;
+import org.jeecg.modules.system.app.dto.ContractSignDTO;
 import org.jeecg.modules.system.app.entity.AppContractInfo;
 import org.jeecg.modules.system.app.vo.ContractSignVO;
 import org.springframework.web.bind.annotation.*;
@@ -165,11 +166,9 @@ public class ESignController {
      * @Param
      * @return
      **/
-    @GetMapping("/queryUserSignContractList")
+    @PostMapping("/queryUserSignContractList")
     @Operation(summary = "获取用户签署合同列表")
-    public Result<IPage<ContractSignVO>> queryUserSignContractList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-                                                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-                                                                   @RequestParam(name = "contractName")String contractName){
-        return Result.OK(iESignService.queryUserSignContractList(contractName, pageNo, pageSize));
+    public Result<IPage<ContractSignVO>> queryUserSignContractList(@RequestBody ContractSignDTO contractSignDTO){
+        return Result.OK(iESignService.queryUserSignContractList(contractSignDTO));
     }
 }

+ 2 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IESignService.java

@@ -5,6 +5,7 @@ import org.jeecg.modules.app.dto.SealInfoDTO;
 import org.jeecg.modules.app.dto.SignCallbackDTO;
 import org.jeecg.modules.app.esign.exception.EsignDemoException;
 import org.jeecg.modules.system.app.dto.AppContractInfoDTO;
+import org.jeecg.modules.system.app.dto.ContractSignDTO;
 import org.jeecg.modules.system.app.entity.AppContractInfo;
 import org.jeecg.modules.system.app.entity.AppContractSign;
 import org.jeecg.modules.system.app.vo.ContractSignVO;
@@ -167,5 +168,5 @@ public interface IESignService {
      * @Param
      * @return
      **/
-    IPage<ContractSignVO> queryUserSignContractList(String contractName, int pageNo, int pageSize);
+    IPage<ContractSignVO> queryUserSignContractList(ContractSignDTO contractSignDTO);
 }

+ 4 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/ESignServiceImpl.java

@@ -17,6 +17,7 @@ import org.jeecg.modules.app.esign.fileAndTemplate.FileDemo;
 import org.jeecg.modules.app.esign.sign.SignDemo;
 import org.jeecg.modules.app.service.IESignService;
 import org.jeecg.modules.system.app.dto.AppContractInfoDTO;
+import org.jeecg.modules.system.app.dto.ContractSignDTO;
 import org.jeecg.modules.system.app.entity.AppContractInfo;
 import org.jeecg.modules.system.app.entity.AppContractSign;
 import org.jeecg.modules.system.app.entity.AppOrder;
@@ -680,9 +681,9 @@ public class ESignServiceImpl implements IESignService {
     }
 
     @Override
-    public IPage<ContractSignVO> queryUserSignContractList(String contractName, int pageNo, int pageSize) {
-        Page<ContractSignVO> page = new Page<>(pageNo, pageSize);
-        return appContractSignMapper.queryUserSignContractList(page,contractName);
+    public IPage<ContractSignVO> queryUserSignContractList(ContractSignDTO contractSignDTO) {
+        Page<ContractSignVO> page = new Page<>(contractSignDTO.pageNo, contractSignDTO.pageSize);
+        return appContractSignMapper.queryUserSignContractList(page,contractSignDTO);
     }
 
     public String orgAuthorizedSeal(String orgId) throws EsignDemoException {

+ 22 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/ContractSignDTO.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.system.app.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.system.app.vo.ContractSignVO;
+
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Schema(description = "用户签约合同列表查询入参")
+@Data
+@Accessors(chain = true)
+public class ContractSignDTO extends ContractSignVO {
+    public Integer pageNo;
+    public Integer pageSize;
+    // 签约完成时间范围 (开始)
+    private Date signTimeStart;
+    // 签约完成时间范围 (结束)
+    private Date signTimeEnd;
+}

+ 2 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppContractSignMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.system.app.dto.ContractSignDTO;
 import org.jeecg.modules.system.app.entity.AppContractSign;
 import org.jeecg.modules.system.app.vo.ContractSignVO;
 
@@ -13,8 +14,7 @@ public interface AppContractSignMapper extends BaseMapper<AppContractSign> {
     /**
      * 查询用户待签署合同列表
      * @param page
-     * @param contractName
      * @return
      */
-    IPage<ContractSignVO>  queryUserSignContractList(Page<ContractSignVO> page, @Param("contractName") String contractName);
+    IPage<ContractSignVO>  queryUserSignContractList(Page<ContractSignVO> page, @Param("contractSignDTO") ContractSignDTO contractSignDTO);
 }

+ 31 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppContractSignMapper.xml

@@ -10,7 +10,8 @@
         c.phone,
         a.create_time,
         a.sign_time,
-        a.is_sign
+        a.is_sign,
+        a.sign_flow_id
         FROM nm_contract_sign a
         LEFT JOIN nm_family_members c ON a.family_id = c.id
         LEFT JOIN nm_contract_info b ON a.org_code = b.org_code
@@ -20,8 +21,35 @@
         GROUP BY order_id
         ) o ON a.order_id = o.order_id
         <where>
-            <if test="contractName != null and contractName != ''">
-                AND b.contract_name LIKE CONCAT('%', #{contractName}, '%')
+            <!-- 家庭成员姓名模糊查询 -->
+            <if test="contractSignDTO.fullName != null and contractSignDTO.fullName != ''">
+                AND c.full_name LIKE CONCAT('%', #{contractSignDTO.fullName}, '%')
+            </if>
+
+            <!-- 联系电话模糊查询 -->
+            <if test="contractSignDTO.phone != null and contractSignDTO.phone != ''">
+                AND c.phone LIKE CONCAT('%', #{contractSignDTO.phone}, '%')
+            </if>
+
+            <!-- 签署状态精确匹配 -->
+            <if test="contractSignDTO.isSign != null">
+                AND a.is_sign = #{contractSignDTO.isSign}
+            </if>
+
+            <!-- 创建时间范围查询 -->
+            <if test="contractSignDTO.createTimeStart != null">
+                AND a.create_time &gt;= #{contractSignDTO.createTimeStart}
+            </if>
+            <if test="contractSignDTO.createTimeEnd != null">
+                AND a.create_time &lt;= #{contractSignDTO.createTimeEnd}
+            </if>
+
+            <!-- 签约完成时间范围查询 -->
+            <if test="contractSignDTO.signTimeStart != null">
+                AND a.sign_time &gt;= #{contractSignDTO.signTimeStart}
+            </if>
+            <if test="contractSignDTO.signTimeEnd != null">
+                AND a.sign_time &lt;= #{contractSignDTO.signTimeEnd}
             </if>
         </where>
     </select>

+ 4 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/ContractSignVO.java

@@ -20,7 +20,7 @@ public class ContractSignVO {
     private String fullName;
 
     @Schema(description = "是否签署 0、未签 1、已签")
-    private int isSign;
+    private Integer isSign;
 
     @Schema(description = "联系电话")
     private String phone;
@@ -30,4 +30,7 @@ public class ContractSignVO {
 
     @Schema(description = "签约完成时间")
     private Date signTime;
+
+    @Schema(description = "sign_flow_id")
+    private String signFlowId;
 }