ソースを参照

电子合同-状态轮询优化

ZhangWenQiang 5 年 前
コミット
18e44ad877

+ 10 - 9
happy-boot-module-econtract/src/main/java/org/jeecg/modules/hwcontract/mapper/xml/HwElectronicContractMapper.xml

@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.hwcontract.mapper.HwElectronicContractMapper">
-
-    <select id="findListForStatus" resultType="org.jeecg.modules.hwcontract.entity.HwElectronicContract">
-      select a.*
-      from hw_electronic_contract a
-      where a.status = 1 or a.status = 6
-    </select>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.hwcontract.mapper.HwElectronicContractMapper">
+
+    <select id="findListForStatus" resultType="org.jeecg.modules.hwcontract.entity.HwElectronicContract">
+      select a.*
+      from hw_electronic_contract a
+      left join hw_order o on a.id = o.electronic_contract_id
+      where a.status = 1 or a.status = 6 and o.electronic_contract_id is not null
+    </select>
 </mapper>

+ 138 - 144
happy-boot-module-flexjob/src/main/java/org/jeecg/modules/ordermanager/task/ContractJob.java

@@ -1,144 +1,138 @@
-package org.jeecg.modules.ordermanager.task;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.fdd.api.client.res.RestResult;
-import lombok.extern.slf4j.Slf4j;
-import org.jeecg.common.util.DateUtils;
-import org.jeecg.modules.hwcontract.entity.HwElectronicContract;
-import org.jeecg.modules.hwcontract.service.IHwElectronicContractService;
-import org.jeecg.modules.ordermanager.entity.HwOrder;
-import org.jeecg.modules.ordermanager.entity.HwOrderProcessDetail;
-import org.jeecg.modules.ordermanager.mapper.HwOrderMapper;
-import org.jeecg.modules.ordermanager.service.IHwOrderProcessDetailService;
-import org.jeecg.modules.ordermanager.service.IHwOrderService;
-import org.jeecg.modules.util.ContractConst;
-import org.jeecg.modules.util.ContractUtil;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @Author: zwq
- * @Description:电子合同轮询定时器-查询合同签署状态详情
- * @Date: Create in 20:21 2019/11/14
- */
-@Slf4j
-@Component
-@Service
-public class ContractJob implements Job {
-    @Autowired
-    private IHwElectronicContractService hwElectronicContractService;
-    @Autowired
-    private ContractUtil contractUtil;
-    @Autowired
-    private IHwOrderService hwOrderService;
-    @Autowired
-    private IHwOrderProcessDetailService hwOrderProcessDetailService;
-    @Resource
-    private HwOrderMapper hwOrderMapper;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-        log.info(String.format(" 查询电子合同状态定时器!  时间:" + DateUtils.getTimestamp()));
-        //电子合同表未到终态(1.待他人签署;6.已生成未发起)
-        List<HwElectronicContract> hwElectronicContractList = hwElectronicContractService.findListForStatus();
-        for (int i = 0; i < hwElectronicContractList.size(); i++) {
-            HwElectronicContract hwElectronicContract = hwElectronicContractList.get(i);
-            //查询合同状态
-            RestResult result = contractUtil.signDetail(hwElectronicContract.getContractNo());
-            if (ContractConst.CODE_1.equals(result.getCode())) {
-                JSONObject jsonObject = JSONObject.parseObject(result.getData().toString());
-                System.out.println("status=========" + jsonObject.getString("status"));
-                //更新订单电子合同状态
-                String status = jsonObject.getString("status");
-                //签署方列表信息
-                String contractSignerList = jsonObject.getString("contractSignerList");
-                JSONArray jsonArray = JSONArray.parseArray(contractSignerList);
-                for (int k = 0; k < jsonArray.size(); k++) {
-                    JSONObject jsonObject1 = jsonArray.getJSONObject(k);
-                    System.out.println("signerRole=========" + jsonObject1.getString("signerRole"));
-                    System.out.println("signStatus=========" + jsonObject1.getString("signStatus"));
-                    Integer isSender = jsonObject1.getInteger("isSender");
-                    //签署人角色,1-个人,2-企业, 3-个人代表企业
-                    Integer signerRole = jsonObject1.getInteger("signerRole");
-                    //签署状态 -1 不需要签署,0 待签,1 已 签,2 已驳回 ,3 已转发
-                    Integer signStatus = jsonObject1.getInteger("signStatus");
-                    //非发起人 && 状态为待签
-                    if (isSender != 1 && "1".equals(status)) {
-                        if (signerRole == 1 && signStatus == 0) {
-                            //个人未签
-                            status = "6";
-                            break;
-                        } else if (signerRole == 2 && signStatus == 0) {
-                            //企业未签
-                            status = "1";
-                            break;
-                        }
-                    }
-                }
-
-                QueryWrapper<HwOrder> queryWrapper = new QueryWrapper<>();
-                queryWrapper.eq("electronic_contract_id", hwElectronicContract.getId());
-                List<HwOrder> hwOrderList = hwOrderService.list(queryWrapper);
-                HwOrder hwOrder = new HwOrder();
-                if (hwOrderList.size() > 0) {
-                    hwOrder = hwOrderList.get(0);
-                    hwOrder.setElectronicContractStatus(Integer.parseInt(status));
-                    hwOrderService.updateById(hwOrder);
-                }
-                //更新电子合同表
-                hwElectronicContract.setStatus(Integer.parseInt(status));
-                hwElectronicContractService.updateById(hwElectronicContract);
-                //状态:待他人签署,企业自动签署
-                if ("1".equals(status)) {
-                    RestResult restResult = contractUtil.autoSign(hwElectronicContract);
-                    if (ContractConst.CODE_1.equals(restResult.getCode())) {
-                        JSONObject jsonObjectAuto = JSONObject.parseObject(restResult.getData().toString());
-                        System.out.println("downloadUrl===========" + jsonObjectAuto.getString("downloadUrl"));
-                        System.out.println("viewUrl===========" + jsonObjectAuto.getString("viewUrl"));
-                        //更新电子合同表
-                        hwElectronicContract.setStatus(2);
-                        hwElectronicContract.setDownloadUrl(jsonObjectAuto.getString("downloadUrl"));
-                        hwElectronicContract.setViewUrl(jsonObjectAuto.getString("downloadUrl"));
-                        hwElectronicContractService.updateById(hwElectronicContract);
-                        //确认订单
-                        hwOrder.setStatus(2);
-                        hwOrder.setElectronicContractStatus(2);
-                        hwOrder.setWorkContract(jsonObjectAuto.getString("downloadUrl"));
-                        hwOrderService.updateById(hwOrder);
-                        //同步订单明细表
-                        HwOrderProcessDetail hwOrderProcessDetail = new HwOrderProcessDetail();
-                        hwOrderProcessDetail.setOrderId(hwOrder.getId());
-                        hwOrderProcessDetail.setRequirementId(hwOrder.getRequirementId());
-                        hwOrderProcessDetail.setUserId(hwOrder.getUserId());
-                        hwOrderProcessDetail.setStatus(2);
-                        //如果是分期结算
-                        hwOrder = hwOrderMapper.getOrder(String.valueOf(hwOrder.getId()));
-                        if (hwOrder.getHwRequirement().getSettlementMethod() == 1) {
-                            int count = hwOrderProcessDetailService.getCountByOrderId(hwOrder.getId());
-                            //分期期数大于当前服务期数
-                            if (hwOrder.getHwRequirement().getStage() > count) {
-                                hwOrderProcessDetail.setServiceStage(count + 1);
-                            }
-                        }
-                        hwOrderProcessDetail.setGenerateTime(new Date());
-                        hwOrderProcessDetail.setGenerateBy(hwOrder.getCreateBy());
-                        hwOrderProcessDetail.setSysOrgCode(hwOrder.getSysOrgCode());
-                        hwOrderProcessDetailService.saveDetail(hwOrderProcessDetail);
-                    }
-                }
-            }
-        }
-    }
-}
+package org.jeecg.modules.ordermanager.task;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fdd.api.client.res.RestResult;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.hwcontract.entity.HwElectronicContract;
+import org.jeecg.modules.hwcontract.service.IHwElectronicContractService;
+import org.jeecg.modules.ordermanager.entity.HwOrder;
+import org.jeecg.modules.ordermanager.entity.HwOrderProcessDetail;
+import org.jeecg.modules.ordermanager.mapper.HwOrderMapper;
+import org.jeecg.modules.ordermanager.service.IHwOrderProcessDetailService;
+import org.jeecg.modules.ordermanager.service.IHwOrderService;
+import org.jeecg.modules.util.ContractConst;
+import org.jeecg.modules.util.ContractUtil;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: zwq
+ * @Description:电子合同轮询定时器-查询合同签署状态详情
+ * @Date: Create in 20:21 2019/11/14
+ */
+@Slf4j
+@Component
+@Service
+public class ContractJob implements Job {
+    @Autowired
+    private IHwElectronicContractService hwElectronicContractService;
+    @Autowired
+    private ContractUtil contractUtil;
+    @Autowired
+    private IHwOrderService hwOrderService;
+    @Autowired
+    private IHwOrderProcessDetailService hwOrderProcessDetailService;
+    @Resource
+    private HwOrderMapper hwOrderMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        log.info(String.format(" 查询电子合同状态定时器!  时间:" + DateUtils.getTimestamp()));
+        //电子合同表未到终态(1.待他人签署;6.已生成未发起)
+        List<HwElectronicContract> hwElectronicContractList = hwElectronicContractService.findListForStatus();
+        for (int i = 0; i < hwElectronicContractList.size(); i++) {
+            HwElectronicContract hwElectronicContract = hwElectronicContractList.get(i);
+            //查询合同状态
+            RestResult result = contractUtil.signDetail(hwElectronicContract.getContractNo());
+            if (ContractConst.CODE_1.equals(result.getCode())) {
+                JSONObject jsonObject = JSONObject.parseObject(result.getData().toString());
+                System.out.println("status=========" + jsonObject.getString("status"));
+                //更新订单电子合同状态
+                String status = jsonObject.getString("status");
+                //签署方列表信息
+                String contractSignerList = jsonObject.getString("contractSignerList");
+                JSONArray jsonArray = JSONArray.parseArray(contractSignerList);
+                for (int k = 0; k < jsonArray.size(); k++) {
+                    JSONObject jsonObject1 = jsonArray.getJSONObject(k);
+                    System.out.println("signerRole=========" + jsonObject1.getString("signerRole"));
+                    System.out.println("signStatus=========" + jsonObject1.getString("signStatus"));
+                    Integer isSender = jsonObject1.getInteger("isSender");
+                    //签署人角色,1-个人,2-企业, 3-个人代表企业
+                    Integer signerRole = jsonObject1.getInteger("signerRole");
+                    //签署状态 -1 不需要签署,0 待签,1 已 签,2 已驳回 ,3 已转发
+                    Integer signStatus = jsonObject1.getInteger("signStatus");
+                    //非发起人 && 状态为待签
+                    if (isSender != 1 && "1".equals(status)) {
+                        if (signerRole == 1 && signStatus == 0) {
+                            //个人未签
+                            status = "6";
+                            break;
+                        } else if (signerRole == 2 && signStatus == 0) {
+                            //企业未签
+                            status = "1";
+                            break;
+                        }
+                    }
+                }
+                QueryWrapper<HwOrder> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("electronic_contract_id", hwElectronicContract.getId());
+                List<HwOrder> hwOrderList = hwOrderService.list(queryWrapper);
+                HwOrder hwOrder = new HwOrder();
+                if (hwOrderList.size() > 0) {
+                    hwOrder = hwOrderList.get(0);
+                }
+                //状态:待他人签署,企业自动签署
+                if ("1".equals(status)) {
+                    RestResult restResult = contractUtil.autoSign(hwElectronicContract);
+                    if (ContractConst.CODE_1.equals(restResult.getCode())) {
+                        JSONObject jsonObjectAuto = JSONObject.parseObject(restResult.getData().toString());
+                        System.out.println("downloadUrl===========" + jsonObjectAuto.getString("downloadUrl"));
+                        System.out.println("viewUrl===========" + jsonObjectAuto.getString("viewUrl"));
+                        //更新电子合同表
+                        hwElectronicContract.setStatus(2);
+                        hwElectronicContract.setDownloadUrl(jsonObjectAuto.getString("downloadUrl"));
+                        hwElectronicContract.setViewUrl(jsonObjectAuto.getString("downloadUrl"));
+                        hwElectronicContractService.updateById(hwElectronicContract);
+                        //确认订单
+                        hwOrder.setStatus(2);
+                        hwOrder.setElectronicContractStatus(2);
+                        hwOrder.setWorkContract(jsonObjectAuto.getString("downloadUrl"));
+                        hwOrderService.updateById(hwOrder);
+                        //同步订单明细表
+                        HwOrderProcessDetail hwOrderProcessDetail = new HwOrderProcessDetail();
+                        hwOrderProcessDetail.setOrderId(hwOrder.getId());
+                        hwOrderProcessDetail.setRequirementId(hwOrder.getRequirementId());
+                        hwOrderProcessDetail.setUserId(hwOrder.getUserId());
+                        hwOrderProcessDetail.setStatus(2);
+                        //如果是分期结算
+                        hwOrder = hwOrderMapper.getOrder(String.valueOf(hwOrder.getId()));
+                        if (hwOrder.getHwRequirement().getSettlementMethod() == 1) {
+                            int count = hwOrderProcessDetailService.getCountByOrderId(hwOrder.getId());
+                            //分期期数大于当前服务期数
+                            if (hwOrder.getHwRequirement().getStage() > count) {
+                                hwOrderProcessDetail.setServiceStage(count + 1);
+                            }
+                        }
+                        hwOrderProcessDetail.setGenerateTime(new Date());
+                        hwOrderProcessDetail.setGenerateBy(hwOrder.getCreateBy());
+                        hwOrderProcessDetail.setSysOrgCode(hwOrder.getSysOrgCode());
+                        hwOrderProcessDetailService.saveDetail(hwOrderProcessDetail);
+                    }
+                }
+            }
+        }
+    }
+}