Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReport/service/CwProjectReportService.java
user5 2 years ago
parent
commit
8c60b21ac5

+ 54 - 13
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReport/controller/CwProjectReportController.java

@@ -1,24 +1,39 @@
 package com.jeeplus.test.cw.projectReport.controller;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Maps;
 import com.jeeplus.aop.logging.annotation.ApiLog;
 import com.jeeplus.common.redis.RedisUtils;
 import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.flowable.model.Flow;
+import com.jeeplus.flowable.service.FlowTaskService;
 import com.jeeplus.sys.constant.enums.LogTypeEnum;
 import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.cw.common.flowable.dto.CommitParamDTO;
 import com.jeeplus.test.cw.projectRecords.domain.CwProjectRecords;
 import com.jeeplus.test.cw.projectRecords.service.dto.CwProjectRecordsDTO;
 import com.jeeplus.test.cw.projectReport.domain.CwProjectReport;
 import com.jeeplus.test.cw.projectReport.domain.CwProjectReportData;
 import com.jeeplus.test.cw.projectReport.domain.CwProjectReportSignature;
+import com.jeeplus.test.cw.projectReport.mapper.CwProjectReportSignatureMapper;
+import com.jeeplus.test.cw.projectReport.mapper.ProjectReportWorkAttachmentMapper;
 import com.jeeplus.test.cw.projectReport.service.CwProjectReportService;
 import com.jeeplus.test.cw.projectReport.service.dto.CwProjectReportDTO;
 import com.jeeplus.test.cw.projectReport.service.dto.CwProjectReportSignatureDTO;
 import com.jeeplus.test.cw.workClientInfo.service.dto.CwWorkClientBaseDTO;
+import com.jeeplus.test.oss.domain.WorkAttachment;
 import com.jeeplus.test.signature.utils.SignaturePostUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.flowable.engine.TaskService;
+import org.flowable.task.api.Task;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -26,6 +41,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
@@ -42,6 +58,12 @@ public class CwProjectReportController {
     private CwProjectReportService projectReportService;
     @Autowired
     private RedisUtils redisUtils;
+    @Resource
+    private ProjectReportWorkAttachmentMapper attachmentMapper;
+    @Autowired
+    private FlowTaskService flowTaskService;
+    @Autowired
+    private TaskService taskService;
 
     /**
      * 保存财务报告信息-流程
@@ -132,15 +154,25 @@ public class CwProjectReportController {
     @ApiLog(value = "签章流程审核通过", type = LogTypeEnum.SAVE)
     @PostMapping("saveFlowableParam")
     public ResponseEntity<String> saveFlowableParam(@Valid @RequestBody CwProjectReportData cwProjectReportData) {
-        CwProjectReportData cwProjectReportDto = projectReportService.queryById(cwProjectReportData.getId());
-        // 获取签章页面url
-        String mobile = UserUtils.getCurrentUserDTO().getMobile();
-        String signatureContractUrl = SignaturePostUtil.getSignatureContractUrl(cwProjectReportDto.getSignatureContractId(), mobile);
-        // 将数据存储到redis中,key为contractId
-        cwProjectReportData.getCommitParamDTO().setVars(cwProjectReportDto);
-        redisUtils.set("cw_report_signature_" + cwProjectReportDto.getSignatureContractId(),cwProjectReportData.getCommitParamDTO());
-        redisUtils.expire("cw_report_signature_" + cwProjectReportDto.getSignatureContractId(),24, TimeUnit.HOURS);
-        return ResponseEntity.ok(signatureContractUrl);
+        //查询报告文件信息(电子章)
+        List<WorkAttachment> fileList = attachmentMapper.selectWorkAttachmentByReportId(cwProjectReportData.getId());
+        // 有电子章的附件时,走签章流程
+        if (CollectionUtil.isNotEmpty(fileList)) {
+            CwProjectReportData cwProjectReportDto = projectReportService.queryById(cwProjectReportData.getId());
+            // 获取签章页面url
+            String mobile = UserUtils.getCurrentUserDTO().getMobile();
+            String signatureContractUrl = SignaturePostUtil.getSignatureContractUrl(cwProjectReportDto.getSignatureContractId(), mobile);
+            // 将数据存储到redis中,key为contractId
+            cwProjectReportData.getCommitParamDTO().setVars(cwProjectReportDto);
+            redisUtils.set("cw_report_signature_" + cwProjectReportDto.getSignatureContractId(),cwProjectReportData.getCommitParamDTO());
+            redisUtils.expire("cw_report_signature_" + cwProjectReportDto.getSignatureContractId(),24, TimeUnit.HOURS);
+            return ResponseEntity.ok(signatureContractUrl);
+        } else {
+            // 没有电子章的附件时,走正常审核流程
+            // 流程审核通过
+            projectReportService.commitFlowable(cwProjectReportData);
+            return ResponseEntity.ok("操作成功");
+        }
     }
 
     /**
@@ -151,13 +183,22 @@ public class CwProjectReportController {
     @ApiLog(value = "签章流程送审", type = LogTypeEnum.SAVE)
     @PostMapping("saveData")
     public ResponseEntity<String> saveData(@Valid @RequestBody CwProjectReportData cwProjectReportData) {
-        Map<String, Object> signatureContractId = projectReportService.createSignatureContractId(cwProjectReportData);
-        boolean bool = (boolean)signatureContractId.get("success");
-        if (bool) {
+        //查询报告文件信息(电子章)
+        List<WorkAttachment> fileList = attachmentMapper.selectWorkAttachmentByReportId(cwProjectReportData.getId());
+        if (CollectionUtil.isNotEmpty(fileList)) {
+            // 有电子章的附件时,走签章流程
+            Map<String, Object> signatureContractId = projectReportService.createSignatureContractId(cwProjectReportData);
+            boolean bool = (boolean)signatureContractId.get("success");
+            if (bool) {
+                String signatureId = projectReportService.getSignature(cwProjectReportData.getId());
+                return ResponseUtil.newInstance().add("businessTable", "cw_project_report_signature").add("businessId", signatureId).ok ("操作成功");
+            }
+            return ResponseEntity.badRequest().body((String) signatureContractId.get("message"));
+        } else {
+            // 没有电子章的附件时,走正常审核流程
             String signatureId = projectReportService.getSignature(cwProjectReportData.getId());
             return ResponseUtil.newInstance().add("businessTable", "cw_project_report_signature").add("businessId", signatureId).ok ("操作成功");
         }
-        return ResponseEntity.badRequest().body("操作失败");
     }
 
     /**

+ 16 - 3
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReport/controller/CwProjectReportSignatureCallBackController.java

@@ -1,6 +1,7 @@
 package com.jeeplus.test.cw.projectReport.controller;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -106,6 +107,7 @@ public class CwProjectReportSignatureCallBackController {
         }
         // 流程节点审核通过
         flowTaskService.auditSave(flow, vars);
+        CwProjectReport cwProjectReport = cwProjectReportService.list(new QueryWrapper<CwProjectReport>().lambda().eq(CwProjectReport::getSignatureContractId, presignCallBack.getContractId())).get(0);
         // 指定下一步处理人
         Task task = taskService.createTaskQuery().processInstanceId(flow.getProcInsId()).active().singleResult();
         // task为null时,则当前节点为最后一个审核节点
@@ -113,11 +115,22 @@ public class CwProjectReportSignatureCallBackController {
             if(StringUtils.isNotBlank(flow.getAssignee ())){
                 taskService.setAssignee(task.getId(), flow.getAssignee ());
             }
+            if(ObjectUtil.isNotEmpty(cwProjectReport)) {
+                CwProjectReportSignature cwProjectReportSignature = cwProjectReportSignatureMapper.selectOne(new QueryWrapper<CwProjectReportSignature>().lambda()
+                        .eq(CwProjectReportSignature::getReportId, cwProjectReport.getId())
+                        .eq(CwProjectReportSignature::getType, cwProjectReport.getSignatureType())
+                );
+                if ("2".equals(cwProjectReportSignature.getStatus())){
+                    cwProjectReportSignature.setStatus("6");
+                    cwProjectReportSignatureMapper.updateById(cwProjectReportSignature);
+                }else if ("6".equals(cwProjectReportSignature.getStatus())){
+                    cwProjectReportSignature.setStatus("7");
+                    cwProjectReportSignatureMapper.updateById(cwProjectReportSignature);
+                }
+            }
         } else {
             // 修改数据流程状态为->审核通过
-            List<CwProjectReport> list = cwProjectReportService.list(new QueryWrapper<CwProjectReport>().lambda().eq(CwProjectReport::getSignatureContractId, presignCallBack.getContractId()));
-            if (CollectionUtil.isNotEmpty(list)){
-                CwProjectReport cwProjectReport = list.get(0);
+            if(ObjectUtil.isNotEmpty(cwProjectReport)) {
                 CwProjectReportSignature cwProjectReportSignature = cwProjectReportSignatureMapper.selectOne(new QueryWrapper<CwProjectReportSignature>().lambda()
                         .eq(CwProjectReportSignature::getReportId, cwProjectReport.getId())
                         .eq(CwProjectReportSignature::getType, cwProjectReport.getSignatureType())

+ 72 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReport/service/CwProjectReportService.java

@@ -4,13 +4,17 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.google.gson.Gson;
 import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.flowable.model.Flow;
+import com.jeeplus.flowable.service.FlowTaskService;
 import com.jeeplus.sys.domain.User;
 import com.jeeplus.sys.service.UserService;
 import com.jeeplus.sys.mapper.UserMapper;
@@ -18,6 +22,7 @@ import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.sys.utils.Global;
 import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.cw.common.flowable.dto.CommitParamDTO;
 import com.jeeplus.test.cw.contractRegistration.domain.ContractInfo;
 import com.jeeplus.test.cw.projectRecords.domain.CwProjectRecords;
 import com.jeeplus.test.cw.projectRecords.service.dto.CwProjectRecordsDTO;
@@ -38,7 +43,10 @@ import com.jeeplus.test.oss.service.OSSClientService;
 import com.jeeplus.test.oss.service.OssService;
 import com.jeeplus.test.signature.domain.*;
 import com.jeeplus.test.signature.utils.SignaturePostUtil;
+import org.apache.commons.beanutils.BeanMap;
 import org.apache.commons.collections4.CollectionUtils;
+import org.flowable.engine.TaskService;
+import org.flowable.task.api.Task;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.connection.jedis.JedisUtils;
@@ -102,6 +110,12 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
     @Resource
     private CwProjectReportSignatureMapper cwProjectReportSignatureMapper;
 
+    @Autowired
+    private FlowTaskService flowTaskService;
+
+    @Autowired
+    private TaskService taskService;
+
     /**
      * 保存项目以及其他相关信息
      * @param reportData
@@ -997,6 +1011,64 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
         return cwProjectReportSignature.getId();
     }
 
+    public void commitFlowable(CwProjectReportData cwProjectReportData) {
+        CwProjectReportData cwProjectReportDto = this.queryById(cwProjectReportData.getId());
+        cwProjectReportData.getCommitParamDTO().setVars(cwProjectReportDto);
+        CommitParamDTO<CwProjectReportData> commitParamDTO = cwProjectReportData.getCommitParamDTO();
+        Map<String, Object> vars = Maps.newHashMap();
+        Flow flow = new Flow();
+        flow.setTaskId(commitParamDTO.getTaskId());
+        flow.setTaskDefKey(commitParamDTO.getTaskDefKey());
+        flow.setProcInsId(commitParamDTO.getProcInsId());
+        flow.setProcDefId(commitParamDTO.getProcDefId());
+        flow.setAssignee(commitParamDTO.getAssignee());
+        flow.setComment(commitParamDTO.getComment());
+        String var = JSON.toJSONString(commitParamDTO.getVars());
+        Map<String, String> stringObjectMap = JSON.parseObject(var, new TypeReference<Map<String, String>>() {});
+        for (Map.Entry<String, String> entry : stringObjectMap.entrySet()) {
+            String value = entry.getValue();
+            if("true".equals(value) || "false".equals(value)){
+                vars.put(entry.getKey(), Boolean.valueOf(value).booleanValue());
+            }else{
+                vars.put(entry.getKey(), value);
+            }
+        }
+        // 流程节点审核通过
+        flowTaskService.auditSave(flow, vars);
+        CwProjectReport report = this.getOne(new QueryWrapper<CwProjectReport>().lambda().eq(CwProjectReport::getId, cwProjectReportData.getId()));
+        // 指定下一步处理人
+        Task task = taskService.createTaskQuery().processInstanceId(flow.getProcInsId()).active().singleResult();
+        // task为null时,则当前节点为最后一个审核节点
+        if(task != null){
+            if(org.apache.commons.lang3.StringUtils.isNotBlank(flow.getAssignee ())){
+                taskService.setAssignee(task.getId(), flow.getAssignee ());
+            }
+            if(ObjectUtil.isNotEmpty(report)) {
+                CwProjectReportSignature cwProjectReportSignature = cwProjectReportSignatureMapper.selectOne(new QueryWrapper<CwProjectReportSignature>().lambda()
+                        .eq(CwProjectReportSignature::getReportId, report.getId())
+                        .eq(CwProjectReportSignature::getType, report.getSignatureType())
+                );
+                if ("2".equals(cwProjectReportSignature.getStatus())){
+                    cwProjectReportSignature.setStatus("6");
+                    cwProjectReportSignatureMapper.updateById(cwProjectReportSignature);
+                }else if ("6".equals(cwProjectReportSignature.getStatus())){
+                    cwProjectReportSignature.setStatus("7");
+                    cwProjectReportSignatureMapper.updateById(cwProjectReportSignature);
+                }
+            }
+        } else {
+            // 修改数据流程状态为->审核通过
+            if (ObjectUtil.isNotEmpty(report)){
+                CwProjectReportSignature cwProjectReportSignature = cwProjectReportSignatureMapper.selectOne(new QueryWrapper<CwProjectReportSignature>().lambda()
+                        .eq(CwProjectReportSignature::getReportId, report.getId())
+                        .eq(CwProjectReportSignature::getType, report.getSignatureType())
+                );
+                cwProjectReportSignature.setStatus("5");
+                cwProjectReportSignatureMapper.updateById(cwProjectReportSignature);
+            }
+        }
+    }
+
     public CwProjectReportData queryByContractId(String contractId){
         CwProjectReportData reportData = reportMapper.queryByContractId(contractId);
         return reportData;