Преглед изворни кода

fix: 当审批单号重复时为更新操作

huangzqa пре 3 година
родитељ
комит
c1b898a3db

+ 1 - 1
approve-api/src/main/java/com/dragonsoft/dcuc/approve/facade/api/IApiV1ApproveFacade.java

@@ -166,7 +166,7 @@ public interface IApiV1ApproveFacade {
      */
     @ApiOperation(value = "审批信息报送", notes = "审批信息报送")
     @RequestMapping(value = "api/v1/approve-upload", method = RequestMethod.POST)
-    ResponseDTO<String> approveUpload(@RequestBody List<ApproveRecordReportReqVO> approveRecordList);
+    ResponseStatus approveUpload(@RequestBody List<ApproveRecordReportReqVO> approveRecordList);
 
     /**
      * 流程信息

+ 2 - 2
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/business/IApproveUploadBusiness.java

@@ -1,7 +1,7 @@
 package com.dragonsoft.dcuc.approve.business;
 
 import com.dragonsoft.dcuc.approve.model.req.ApproveRecordReportReqVO;
-import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 
 import java.util.List;
 
@@ -18,7 +18,7 @@ public interface IApproveUploadBusiness {
      * @param approveRecordList 审批信息
      * @return 状态
      */
-    ResponseDTO<String> approveUpload(List<ApproveRecordReportReqVO> approveRecordList);
+    ResponseStatus approveUpload(List<ApproveRecordReportReqVO> approveRecordList);
 
 
     /**

+ 80 - 70
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/business/impl/ApproveUploadBusinessImpl.java

@@ -3,7 +3,6 @@ package com.dragonsoft.dcuc.approve.business.impl;
 import com.alibaba.excel.util.DateUtils;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.dragoninfo.dcuc.common.utils.ResponseUtil;
 import com.dragonsoft.approve.common.ErrorCode;
 import com.dragonsoft.dcuc.approve.business.IApproveUploadBusiness;
 import com.dragonsoft.dcuc.approve.enumresources.ApproveResultEnum;
@@ -21,7 +20,7 @@ import com.dragonsoft.dcuc.approve.service.IApproveActHiTaskService;
 import com.dragonsoft.dcuc.approve.service.IApproveCirculationService;
 import com.dragonsoft.dcuc.approve.service.IApproveQueryRelationService;
 import com.dragonsoft.dcuc.approve.service.IApproveRecordService;
-import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
 import com.dragonsoft.duceap.base.exception.ApplicationException;
 import com.dragonsoft.duceap.commons.util.enums.EnumUtils;
@@ -31,10 +30,11 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
 
+import javax.validation.constraints.NotBlank;
 import java.sql.Timestamp;
 import java.text.ParseException;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -65,83 +65,93 @@ public class ApproveUploadBusinessImpl implements IApproveUploadBusiness {
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public ResponseDTO<String> approveUpload(List<ApproveRecordReportReqVO> approveRecordList) {
+    public ResponseStatus approveUpload(List<ApproveRecordReportReqVO> approveRecordList) {
         logger.info("审批单信息保存开始,数据推送条数:【{}】", approveRecordList.size());
-        ApproveRecordInfo approveRecordInfo = new ApproveRecordInfo();
         try {
-            if (!approveRecordList.isEmpty()) {
-                //审批单信息处理
-                approveRecordList.forEach(
-                        approveRecord -> {
+            for (ApproveRecordReportReqVO approveRecord : approveRecordList) {
+                @NotBlank String oldApproveNo = approveRecord.getApproveNo();
+                @NotBlank String appCode = approveRecord.getAppCode();
+                String newApproveNo = buildNewApproveNo(appCode, oldApproveNo);
+                ApproveRecordInfo approveRecordInfo = approveRecordService.selectByApproveNo(newApproveNo);
+                if (approveRecordInfo == null) {
+                    approveRecordInfo = new ApproveRecordInfo();
+                }
 
-                            try {
-                                BeanUtils.copyProperties(approveRecord, approveRecordInfo);
-                                approveRecordInfo.setBusinessCode(approveRecord.getProcessNo());
-                                approveRecordInfo.setIsDeleted(BooleanEnum.FALSE.getValue());
-                                approveRecordInfo.setCreateUser(approveRecord.getApplicantIdcard());
-                                approveRecordInfo.setCreateTime(DateUtils.parseDate(approveRecord.getApplyTime(), DateUtils.DATE_FORMAT_19));
-                                approveRecordInfo.setProcessTitle(approveRecord.getApproveTitle());
-                                approveRecordInfo.setTaskName("结束");
-                                approveRecordInfo.setTaskCode("end");
-                                approveRecordService.save(approveRecordInfo);
-                                ApproveQueryRelation approveQueryRelation = new ApproveQueryRelation();
-                                BeanUtils.copyProperties(approveRecord, approveQueryRelation);
-                                approveQueryRelation.setIsDeleted(BooleanEnum.FALSE.getValue());
-                                approveQueryRelation.setCreateUser(approveRecord.getApplicantIdcard());
-                                approveQueryRelation.setCreateTime(DateUtils.parseDate(approveRecord.getApplyTime(), DateUtils.DATE_FORMAT_19));
-                                //保存关联关系
-                                approveQueryRelation.setApproveRecordId(approveRecordInfo.getId());
-                                approveQueryRelationService.save(approveQueryRelation);
-                                //审批单包含流转记录处理
-                                if (!ObjectUtils.isEmpty(approveRecord.getApproveCirculationList())) {
-                                    approveRecord.getApproveCirculationList().forEach(
-                                            approveCirculation -> {
-                                                ApproveCirculationInfo approveCirculationInfo = new ApproveCirculationInfo();
-                                                BeanUtils.copyProperties(approveCirculation, approveCirculationInfo);
-                                                approveCirculationInfo.setApproveNo(approveRecordInfo.getApproveNo());
-                                                approveCirculationInfo.setIsDeleted(BooleanEnum.FALSE.getValue());
-                                                approveCirculationInfo.setCreateUser(approveCirculation.getOperateUserId());
-                                                approveCirculationInfo.setCreateTime(Timestamp.valueOf(approveCirculation.getOperateTime()));
-                                                //保存关联关系
-                                                approveCirculationInfo.setApproveRecordId(approveRecordInfo.getId());
-                                                approveCirculationService.save(approveCirculationInfo);
-                                                //将审批记录转换成已办数据
-                                                ApproveActHiTask actHiTask = new ApproveActHiTask();
-                                                actHiTask.setApplyRecordId(approveRecordInfo.getId());
-                                                actHiTask.setBusinessCode(approveRecordInfo.getBusinessCode());
-                                                actHiTask.setBusinessName(approveRecordInfo.getProcessName());
-                                                actHiTask.setTaskId(approveCirculationInfo.getTaskId());
-                                                actHiTask.setTaskCode(approveCirculationInfo.getNodeNo());
-                                                actHiTask.setTaskName(approveCirculationInfo.getNodeName());
-                                                actHiTask.setOperateUserIdcard(approveCirculationInfo.getOperateUserId());
-                                                actHiTask.setOperateUserName(approveCirculationInfo.getOperateUserName());
-                                                actHiTask.setOperateType(approveCirculationInfo.getOperateType());
-                                                actHiTask.setProcessInstanceId(approveRecordInfo.getProcessInstanceId());
-                                                try {
-                                                    actHiTask.setOperateTime(DateUtils.parseDate(approveCirculationInfo.getOperateTime(), DateUtils.DATE_FORMAT_19));
-                                                } catch (ParseException ignored) {
+                @NotBlank String applicantIdcard = approveRecord.getApplicantIdcard();
+                Date applyTimeDate = DateUtils.parseDate(approveRecord.getApplyTime(), DateUtils.DATE_FORMAT_19);
 
-                                                }
-                                                actHiTask.setDeleted(BooleanEnum.FALSE.getValue());
-                                                approveActHiTaskService.save(actHiTask);
-                                            }
-                                    );
-                                }
-                            } catch (ParseException e) {
-                                e.printStackTrace();
-                            }
 
-                        }
-                );
+                BeanUtils.copyProperties(approveRecord, approveRecordInfo);
+                approveRecordInfo.setBusinessCode(approveRecord.getProcessNo());
+                approveRecordInfo.setIsDeleted(BooleanEnum.FALSE.getValue());
+                approveRecordInfo.setCreateUser(applicantIdcard);
+                approveRecordInfo.setCreateTime(applyTimeDate);
+                approveRecordInfo.setProcessTitle(approveRecord.getApproveTitle());
+                approveRecordInfo.setTaskName("结束");
+                approveRecordInfo.setTaskCode("end");
+
+                approveRecordInfo.setApproveNo(newApproveNo);
+                approveRecordInfo.setCreateUser(applicantIdcard);
+                approveRecordService.save(approveRecordInfo);
+                ApproveQueryRelation approveQueryRelation = new ApproveQueryRelation();
+                BeanUtils.copyProperties(approveRecord, approveQueryRelation);
+                approveQueryRelation.setIsDeleted(BooleanEnum.FALSE.getValue());
+                approveQueryRelation.setCreateUser(applicantIdcard);
+                approveQueryRelation.setCreateTime(applyTimeDate);
+                //保存关联关系
+                approveQueryRelation.setApproveRecordId(approveRecordInfo.getId());
+                approveQueryRelationService.save(approveQueryRelation);
+                //审批单包含流转记录处理
+                List<ApproveCirculationReqVO> approveCirculationList = approveRecord.getApproveCirculationList();
+                for (ApproveCirculationReqVO approveCirculation : approveCirculationList) {
+                    ApproveCirculationInfo approveCirculationInfo = new ApproveCirculationInfo();
+                    BeanUtils.copyProperties(approveCirculation, approveCirculationInfo);
+                    approveCirculationInfo.setApproveNo(newApproveNo);
+                    approveCirculationInfo.setIsDeleted(BooleanEnum.FALSE.getValue());
+                    approveCirculationInfo.setCreateUser(approveCirculation.getOperateUserId());
+                    approveCirculationInfo.setCreateTime(Timestamp.valueOf(approveCirculation.getOperateTime()));
+                    //保存关联关系
+                    approveCirculationInfo.setApproveRecordId(approveRecordInfo.getId());
+                    approveCirculationService.save(approveCirculationInfo);
+                    //将审批记录转换成已办数据
+                    ApproveActHiTask actHiTask = new ApproveActHiTask();
+                    actHiTask.setApplyRecordId(approveRecordInfo.getId());
+                    actHiTask.setBusinessCode(approveRecordInfo.getBusinessCode());
+                    actHiTask.setBusinessName(approveRecordInfo.getProcessName());
+                    actHiTask.setTaskId(approveCirculationInfo.getTaskId());
+                    actHiTask.setTaskCode(approveCirculationInfo.getNodeNo());
+                    actHiTask.setTaskName(approveCirculationInfo.getNodeName());
+                    actHiTask.setOperateUserIdcard(approveCirculationInfo.getOperateUserId());
+                    actHiTask.setOperateUserName(approveCirculationInfo.getOperateUserName());
+                    actHiTask.setOperateType(approveCirculationInfo.getOperateType());
+                    actHiTask.setProcessInstanceId(approveRecordInfo.getProcessInstanceId());
+                    try {
+                        actHiTask.setOperateTime(DateUtils.parseDate(approveCirculationInfo.getOperateTime(), DateUtils.DATE_FORMAT_19));
+                    } catch (ParseException ignored) {
+
+                    }
+                    actHiTask.setDeleted(BooleanEnum.FALSE.getValue());
+                    approveActHiTaskService.save(actHiTask);
+                }
+
             }
-        } catch (Exception ex) {
-            logger.error("保存审批单失败!");
+        } catch (Exception e) {
+            logger.error("保存审批单失败!", e);
             throw new ApplicationException(ErrorCode.APPROVAL_UPLOAD_EXCEPTION.getCode(), ErrorCode.APPROVAL_UPLOAD_EXCEPTION.getMsg());
         }
-        String approveRecordInfoId = approveRecordInfo.getId();
-        return ResponseUtil.newInstance(approveRecordInfoId);
+        return ResponseStatus.success();
     }
 
+    /**
+     * 生成新审批单号
+     *
+     * @param appCode   应用代码
+     * @param approveNo 原审批单号
+     * @return 新审批单号
+     */
+    private String buildNewApproveNo(String appCode, String approveNo) {
+        return appCode + ":" + approveNo;
+    }
 
     /**
      * 检查参数

+ 1 - 1
approve-core-service/src/main/java/com/dragonsoft/dcuc/approve/facade/api/ApiV1ApproveFacade.java

@@ -146,7 +146,7 @@ public class ApiV1ApproveFacade implements IApiV1ApproveFacade {
     }
 
     @Override
-    public ResponseDTO<String> approveUpload(List<ApproveRecordReportReqVO> approveRecordList) {
+    public ResponseStatus approveUpload(List<ApproveRecordReportReqVO> approveRecordList) {
         String msg = approveUploadService.checkParam(approveRecordList);
         if (StringUtils.isNotEmpty(msg)) {
             return ResponseUtil.dtoFail(msg.substring(0, msg.length() - 1));