Commit 0bf685ca authored by suhuiguang's avatar suhuiguang

Merge branch 'develop_tzs_register' of…

Merge branch 'develop_tzs_register' of http://36.40.66.175:5000/moa/amos-boot-biz into develop_tzs_register
parents 352dcbb6 fb1a2fb3
......@@ -182,4 +182,10 @@ public class JyjcInspectionApplication extends BaseEntity {
@TableField(value = "create_user_id")
private String createUserId;
@TableField(value = "next_task_id")
private String nextTaskId;
@TableField(value = "next_execute_user_ids")
private String nextExcuteUserIds;
}
......@@ -126,4 +126,10 @@ public class JyjcOpeningApplication extends BaseEntity {
@TableField(value = "create_user_id")
private String createUserId;
@TableField(value = "next_task_id")
private String nextTaskId;
@TableField(value = "next_execute_user_ids")
private String nextExecuteUserIds;
}
......@@ -21,7 +21,8 @@ public enum BizTypeEnum {
SUPERVISE("supervise", "监督检验"),
FIRST_INSPECTION("firstinspect", "定检"),
DETECTION("detection", "检测");
DETECTION("detection", "检测"),
BUSINESS_OPEN("businessOpen", "开通");
private String code;
private String name;
......
......@@ -161,6 +161,19 @@ public class JyjcInspectionApplicationModel extends BaseModel {
@ApiModelProperty(value = "创建人ID")
private String createUserId;
@ApiModelProperty(value = "下一步任务id")
private String nextTaskId;
@ApiModelProperty(value = "下一步执行人Ids")
private String nextExcuteUserIds;
@ApiModelProperty(value = "下一步任务名称")
private String nextTaskName;
@ApiModelProperty(value = "设备分类")
private String equList;
@ApiModelProperty(value = "监管码")
private String supervisoryCode;
private String instanceId;
......
......@@ -114,4 +114,11 @@ public class JyjcOpeningApplicationModel extends BaseModel {
@ApiModelProperty ("企业营业执照")
private List<AttachmentDto> unitBusinessLicense;
@ApiModelProperty ("下个任务id")
private String nextTaskId;
@ApiModelProperty ("下个任务执行人ids")
private String nextExecuteUserIds;
}
......@@ -23,6 +23,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
......@@ -34,6 +35,8 @@ import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class TaskModelServiceImpl {
@Autowired
private RedisUtils redisUtils;
......
......@@ -17,13 +17,12 @@ import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcOpeningApplication;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcBaseMapper;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcOpeningApplicationMapper;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcGeographicModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcOpeningApplicationRequstDto;
import com.yeejoin.amos.boot.module.jyjc.api.model.*;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcOpeningApplicationService;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcOpeningApplicationModel;
import com.yeejoin.amos.boot.module.jyjc.biz.config.BaseException;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.WorkflowFeignClient;
import com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseUnitLicenceDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
......@@ -38,9 +37,7 @@ import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
import com.yeejoin.amos.feign.workflow.model.AjaxResult;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import com.yeejoin.amos.feign.workflow.model.*;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ObjectUtils;
import lombok.extern.slf4j.Slf4j;
......@@ -109,95 +106,105 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
private WorkflowHelper workflowHelper;
@Autowired
private WorkflowFeignClient workflowFeignClient;
@Autowired
CmWorkflowServiceImpl cmWorkflowService;
@Autowired
TaskModelServiceImpl commonServiceImpl;
@Transactional(rollbackFor = {Exception.class, BaseException.class})
public JyjcOpeningApplicationModel saveOrUpdateModel(JyjcOpeningApplicationModel model, Boolean enableStartFlow) {
boolean isUpdate = false;
String instanceId = null;
JyjcOpeningApplication entity = null;
try {
if (model.getSequenceNbr() != null) {
entity = jyjcOpeningApplicationMapper.selectById(model.getSequenceNbr());
if (entity != null) {
instanceId = entity.getWorkflowProstanceId();
isUpdate = true;
}
if (model.getSequenceNbr() != null) {
entity = jyjcOpeningApplicationMapper.selectById(model.getSequenceNbr());
if (entity != null) {
instanceId = entity.getWorkflowProstanceId();
isUpdate = true;
}
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if (enableStartFlow) {
if (StringUtils.isBlank(instanceId)) {
// 未开启过工作流则进行开启 startProcess
instanceId = startFlow("1");
}
model.setStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode() + "");
// model.setStatusName(FlowStatusEnum.TO_BE_PROCESSED.getName());
model.setApplyTime(new Date());
model.setWorkflowProstanceId(instanceId);
// 默认自动执行第一步
execueFlowNoBusiness(MapBuilder.<String, Object>create().put("op", "提交").put("instanceId", instanceId).put("comments", "").build());
// 查询下节点任务
Map<String, Object> nextNodeInfo = workflowHelper.getNextWorkflowNode(instanceId);
String role = (String) nextNodeInfo.get("role");
String taskName = (String) nextNodeInfo.get("taskName");
model.setNextExecuteIds(role);
model.setPromoter(reginParams.getUserModel().getUserId());
if (!org.springframework.util.ObjectUtils.isEmpty(model.getWorkflowRole())) {
model.setWorkflowRole(model.getWorkflowRole() + "," + role);
} else {
model.setWorkflowRole(role);
}
String json = null;
try {
json = IOUtils.toString(bizTypeInfo.getInputStream(), java.lang.String.valueOf(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
List<Map> list = parseArray(json, Map.class);
String url = null;
for (Map map : list) {
if (map.get("type").equals("opening")&& "look".equals(map.get("pageType"))){
url = map.get("url").toString();
}
}
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if (enableStartFlow) {
if (StringUtils.isBlank(instanceId)) {
// 未开启过工作流则进行开启 startProcess
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
ArrayList<ActWorkflowStartDTO> list = new ArrayList<>();
dto.setProcessDefinitionKey(processDefinitionKey);
dto.setBusinessKey("1");
dto.setCompleteFirstTask(Boolean.TRUE);
// 接受机构
// dto.setNextExecuteUserCompanyCode(jgUseRegistration.getReceiveCompanyCode());
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
List<ProcessTaskDTO> processTaskDTOS = cmWorkflowService.startBatch(actWorkflowBatchDTO);
List<WorkflowResultDto> resultDto = commonServiceImpl.buildWorkFlowInfo(processTaskDTOS);
if (!ObjectUtils.isEmpty(resultDto) && !ObjectUtils.isEmpty(resultDto.get(0))) {
WorkflowResultDto workflowResultDto = resultDto.get(0);
model.setWorkflowProstanceId(workflowResultDto.getInstanceId());
model.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
model.setNextTaskId(workflowResultDto.getNextTaskId());
model.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
}
Map<String, Object> userOrgRoleMap = FeignUtil.remoteCall(() -> Privilege.userOrgRoleClient.getme());
List<String> userOrgRoleList = (List<String>) userOrgRoleMap.get("roleId");
String roleIds = String.join(",", userOrgRoleList);
commonservice.buildTaskModel(MapBuilder.<String, Object>create().put("instanceId", model.getWorkflowProstanceId()).put("startDate",new Date())
.put("agencyCode",reginParams.getUserModel().getAgencyCode()).put("userId",reginParams.getUserModel().getUserId()).put("startUser",reginParams.getUserModel().getUserId()).put("startUserId",reginParams.getUserModel().getUserId())
.put("taskStatus",FlowStatusEnum.TO_BE_PROCESSED.getCode()).put("taskStatusLabel",FlowStatusEnum.TO_BE_PROCESSED.getName()).put("taskName",taskName).put("taskType", "opening").put("taskTypeLabel", "检验业务").put("taskContent","")
.put("taskTitle",reginParams.getUserModel().getUserName()+"发起了"+taskName).put("taskDesc","").put("taskCode",model.getApplicationSeq())
.put("extras",JSON.toJSONString(model)).put("createUserId",reginParams.getUserModel().getUserName()).put("startUserId",reginParams.getUserModel().getUserId())
.put("routePath",url.replace("{sequenceNbr}",String.valueOf(model.getSequenceNbr())).replace("{userId}",reginParams.getUserModel().getUserId()).replace("{roleIds}",roleIds))
.build());
} else {
// 只有第一次改为待提交
if (entity == null) {
model.setStatus(FlowStatusEnum.TO_BE_SUBMITTED.getCode() + "");
// model.setStatusName(FlowStatusEnum.TO_BE_SUBMITTED.getName());
// 存在流程,执行
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(model.getNextTaskId());
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", "提交");
dto.setVariable(map);
ProcessTaskDTO complete = cmWorkflowService.complete(model.getNextTaskId(), dto);
ArrayList<ProcessTaskDTO> processTaskDTOS = new ArrayList<>();
processTaskDTOS.add(complete);
List<WorkflowResultDto> resultDto = commonServiceImpl.buildWorkFlowInfo(processTaskDTOS);
if (!ObjectUtils.isEmpty(resultDto) && !ObjectUtils.isEmpty(resultDto.get(0))) {
WorkflowResultDto workflowResult = resultDto.get(0);
model.setWorkflowProstanceId(workflowResult.getInstanceId());
model.setNextExecuteIds(workflowResult.getNextExecutorRoleIds());
model.setNextTaskId(workflowResult.getNextTaskId());
model.setNextExecuteUserIds(workflowResult.getNextExecutorUserIds());
}
}
if (!isUpdate) {
CompanyBo companyBo = commonserviceImpl.getReginParamsOfCurrentUser().getCompany();
model.setUnitCode(companyBo.getCompanyCode());
model.setUnitCodeName(companyBo.getCompanyName());
// ResponseModel<Map<String, Object>> result = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.JY.getCode(), 1);
List<String> codes = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.JY.getCode(), 1).getResult();
//List<String> codes = createCodeService.createApplicationFormCode(ApplicationFormTypeEnum.JY.getCode(), 1);
model.setApplicationSeq(codes.get(0));
model.setCreateUserId(reginParams.getUserModel().getUserId());
model = this.createWithModel(model);
return model;
} else {
return this.updateWithModel(model);
model.setStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode() + "");
model.setApplyTime(new Date());
} else {
// 只有第一次改为待提交
if (entity == null) {
model.setStatus(FlowStatusEnum.TO_BE_SUBMITTED.getCode() + "");
}
} catch (Exception e) {
log.error("saveModel: model={} error", model, e);
throw new BaseException(e.getMessage());
}
if (!isUpdate) {
CompanyBo companyBo = commonserviceImpl.getReginParamsOfCurrentUser().getCompany();
model.setUnitCode(companyBo.getCompanyCode());
model.setUnitCodeName(companyBo.getCompanyName());
List<String> codes = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.JY.getCode(), 1).getResult();
model.setApplicationSeq(codes.get(0));
model.setCreateUserId(reginParams.getUserModel().getUserId());
model = this.createWithModel(model);
// 暂存生成代办逻辑
ArrayList<TaskModelDto> list = new ArrayList<>();
TaskModelDto dto = new TaskModelDto();
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtil.copyProperties(model, taskMessageDto);
// 数据参数
dto.setModel(taskMessageDto);
// 摘要
dto.setTaskContent(String.format("检验检测业务开通办理,【申请单号:%s】", model.getApplicationSeq()));
// 申请单号
dto.setTaskCode(model.getApplicationSeq());
// 业务类型
dto.setTaskType(String.valueOf(BizTypeEnum.BUSINESS_OPEN.getCode()));
// 业务主键
dto.setRelationId(String.valueOf(model.getSequenceNbr()));
dto.setNextExecuteUser("");
list.add(dto);
commonServiceImpl.buildTaskModel(list);
return model;
} else {
return this.updateWithModel(model);
}
}
@Transactional(rollbackFor = {Exception.class, BaseException.class})
......@@ -430,31 +437,31 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
return jyjcOpeningApplicationModel;
}
public String startFlow(String businessKey) throws Exception {
// 重新开启工作流
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(processDefinitionKey);
dto.setBusinessKey(StringUtils.defaultString(businessKey, "1"));
// dto.setCompleteFirstTask(true);
// FeignClientResult ajaxResult = Workflow.taskV2Client.startByVariable(dto);
//
// if (log.isDebugEnabled()) {
// log.debug("开启工作流结果:{}", ajaxResult);
// }
// if (ajaxResult == null || 200 != ajaxResult.getStatus()) {
// throw new BaseException("开启工作流错误");
// }
// return ((Map) ajaxResult.getResult()).get("id").toString();
// V1
AjaxResult ajaxResult = Workflow.taskClient.startByVariable(dto);
if (log.isDebugEnabled()) {
log.debug("开启工作流结果:{}", ajaxResult);
}
if (ajaxResult == null || (ajaxResult.get(AjaxResult.CODE_TAG) != null && !"200".equals(ajaxResult.get(AjaxResult.CODE_TAG).toString()))) {
throw new BaseException("开启工作流错误");
}
return ((Map) ajaxResult.get("data")).get("id").toString();
}
// public String startFlow(String businessKey) {
// // 重新开启工作流
// ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
// dto.setProcessDefinitionKey(processDefinitionKey);
// dto.setBusinessKey(StringUtils.defaultString(businessKey, "1"));
// // dto.setCompleteFirstTask(true);
// // FeignClientResult ajaxResult = Workflow.taskV2Client.startByVariable(dto);
// //
// // if (log.isDebugEnabled()) {
// // log.debug("开启工作流结果:{}", ajaxResult);
// // }
// // if (ajaxResult == null || 200 != ajaxResult.getStatus()) {
// // throw new BaseException("开启工作流错误");
// // }
// // return ((Map) ajaxResult.getResult()).get("id").toString();
// // V1
// AjaxResult ajaxResult = Workflow.taskClient.startByVariable(dto);
// if (log.isDebugEnabled()) {
// log.debug("开启工作流结果:{}", ajaxResult);
// }
// if (ajaxResult == null || (ajaxResult.get(AjaxResult.CODE_TAG) != null && !"200".equals(ajaxResult.get(AjaxResult.CODE_TAG).toString()))) {
// throw new BaseException("开启工作流错误");
// }
// return ((Map) ajaxResult.get("data")).get("id").toString();
// }
/**
......
......@@ -23,5 +23,17 @@
"type":"detection",
"pageType": "edit",
"url": "/mixuap?appId=1742358052905971713&id=1736733779709423618&roleIds={roleIds}&userId={userId}&pageType=edit"
}
}, {
"type":"businessOpen",
"pageType": "draft",
"url": "/mixuap?appId=1742358052905971713&id=1734569644833927170&roleIds={roleIds}&userId={userId}&pageType=edit"
}, {
"type":"businessOpen",
"pageType": "look",
"url": "/mixuap?appId=1742358052905971713&id=1735201757841092609&roleIds={roleIds}&userId={userId}&pageType=edit"
}, {
"type":"businessOpen",
"pageType": "edit",
"url": "/mixuap?appId=1742358052905971713&id=1735201757841092609&roleIds={roleIds}&userId={userId}&pageType=edit"
}
]
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment