Commit 9f60bf53 authored by zhangyingbin's avatar zhangyingbin

流程优化

parent 7c19f26c
package com.yeejoin.amos.boot.module.ugp.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
@Getter
@AllArgsConstructor
public enum ProBlemProcessEnum {
流程开始("流程开始","1"),
确定问题("确定问题","2"),
重大问题发送短信("重大问题发送短信","3"),
编制处理方案("编制处理方案","4"),
审查处理方案("审查处理方案","5"),
限期整改("限期整改","6"),
提交整改书("提交整改书","7"),
审查整改过程("审查整改过程","8"),
超期整改发送短信("超期整改发送短信","9"),
问题分类("问题分类","10"),
转人工("转人工","11"),
结束("结束","12");
private String Name;
private String Code;
public static Map<String,String> map = new HashMap<>();
static {
for (ProBlemProcessEnum proBlemProcessEnum : ProBlemProcessEnum.values()) {
map.put(proBlemProcessEnum.getCode(),proBlemProcessEnum.getName());
}
}
}
package com.yeejoin.amos.boot.module.ugp.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
@Getter
@AllArgsConstructor
public enum ProblemTypeEnum {
一般问题("一般问题","1"),
重大问题("重大问题","2"),
存在问题("存在问题","1"),
不存在问题("不存在问题","0");
private String name;
private String code;
public static Map<String,String> map = new HashMap<>();
static {
for (ProBlemProcessEnum proBlemProcessEnum : ProBlemProcessEnum.values()) {
map.put(proBlemProcessEnum.getCode(),proBlemProcessEnum.getName());
}
}
}
package com.yeejoin.amos.boot.module.ugp.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.workflow.feign.WorkflowFeignService;
import com.yeejoin.amos.boot.module.common.api.entity.OrgUsr;
import com.yeejoin.amos.boot.module.common.biz.service.impl.OrgUsrServiceImpl;
import com.yeejoin.amos.boot.module.ugp.api.entity.InstallNoticeMsg;
import com.yeejoin.amos.boot.module.ugp.api.entity.RectifyMsg;
import com.yeejoin.amos.boot.module.ugp.api.entity.SuperviseRule;
import com.yeejoin.amos.boot.module.ugp.api.Enum.ProBlemProcessEnum;
import com.yeejoin.amos.boot.module.ugp.api.Enum.ProjectInitiationEnum;
import com.yeejoin.amos.boot.module.ugp.api.entity.*;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.SmsRecordModel;
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 io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.parsing.Problem;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Dell
......@@ -27,6 +37,9 @@ import java.util.List;
public class ProblemInitiationServiceImpl {
@Autowired
WorkflowFeignService workflowFeignService;
@Autowired
ProjectServiceImpl projectServiceImpl;
@Autowired
......@@ -38,8 +51,98 @@ public class ProblemInitiationServiceImpl {
@Autowired
OrgUsrServiceImpl orgUsrServiceImpl;
@Autowired
ProjectInitiationServiceImpl projectInitiationService;
@Autowired
QualityProblemServiceImpl qualityProblemService;
private static String SMSCODE = "SMS_UGP_0002";
@Value("${params.work.flow.problemDefinitionKey}")
private String problemDefinitionKey;
@Transactional(rollbackFor = Exception.class)
public String start() {
String instanceId = null;
//启动流程
try {
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(problemDefinitionKey);
dto.setBusinessKey("1");
AjaxResult ajaxResult = Workflow.taskClient.startByVariable(dto);
instanceId = ((Map)ajaxResult.get("data")).get("id").toString();
ProjectInitiation projectInitiation = new ProjectInitiation();
projectInitiation.setInstanceId(instanceId);
projectInitiation.setTaskName("流程启动!");
projectInitiationService.save(projectInitiation);
} catch (Exception e) {
e.printStackTrace();
System.out.println("流程启动失败:"+e.getMessage());
}
updateProBlemFlowStatus(instanceId);
return instanceId;
}
@Transactional(rollbackFor = Exception.class)
public void execute(String instanceId,Object objectd, String option){
JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(objectd));
JSONObject jsonObject = workflowFeignService.getTask(instanceId);
ProjectInitiation projectInitiation = new ProjectInitiation();
projectInitiation.setInstanceId(instanceId);
projectInitiation.setContext(JSON.toJSONString(objectd));
JSONObject dataObject = jsonObject.getJSONObject("data");
projectInitiation.setTaskId(dataObject.getString("id"));
projectInitiation.setTaskName(dataObject.getString("name"));
if (ProBlemProcessEnum.重大问题发送短信.getName().equals(dataObject.getString("name"))) {
if(!ValidationUtil.isEmpty(objectd)) {
sendSms(object);
}
}
if(ProjectInitiationEnum.接受审查意见.getName().equals(dataObject.getString("name"))){
projectInitiation.setTaskName(dataObject.getString("name")+"(流程结束!)");
}
if (ProjectInitiationEnum.告知申请.getName().equals(dataObject.getString("name"))) {
}
if ("监检科室分配".equals(dataObject.getString("name"))) {
}
if ("监检员分配".equals(dataObject.getString("name"))) {
}
if ("监检员审核".equals(dataObject.getString("name"))) {
}
try {
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResult(option);
dto.setResultCode("condition");
dto.setTaskId(projectInitiation.getTaskId());
HashMap<String, Object> var = new HashMap<>();
var.put("condition", option);
dto.setVariable(var);
//执行流程
Workflow.taskClient.completeByTask(projectInitiation.getTaskId(),dto);
//保存日志
projectInitiationService.save(projectInitiation);
} catch (Exception e) {
e.printStackTrace();
System.out.println("任务完成失败:"+e.getMessage());
} finally {
//更新project种的status字段,表示当前流程下一个执行的任务
updateProBlemFlowStatus(instanceId);
}
}
public void sendSms(JSONObject object){
//设置短信发送的基本参数
HashMap<String, String> smsParams = new HashMap();
......@@ -81,4 +184,12 @@ public class ProblemInitiationServiceImpl {
}
return smsRecordModel;
}
public void updateProBlemFlowStatus(String instanceId){
LambdaQueryWrapper<QualityProblem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(QualityProblem::getInstanceId,instanceId);
QualityProblem qualityProblem = qualityProblemService.getOne(wrapper);
qualityProblem.setStatus(projectInitiationService.getFlowTaskName(instanceId));
qualityProblemService.updateById(qualityProblem);
}
}
package com.yeejoin.amos.boot.module.ugp.biz.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yeejoin.amos.boot.module.ugp.api.Enum.ProBlemProcessEnum;
import com.yeejoin.amos.boot.module.ugp.api.Enum.ProblemTypeEnum;
import com.yeejoin.amos.boot.module.ugp.api.entity.QualityProblem;
import com.yeejoin.amos.boot.module.ugp.api.mapper.QualityProblemMapper;
import com.yeejoin.amos.boot.module.ugp.api.service.IQualityProblemService;
......@@ -64,23 +66,51 @@ public class QualityProblemServiceImpl extends BaseService<QualityProblemDto,Qua
public String updateItem(QualityProblem qualityProblem, Long sequenceNbr){
QualityProblem quality = this.getById(sequenceNbr);
if(ProBlemProcessEnum.确定问题.getName().equals(quality.getStatus())) {
//监检机构确定问题
quality.setLevel(qualityProblem.getLevel());
quality.setReformLimitDate(qualityProblem.getReformLimitDate());
if(ProblemTypeEnum.一般问题.getCode().equals(quality.getLevel())){
//流程执行一次
}
if(ProblemTypeEnum.重大问题.getCode().equals(quality.getLevel())){
//流程执行两次
}
}
if(ProBlemProcessEnum.编制处理方案.getName().equals(quality.getStatus())) {
//编制处理方案
quality.setSolution(qualityProblem.getSolution());
quality.setSolutionDesc(qualityProblem.getSolutionDesc());
}
if(ProBlemProcessEnum.提交整改书.getName().equals(quality.getStatus())) {
//上传整改书
quality.setReformDoc(qualityProblem.getReformDoc());
quality.setReformDesc(qualityProblem.getReformDesc());
quality.setRectifyWithinTime(quality.getReformLimitDate().after(new Date()));
//审核通过
if(quality.getRectifyWithinTime()){
if (quality.getRectifyWithinTime()) {
quality.setReviewStatus(qualityProblem.getReviewStatus());
}else{
//执行流程 option=1
} else {
//执行两次流程 option=2
}
}
if(ProBlemProcessEnum.问题分类.getName().equals(quality.getStatus())) {
quality.setHandingOpinion(qualityProblem.getHandingOpinion());
quality.setHandingOpinionDesc(qualityProblem.getHandingOpinionDesc());
//执行两次
}
if(ProBlemProcessEnum.审查处理方案.getName().equals(quality.getStatus())) {
quality.setReviewStatus(qualityProblem.getReviewStatus());
if(ProblemTypeEnum.存在问题.equals(quality.getReviewStatus())){
if(ProblemTypeEnum.一般问题.getName().equals(quality.getLevel())){
//执行一次
}else {
//执行两次
}
}
}
this.updateById(quality);
return "0k";
}
......
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