Jelajahi Sumber

电子合同-轮询下载电子合同到oss

ZhangWenQiang 5 tahun lalu
induk
melakukan
70f3d07313

+ 20 - 0
happy-boot-module-econtract/src/main/java/org/jeecg/modules/util/ContractUtil.java

@@ -547,6 +547,26 @@ public class ContractUtil {
     }
 
     /**
+     * 下载合同
+     *
+     * @param docNo
+     * @return
+     */
+    public RestResult downloadContract(String docNo) {
+        RestResult result = new RestResult();
+        ContractDownloadDTO contractDownloadDTO = new ContractDownloadDTO();
+        // 合同编号
+        contractDownloadDTO.setDocNo(docNo);
+        try {
+            result = contractClient().downloadContract(contractDownloadDTO);
+            System.out.println("下载合同====" + result);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+    /**
      * 生成合同编号
      * 保证唯一性,最大 32 位
      *

+ 85 - 0
happy-boot-module-flexjob/src/main/java/org/jeecg/modules/ordermanager/task/ContractDownloadJob.java

@@ -0,0 +1,85 @@
+package org.jeecg.modules.ordermanager.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fdd.api.client.res.RestResult;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.oss.OSSClientUtil;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.common.util.StringUtils;
+import org.jeecg.modules.hwcontract.entity.HwElectronicContract;
+import org.jeecg.modules.hwcontract.service.IHwElectronicContractService;
+import org.jeecg.modules.hwpayment.entity.HwPaymentDetail;
+import org.jeecg.modules.ordermanager.entity.HwOrder;
+import org.jeecg.modules.ordermanager.service.IHwOrderService;
+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 java.io.*;
+import java.util.Calendar;
+import java.util.List;
+
+/**
+ * @Author: zwq
+ * @Description:
+ * @Date: Create in 9:26 2020/4/7
+ */
+@Slf4j
+@Component
+@Service
+public class ContractDownloadJob implements Job {
+    @Autowired
+    private IHwOrderService hwOrderService;
+    @Autowired
+    private ContractUtil contractUtil;
+    @Autowired
+    private IHwElectronicContractService hwElectronicContractService;
+    /**
+     * 上传文件到oss的基础虚拟路径
+     */
+    public static final String USERFILES_BASE_URL = "uploadfiles";
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        log.info(String.format("下载电子合同状态定时器!  时间:" + DateUtils.getTimestamp()));
+        //查询订单表有电子合同id,合同状态为已完成且合同url不为开心oss地址的合同列表
+        QueryWrapper<HwOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.isNotNull("electronic_contract_id");
+        queryWrapper.eq("electronic_contract_status",2);
+        queryWrapper.notLike("work_contract", "/uploadfiles/hpwork/");
+        List<HwOrder> orderList = hwOrderService.list(queryWrapper);
+        for (HwOrder hwOrder : orderList) {
+            HwElectronicContract hwElectronicContract = hwElectronicContractService.getById(hwOrder.getElectronicContractId());
+            try {
+                RestResult result = contractUtil.downloadContract(hwElectronicContract.getContractNo());
+                if (result.isSuccess()) {
+                    InputStream inputStream = (InputStream) result.getData();
+                    //文件上传的业务路径
+                    String uploadPath = "/hpwork/hwcontract";
+                    //获取当前年月
+                    Calendar cal = Calendar.getInstance();
+                    int year = cal.get(Calendar.YEAR);
+                    int month = cal.get(Calendar.MONTH) + 1;
+                    String fileDir = USERFILES_BASE_URL + uploadPath + "/admin" + "/" + year + "/" + month + "/";
+                    fileDir = fileDir + System.nanoTime() + "/";
+                    String fileName = hwElectronicContract.getContractNo() + ".pdf";
+                    OSSClientUtil ossUtil = new OSSClientUtil();
+                    ossUtil.uploadFile2OSS(inputStream, fileDir, fileName);
+
+                    //上传后的文件路径
+                    String filePath = "/" + fileDir + fileName;
+                    hwOrder.setWorkContract(filePath);
+                    hwOrderService.updateById(hwOrder);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}