wangliang hai 1 ano
pai
achega
bde3dac7dc

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 3 - 0
sop-api/src/main/java/com/qmth/sop/server/api/TBSopInfoController.java


+ 13 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TBCrmDetail.java

@@ -121,6 +121,19 @@ public class TBCrmDetail extends BaseEntity implements Serializable {
         insertInfo(userId);
     }
 
+    /**
+     * 修改状态
+     *
+     * @param tbCrmDetail
+     * @param userId
+     */
+    public void updateSop(TBCrmDetail tbCrmDetail, Long userId) {
+        this.flowDeploymentId = tbCrmDetail.getFlowDeploymentId();
+        this.sopNo = tbCrmDetail.getSopNo();
+        this.status = tbCrmDetail.getStatus();
+        updateInfo(userId);
+    }
+
     /**
      * 修改状态
      *

+ 14 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TBSopInfoService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.sop.business.bean.params.*;
 import com.qmth.sop.business.bean.result.*;
+import com.qmth.sop.business.entity.TBCrmDetail;
 import com.qmth.sop.business.entity.TBSopInfo;
 import com.qmth.sop.business.entity.TFCustomFlow;
 import com.qmth.sop.business.entity.TFCustomFlowEntity;
@@ -151,6 +152,19 @@ public interface TBSopInfoService extends IService<TBSopInfo> {
     public SopPublishParam setSetupOne(SopPublishParam sopPublishParam, TFCustomFlow tfCustomFlow,
             CrmProjectResult crmProjectResult) throws Exception;
 
+    /**
+     * 修改流程第一步值
+     *
+     * @param flowTaskResult
+     * @param tfCustomFlow
+     * @param processVar
+     * @param tbCrmDetail
+     * @param crmProjectResult
+     * @return
+     */
+    public FlowTaskResult updateSetupOne(FlowTaskResult flowTaskResult, TFCustomFlow tfCustomFlow, String processVar,
+            TBCrmDetail tbCrmDetail, CrmProjectResult crmProjectResult);
+
     /**
      * sop转审
      *

+ 29 - 3
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBCrmDetailServiceImpl.java

@@ -12,6 +12,8 @@ import com.qmth.sop.business.bean.params.CrmDetailSopParam;
 import com.qmth.sop.business.bean.params.SopPublishParam;
 import com.qmth.sop.business.bean.result.CrmProjectResult;
 import com.qmth.sop.business.bean.result.FlowFormWidgetResult;
+import com.qmth.sop.business.bean.result.FlowResult;
+import com.qmth.sop.business.bean.result.FlowTaskResult;
 import com.qmth.sop.business.entity.*;
 import com.qmth.sop.business.mapper.TBCrmDetailMapper;
 import com.qmth.sop.business.service.*;
@@ -226,13 +228,37 @@ public class TBCrmDetailServiceImpl extends ServiceImpl<TBCrmDetailMapper, TBCrm
                 TBCrmDetail tbCrmDetailDb = tbCrmDetailService.getById(tbCrmDetail.getId());
                 Objects.requireNonNull(tbCrmDetailDb, "未找到派单sop信息");
 
-                if (tbCrmDetailDb.getStatus() == CrmStatusEnum.PUBLISH) {
-                    SopStatusEnum sopStatus = tbSopInfoService.findBySopNo(tbCrmDetailDb.getSopNo());
+                tbCrmDetail.updateSop(tbCrmDetailDb, sysUser.getId());
+                if (tbCrmDetail.getStatus() == CrmStatusEnum.PUBLISH) {
+                    SopStatusEnum sopStatus = tbSopInfoService.findBySopNo(tbCrmDetail.getSopNo());
                     if (sopStatus == SopStatusEnum.START) {
                         throw ExceptionResultEnum.ERROR.exception("该条sop状态已改变,请刷新页面");
                     }
+                    CrmProjectResult crmProjectResult = tbCrmService.findCrmProjectInfo(tbCrmDetail.getSopNo(),
+                            tbCrmDetail.getId(), tbCrmDetail.getCrmNo());
+                    Objects.requireNonNull(crmProjectResult, "未找到派单信息");
+
+                    TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getOne(
+                            new QueryWrapper<TFCustomFlowEntity>().lambda()
+                                    .eq(TFCustomFlowEntity::getCode, tbCrmDetail.getSopNo()));
+                    Optional.ofNullable(tfCustomFlowEntity)
+                            .orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
+
+                    TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(tfCustomFlowEntity.gettFCustomFlowId());
+                    Optional.ofNullable(tfCustomFlow)
+                            .orElseThrow(() -> ExceptionResultEnum.FLOW_CUSTOM_NO_DATA.exception());
+
+                    FlowResult flowResult = JSONObject.parseObject(tfCustomFlowEntity.getFlowProcessVar(),
+                            FlowResult.class);
+                    LinkedHashMap<String, FlowTaskResult> setupMap = flowResult.getSetupMap();
+                    FlowTaskResult flowTaskResult = tbSopInfoService.getFormProperties(tfCustomFlowEntity, 1);
+                    flowTaskResult = tbSopInfoService.updateSetupOne(flowTaskResult, tfCustomFlow, null, tbCrmDetail,
+                            crmProjectResult);
+
+                    setupMap.put(flowTaskResult.getTaskKey(), flowTaskResult);
+                    tfCustomFlowEntity.setFlowProcessVar(JacksonUtil.parseJson(flowResult));
+                    tfCustomFlowEntityService.updateById(tfCustomFlowEntity);
                 }
-                tbCrmDetail.updateInfo(sysUser.getId());
             }
             return tbCrmDetailService.saveOrUpdate(tbCrmDetail);
         } catch (Exception e) {

+ 70 - 48
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBSopInfoServiceImpl.java

@@ -324,55 +324,78 @@ public class TBSopInfoServiceImpl extends ServiceImpl<TBSopInfoMapper, TBSopInfo
         String processVar = (String) var.get(SystemConstant.PROCESS_VAR);
         if (!CollectionUtils.isEmpty(propertiesMap)) {
             FlowTaskResult flowTaskResult = (FlowTaskResult) propertiesMap.get(SystemConstant.FORM_PROPERTIES);
-            List<FlowFormWidgetResult> flowFormWidgetResultList = flowTaskResult.getFormProperty();
-            if (!CollectionUtils.isEmpty(flowFormWidgetResultList)) {
-                if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW) {
+            flowTaskResult = tbSopInfoService.updateSetupOne(flowTaskResult, tfCustomFlow, processVar, tbCrmDetail,
+                    crmProjectResult);
+            sopPublishParam.setFormProperties(JacksonUtil.parseJson(flowTaskResult));
+        }
+        return sopPublishParam;
+    }
+
+    /**
+     * 修改流程第一步值
+     *
+     * @param flowTaskResult
+     * @param tfCustomFlow
+     * @param processVar
+     * @param tbCrmDetail
+     * @param crmProjectResult
+     * @return
+     */
+    @Override
+    public FlowTaskResult updateSetupOne(FlowTaskResult flowTaskResult, TFCustomFlow tfCustomFlow, String processVar,
+            TBCrmDetail tbCrmDetail, CrmProjectResult crmProjectResult) {
+        List<FlowFormWidgetResult> flowFormWidgetResultList = flowTaskResult.getFormProperty();
+        if (!CollectionUtils.isEmpty(flowFormWidgetResultList)) {
+            if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW) {
+                Map<Long, FlowFormWidgetResult> flowFormWidgetResultMap = null;
+                if (Objects.nonNull(processVar)) {
                     List<FlowFormWidgetResult> flowFormWidgetResults = JSONArray.parseArray(processVar,
                             FlowFormWidgetResult.class);
-                    Map<Long, FlowFormWidgetResult> flowFormWidgetResultMap = flowFormWidgetResults.stream().collect(
+                    flowFormWidgetResultMap = flowFormWidgetResults.stream().collect(
                             Collectors.toMap(FlowFormWidgetResult::getId, Function.identity(), (dto1, dto2) -> dto1));
-                    for (FlowFormWidgetResult f : flowFormWidgetResultList) {
-                        if (flowFormWidgetResultMap.containsKey(f.getId())) {
-                            f.setValue(flowFormWidgetResultMap.get(f.getId()).getValue());
-                        } else if (Objects.nonNull(tbCrmDetail.getContacts()) && f.getFormId()
-                                .contains(ProcessLimitedEnum.CONTACTS.getKey()) && Objects.nonNull(f.getValue())
-                                && !Objects.equals(f.getValue(), "{\"value\":null}")) {
-                            JSONObject jsonObject = new JSONObject();
-                            jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getContacts());
-                            f.setValue(jsonObject.toJSONString());
-                        } else if (Objects.nonNull(tbCrmDetail.getMobileNumber()) && f.getFormId()
-                                .contains(ProcessLimitedEnum.MOBILE_NUMBER.getKey()) && Objects.nonNull(f.getValue())
-                                && !Objects.equals(f.getValue(), "{\"value\":null}")) {
-                            JSONObject jsonObject = new JSONObject();
-                            jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getMobileNumber());
-                            f.setValue(jsonObject.toJSONString());
-                        } else if (f.getFormId().contains(ProcessLimitedEnum.SERVICE_SCOPE_RADIO.getKey())
-                                && Objects.nonNull(f.getValue()) && !Objects.equals(f.getValue(), "{\"value\":null}")) {
-                            JSONObject jsonObject = new JSONObject();
-                            jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getServiceScope());
-                            f.setValue(jsonObject.toJSONString());
-                        } else if (f.getFormId().contains(ProcessLimitedEnum.SCAN_START_TIME.getKey())
-                                && Objects.nonNull(f.getValue()) && !Objects.equals(f.getValue(), "{\"value\":null}")) {
-                            JSONObject jsonObject = new JSONObject();
-                            jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getScanStartTime());
-                            f.setValue(jsonObject.toJSONString());
-                        } else if (f.getFormId().contains(ProcessLimitedEnum.SCAN_END_TIME.getKey()) && Objects.nonNull(
-                                f.getValue()) && !Objects.equals(f.getValue(), "{\"value\":null}")) {
-                            JSONObject jsonObject = new JSONObject();
-                            jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getScanEndTime());
-                            f.setValue(jsonObject.toJSONString());
-                        } else if (f.getFormId().contains(ProcessLimitedEnum.MARK_START_TIME.getKey())
-                                && Objects.nonNull(f.getValue()) && !Objects.equals(f.getValue(), "{\"value\":null}")) {
-                            JSONObject jsonObject = new JSONObject();
-                            jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getMarkPaperStartTime());
-                            f.setValue(jsonObject.toJSONString());
-                        } else if (f.getFormId().contains(ProcessLimitedEnum.MARK_END_TIME.getKey()) && Objects.nonNull(
-                                f.getValue()) && !Objects.equals(f.getValue(), "{\"value\":null}")) {
-                            JSONObject jsonObject = new JSONObject();
-                            jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getMarkPaperEndTime());
-                            f.setValue(jsonObject.toJSONString());
-                        } else if (f.getFormId().contains(ProcessLimitedEnum.ENGINEER_USERS_ID.getKey())
-                                && Objects.nonNull(f.getValue()) && !Objects.equals(f.getValue(), "{\"value\":null}")) {
+                }
+                for (FlowFormWidgetResult f : flowFormWidgetResultList) {
+                    if (!CollectionUtils.isEmpty(flowFormWidgetResultMap) && flowFormWidgetResultMap.containsKey(
+                            f.getId())) {
+                        f.setValue(flowFormWidgetResultMap.get(f.getId()).getValue());
+                    } else if (Objects.nonNull(tbCrmDetail) && Objects.nonNull(tbCrmDetail.getContacts())
+                            && f.getFormId().contains(ProcessLimitedEnum.CONTACTS.getKey())) {
+                        JSONObject jsonObject = new JSONObject();
+                        jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getContacts());
+                        f.setValue(jsonObject.toJSONString());
+                    } else if (Objects.nonNull(tbCrmDetail) && Objects.nonNull(tbCrmDetail.getMobileNumber())
+                            && f.getFormId().contains(ProcessLimitedEnum.MOBILE_NUMBER.getKey())) {
+                        JSONObject jsonObject = new JSONObject();
+                        jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getMobileNumber());
+                        f.setValue(jsonObject.toJSONString());
+                    } else if (Objects.nonNull(tbCrmDetail) && f.getFormId()
+                            .contains(ProcessLimitedEnum.SERVICE_SCOPE_RADIO.getKey())) {
+                        JSONObject jsonObject = new JSONObject();
+                        jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getServiceScope());
+                        f.setValue(jsonObject.toJSONString());
+                    } else if (Objects.nonNull(tbCrmDetail) && f.getFormId()
+                            .contains(ProcessLimitedEnum.SCAN_START_TIME.getKey())) {
+                        JSONObject jsonObject = new JSONObject();
+                        jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getScanStartTime());
+                        f.setValue(jsonObject.toJSONString());
+                    } else if (Objects.nonNull(tbCrmDetail) && f.getFormId()
+                            .contains(ProcessLimitedEnum.SCAN_END_TIME.getKey())) {
+                        JSONObject jsonObject = new JSONObject();
+                        jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getScanEndTime());
+                        f.setValue(jsonObject.toJSONString());
+                    } else if (Objects.nonNull(tbCrmDetail) && f.getFormId()
+                            .contains(ProcessLimitedEnum.MARK_START_TIME.getKey())) {
+                        JSONObject jsonObject = new JSONObject();
+                        jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getMarkPaperStartTime());
+                        f.setValue(jsonObject.toJSONString());
+                    } else if (Objects.nonNull(tbCrmDetail) && f.getFormId()
+                            .contains(ProcessLimitedEnum.MARK_END_TIME.getKey())) {
+                        JSONObject jsonObject = new JSONObject();
+                        jsonObject.put(SystemConstant.VALUE, tbCrmDetail.getMarkPaperEndTime());
+                        f.setValue(jsonObject.toJSONString());
+                    } else if (Objects.nonNull(tbCrmDetail) && f.getFormId()
+                            .contains(ProcessLimitedEnum.ENGINEER_USERS_ID.getKey())) {
+                        if (!CollectionUtils.isEmpty(crmProjectResult.getEngineerList())) {
                             List<String> list = new ArrayList<>(crmProjectResult.getEngineerList().size());
                             crmProjectResult.getEngineerList().stream().peek(s -> list.add(s.getUserId().toString()))
                                     .collect(Collectors.toList());
@@ -382,10 +405,9 @@ public class TBSopInfoServiceImpl extends ServiceImpl<TBSopInfoMapper, TBSopInfo
                         }
                     }
                 }
-                sopPublishParam.setFormProperties(JacksonUtil.parseJson(flowTaskResult));
             }
         }
-        return sopPublishParam;
+        return flowTaskResult;
     }
 
     /**

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio