Browse Source

新增:工作流补偿机制

zhongwei
ty 5 months ago
parent
commit
8be8ed37d3
  1. 38
      hzims-biz-common/src/main/java/com/hnac/hzims/common/flow/StartProcessService.java
  2. 2
      hzims-service-api/alarm-api/src/main/java/com/hnac/hzims/alarm/config/entity/AlarmHandleFlowEntity.java
  3. 3
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/InnerDangerEntity.java
  4. 3
      hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/entity/WorkTaskEntity.java
  5. 3
      hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/standardTicket/entity/StandardTicketInfoEntity.java
  6. 4
      hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/entity/WorkTicketInfoEntity.java
  7. 64
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/impl/AlarmHandleServiceImpl.java
  8. 84
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/flow/service/impl/InnerDangerFlowServiceImpl.java
  9. 40
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/risk/service/impl/HazardTaskServiceImpl.java
  10. 1
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/allTicket/controller/TicketInfoEvaluateController.java
  11. 72
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/impl/WorkTaskServiceImpl.java
  12. 101
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/OperationTicketServiceImpl.java
  13. 153
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java
  14. 3
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/operation/StandardTicketInfoVo.java

38
hzims-biz-common/src/main/java/com/hnac/hzims/common/flow/StartProcessService.java

@ -0,0 +1,38 @@
package com.hnac.hzims.common.flow;
import org.springblade.core.tenant.mp.TenantEntity;
import org.springblade.core.tool.api.R;
import org.springframework.transaction.annotation.Transactional;
/**
* @Author dfy
* @Version v1.0
* @Serial 1.0
* @Date 2023/3/27 16:39
*/
public interface StartProcessService {
/**
* 业务保存相关方法
* @param entity
* @return
*/
String saveEntity(String entity);
/**
* 启动工作流流程
* @param entity
* @param dictValue
* @return
*/
void startProcess(String entity, String dictValue);
// /**
// * 补偿工作流流程
// * @param response
// */
// Boolean compensation(ProcessWorkFlowRes ponse response);
}

2
hzims-service-api/alarm-api/src/main/java/com/hnac/hzims/alarm/config/entity/AlarmHandleFlowEntity.java

@ -101,4 +101,6 @@ public class AlarmHandleFlowEntity extends BaseEntity {
private String approvalUserName;
@ApiModelProperty("创建机构名称")
private String createDeptName;
@ApiModelProperty("工作流是否运行正常")
private Boolean isNormal;
}

3
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/InnerDangerEntity.java

@ -296,4 +296,7 @@ public class InnerDangerEntity extends TenantEntity implements Serializable {
private Date conclusionTime;
@ApiModelProperty("工作流是否运行正常")
private Boolean isNormal;
}

3
hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/entity/WorkTaskEntity.java

@ -103,4 +103,7 @@ public class WorkTaskEntity extends TenantEntity {
@ApiModelProperty(value = "创建机构名称")
private String deptName;
@ApiModelProperty("工作流是否运行正常")
private Boolean isNormal;
}

3
hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/standardTicket/entity/StandardTicketInfoEntity.java

@ -159,6 +159,9 @@ public class StandardTicketInfoEntity extends TenantEntity implements Serializab
@ApiModelProperty("许可人名称")
private String guardianName;
@ApiModelProperty("是否运行正常")
private Boolean isNormal;
@TableField(exist = false)
@ApiModelProperty("监护人确认结果:approved-确认,rejected-作废")
private String verifyResult;

4
hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/entity/WorkTicketInfoEntity.java

@ -509,4 +509,8 @@ public class WorkTicketInfoEntity extends TenantEntity implements Serializable {
@ApiModelProperty("修改人名称")
private String updateUserName;
@ApiModelProperty("工作流是否运行正常")
private Boolean isNormal;
}

64
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/impl/AlarmHandleServiceImpl.java

@ -12,8 +12,10 @@ import com.hnac.hzims.alarm.show.service.AlarmHandleDetailService;
import com.hnac.hzims.alarm.show.service.AlarmHandleService;
import com.hnac.hzims.alarm.show.vo.HandleQueryVo;
import com.hnac.hzims.alarm.show.wrapper.HandleWrapper;
import com.hnac.hzims.common.flow.StartProcessService;
import com.hnac.hzims.common.logs.utils.StringUtils;
import com.hnac.hzims.fdp.feign.IFdpDiagnoseClient;
import com.hnac.hzims.safeproduct.vo.InnerDangerVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
@ -42,7 +44,7 @@ import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor
public class AlarmHandleServiceImpl extends ServiceImpl<AlarmHandleMapper, AlarmHandleEntity> implements AlarmHandleService {
public class AlarmHandleServiceImpl extends ServiceImpl<AlarmHandleMapper, AlarmHandleEntity> implements AlarmHandleService , StartProcessService {
private final AlarmHandleDetailService detailService;
@ -67,33 +69,44 @@ public class AlarmHandleServiceImpl extends ServiceImpl<AlarmHandleMapper, Alarm
*/
@Override
public boolean execute(AlarmHandleFlowEntity param) {
saveEntity(JSONObject.toJSONString(param));
//开启流程
return true;
}
@Override
public String saveEntity(String entity) {
AlarmHandleFlowEntity param= JSONObject.parseObject(entity, AlarmHandleFlowEntity.class);
//保存实体类
Long way = param.getHandleWay();
if (!AlarmHandleConstant.HANDLE_WAY.contains(way)) {
throw new ServiceException("无效处理!");
}
// 处理记录
AlarmHandleEntity entity = new AlarmHandleEntity();
entity.setAlarmId(param.getAlarmId());
entity.setType(param.getType());
AlarmHandleEntity alarmHandleEntity = new AlarmHandleEntity();
alarmHandleEntity.setAlarmId(param.getAlarmId());
alarmHandleEntity.setType(param.getType());
// entity.setDetailId(detail.getId());
entity.setAlarmTime(param.getAlarmTime());
entity.setAlarmContent(param.getAlarmContent());
entity.setHandleWay(param.getHandleWay());
entity.setStationCode(param.getStationCode());
entity.setAlarmType(param.getAlarmType());
alarmHandleEntity.setAlarmTime(param.getAlarmTime());
alarmHandleEntity.setAlarmContent(param.getAlarmContent());
alarmHandleEntity.setHandleWay(param.getHandleWay());
alarmHandleEntity.setStationCode(param.getStationCode());
alarmHandleEntity.setAlarmType(param.getAlarmType());
// entity.setAccessId(param.getAccessId());
// entity.setPhenomenonId(param.getPhenomenonId());
entity.setHandleUser(param.getHandleUser());
entity.setDelayTime(param.getDelayTime());
entity.setDelayCause(param.getDelayCause());
entity.setFalseAlarmDesc(param.getFalseAlarmDesc());
entity.setFilePath(param.getFilePath());
alarmHandleEntity.setHandleUser(param.getHandleUser());
alarmHandleEntity.setDelayTime(param.getDelayTime());
alarmHandleEntity.setDelayCause(param.getDelayCause());
alarmHandleEntity.setFalseAlarmDesc(param.getFalseAlarmDesc());
alarmHandleEntity.setFilePath(param.getFilePath());
if (StringUtils.isNotBlank(AuthUtil.getUserName())){
entity.setCreateUserName(AuthUtil.getUserName());
alarmHandleEntity.setCreateUserName(AuthUtil.getUserName());
param.setCreateUserName(AuthUtil.getUserName());
entity.setCreateDeptName(param.getCreateDeptName());
alarmHandleEntity.setCreateDeptName(param.getCreateDeptName());
}
this.save(entity);
this.save(alarmHandleEntity);
//修改fdp对应得数据
// 预警
if(AlarmHandleConstant.EARLY_WARNING.equals(param.getAlarmType())){
Map<String, Object> map=new HashMap<>();
@ -114,8 +127,13 @@ public class AlarmHandleServiceImpl extends ServiceImpl<AlarmHandleMapper, Alarm
// throw new ServiceException("修改告警状态异常,请稍后重试!");
}
}
//开启流程
if (AlarmHandleConstant.HANDLE.contains(way)) {
return JSONObject.toJSONString(alarmHandleEntity);
}
@Override
public void startProcess(String entity, String dictValue) {
AlarmHandleFlowEntity param= JSONObject.parseObject(entity, AlarmHandleFlowEntity.class);
if (AlarmHandleConstant.HANDLE.contains(param.getHandleWay())) {
alarmHandleFlowMapper.insert(param);
// 流程名称
String processName = "[" + AuthUtil.getUserName() + "] 发起 " + "【" + param.getAlarmContent() + "】告警处理流程";
@ -125,15 +143,16 @@ public class AlarmHandleServiceImpl extends ServiceImpl<AlarmHandleMapper, Alarm
R<BladeFlow> result = processClient.startProcessInstanceContainNameByKey(AlarmHandleConstant.dealAlarm, businessKey, processName, variable);
// 流程开启失败
if (!result.isSuccess()) {
param.setIsNormal(false);
alarmHandleFlowMapper.updateById(param);
log.error("缺陷流程开启失败,错误描述 : " + result.getMsg());
throw new ServiceException("缺陷流程开启失败,错误描述 : " + result.getMsg());
}
}else {
param.setProcessInstanceId(result.getData().getProcessInstanceId());
alarmHandleFlowMapper.updateById(param);
}
return true;
}
}
/**
* 分页
* @param query
@ -190,4 +209,5 @@ public class AlarmHandleServiceImpl extends ServiceImpl<AlarmHandleMapper, Alarm
String end = DateUtil.format(new Date(),DateUtil.PATTERN_DATETIME);
return this.baseMapper.incompleteContent(end,stations);
}
}

84
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/flow/service/impl/InnerDangerFlowServiceImpl.java

@ -1,5 +1,6 @@
package com.hnac.hzims.safeproduct.flow.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -10,6 +11,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hnac.hzims.common.flow.StartProcessService;
import com.hnac.hzims.common.logs.utils.StringUtils;
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse;
import com.hnac.hzims.safeproduct.dto.InnerDangerDTO;
@ -17,6 +19,7 @@ import com.hnac.hzims.safeproduct.entity.InnerDangerEntity;
import com.hnac.hzims.safeproduct.flow.mapper.InnerDangerMapper;
import com.hnac.hzims.safeproduct.flow.service.IInnerDangerFlowService;
import com.hnac.hzims.safeproduct.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
@ -46,7 +49,8 @@ import static com.hnac.hzims.safeproduct.Constants.HIDDEN_DANGER_CHECK;
* Created by ty 2023/9/18 10:16
**/
@Service
public class InnerDangerFlowServiceImpl extends ServiceImpl<InnerDangerMapper, InnerDangerEntity> implements IInnerDangerFlowService {
@Slf4j
public class InnerDangerFlowServiceImpl extends ServiceImpl<InnerDangerMapper, InnerDangerEntity> implements IInnerDangerFlowService , StartProcessService {
@Autowired
private ISysClient sysClient;
@ -71,64 +75,73 @@ public class InnerDangerFlowServiceImpl extends ServiceImpl<InnerDangerMapper, I
public R startHiddenDanger(InnerDangerVo hiddenDangerVo) {
InnerDangerEntity innerDangerEntity = new InnerDangerEntity();
BeanUtil.copy(hiddenDangerVo, innerDangerEntity);
if (!saveHiddenDanger(innerDangerEntity)) {
throw new ServiceException("隐患保存失败,请稍后重试!");
}
saveEntity(JSONObject.toJSONString(innerDangerEntity));
InnerDangerEntity saveEntity = this.getOne(new LambdaQueryWrapper<InnerDangerEntity>() {{
eq(InnerDangerEntity::getCode, innerDangerEntity.getCode());
last("limit 1");
}});
InnerDangerEntity res = this.startHiddenDangerFlow(saveEntity, hiddenDangerVo);
return R.data(res);
BeanUtil.copy(saveEntity,hiddenDangerVo);
this.startProcess(JSONObject.toJSONString(hiddenDangerVo), HIDDEN_DANGER_CHECK);
return R.success("隐患流程发起成功");
}
private boolean saveHiddenDanger(InnerDangerEntity entity) {
if (Func.isEmpty(entity.getCode())) {
entity.setCode(UUID.randomUUID().toString());
@Override
public String saveEntity(String entity) {
InnerDangerEntity innerDangerEntity= JSONObject.parseObject(entity, InnerDangerEntity.class);
if (Func.isEmpty(innerDangerEntity.getCode())) {
innerDangerEntity.setCode(UUID.randomUUID().toString());
}
// 隐患发起人 : 当前用户Id
if (Func.isEmpty(entity.getRegistrant())) {
entity.setRegistrant(AuthUtil.getUserId());
entity.setRegistrantName(AuthUtil.getUserName());
if (Func.isEmpty(innerDangerEntity.getRegistrant())) {
innerDangerEntity.setRegistrant(AuthUtil.getUserId());
innerDangerEntity.setRegistrantName(AuthUtil.getUserName());
}
// 隐患发起时间
entity.setRegistrantTime(new Date());
innerDangerEntity.setRegistrantTime(new Date());
// 隐患发起时间
entity.setUpdateTime(new Date());
entity.setCreateUser(AuthUtil.getUserId());
entity.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
if (Func.isEmpty(entity.getHiddenDangerDept())) {
return false;
}
if (Func.isEmpty(entity.getHiddenDangerDeptName())) {
R<String> deptNameR = sysClient.getDeptName(entity.getHiddenDangerDept());
innerDangerEntity.setUpdateTime(new Date());
innerDangerEntity.setCreateUser(AuthUtil.getUserId());
innerDangerEntity.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
if (Func.isEmpty(innerDangerEntity.getHiddenDangerDept())) {
throw new ServiceException("隐患保存失败,请检查好填写信息后重试!");
}
if (Func.isEmpty(innerDangerEntity.getHiddenDangerDeptName())) {
R<String> deptNameR = sysClient.getDeptName(innerDangerEntity.getHiddenDangerDept());
if (deptNameR.isSuccess() && StringUtils.isNotEmpty(deptNameR.getData())) {
entity.setHiddenDangerDeptName(deptNameR.getData());
innerDangerEntity.setHiddenDangerDeptName(deptNameR.getData());
}
}
boolean save = this.save(innerDangerEntity);
if (!save) {
throw new ServiceException("隐患保存失败,请稍后重试!");
}
return this.save(entity);
return JSON.toJSONString(innerDangerEntity);
}
private InnerDangerEntity startHiddenDangerFlow(InnerDangerEntity entity,InnerDangerVo hiddenDangerVo) {
BeanUtil.copy(entity,hiddenDangerVo);
@Override
public void startProcess(String entity, String dictValue) {
InnerDangerVo innerDangerVo = JSONObject.parseObject(entity, InnerDangerVo.class);
InnerDangerEntity innerDangerEntity = new InnerDangerEntity();
BeanUtil.copy(innerDangerVo, innerDangerEntity);
// 隐患处理名字
String userName = Optional.ofNullable(AuthUtil.getUserName()).orElse("");
// 流程名称
String processName = "[" + userName + "] 发起 " + "【风险点:" + entity.getRiskPointName() + "】隐患处理流程" + "——>" + entity.getHiddenDangerName();
String processName = "[" + userName + "] 发起 " + "【风险点:" + innerDangerVo.getRiskPointName() + "】隐患处理流程" + "——>" + innerDangerVo.getHiddenDangerName();
// 开启新的隐患处理流程
Map<String, Object> variable = JSONObject.parseObject(JSONObject.toJSONStringWithDateFormat(hiddenDangerVo, DateUtil.PATTERN_DATETIME), Map.class);
R<BladeFlow> result = processClient.startProcessInstanceContainNameByKey(HIDDEN_DANGER_CHECK, entity.getId().toString(), processName, variable);
Map<String, Object> variable = JSONObject.parseObject(JSONObject.toJSONStringWithDateFormat(innerDangerVo, DateUtil.PATTERN_DATETIME), Map.class);
R<BladeFlow> result = processClient.startProcessInstanceContainNameByKey(HIDDEN_DANGER_CHECK, innerDangerVo.getId().toString(), processName, variable);
// 流程开启失败
if (!result.isSuccess()) {
innerDangerEntity.setIsNormal(false);
this.baseMapper.updateById(innerDangerEntity);
log.error("隐患处理流程开启失败,错误描述 : {}", result);
throw new ServiceException("隐患处理流程开启失败,错误描述 : " + result.getMsg());
}
} else {
// 关联流程唯一键
entity.setProcessInstanceId(result.getData().getProcessInstanceId());
entity.setTaskId(result.getData().getTaskId());
this.baseMapper.updateById(entity);
return entity;
innerDangerEntity.setProcessInstanceId(result.getData().getProcessInstanceId());
innerDangerEntity.setTaskId(result.getData().getTaskId());
this.baseMapper.updateById(innerDangerEntity);
}
}
/**
* @param processWorkFlowResponse
@ -392,4 +405,5 @@ public class InnerDangerFlowServiceImpl extends ServiceImpl<InnerDangerMapper, I
return innerDangerEntities;
}
}

40
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/risk/service/impl/HazardTaskServiceImpl.java

@ -1,9 +1,12 @@
package com.hnac.hzims.safeproduct.risk.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hnac.hzims.common.flow.StartProcessService;
import com.hnac.hzims.common.logs.utils.StringUtils;
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse;
import com.hnac.hzims.safeproduct.entity.InnerDangerEntity;
import com.hnac.hzims.safeproduct.flow.service.IInnerDangerFlowService;
@ -38,7 +41,7 @@ import java.util.stream.Collectors;
@Slf4j
@AllArgsConstructor
@Service
public class HazardTaskServiceImpl extends ServiceImpl<HazardTaskMapper, HazardTask> implements HazardTaskService {
public class HazardTaskServiceImpl extends ServiceImpl<HazardTaskMapper, HazardTask> implements HazardTaskService , StartProcessService {
private final HazardWorkService workService;
@ -64,6 +67,16 @@ public class HazardTaskServiceImpl extends ServiceImpl<HazardTaskMapper, HazardT
@Override
@Transactional(rollbackFor = Exception.class)
public boolean startProcess(HazardRiskProcessDTO process) {
//保存业务表单
saveEntity(JSONObject.toJSONString(process));
//开启动作流
this.startProcess(JSON.toJSONString(process),HazardRiskConstants.HAZARD_RISK_KEY);
return true;
}
@Override
public String saveEntity(String entity) {
HazardRiskProcessDTO process= JSONObject.parseObject(entity, HazardRiskProcessDTO.class);
// 查询作业区域是否存在任务流程
HazardTask task = this.getOne(Wrappers.<HazardTask>lambdaQuery()
.eq(HazardTask::getWorkId,process.getWorkId())
@ -92,10 +105,8 @@ public class HazardTaskServiceImpl extends ServiceImpl<HazardTaskMapper, HazardT
process.setActStartTime(new Date());
process.setStationCode(hazardWork.getStationCode());
process.setStationName(hazardWork.getStationName());
// 保存任务
super.save(process);
// 生成风险评估记录
process.setEstimates(sources.stream().map(source->{
HazardEstimateVo estimate = new HazardEstimateVo();
@ -115,12 +126,26 @@ public class HazardTaskServiceImpl extends ServiceImpl<HazardTaskMapper, HazardT
return estimate;
}).collect(Collectors.toList()));
hazardEstimateService.saveBatch(process.getEstimates());
// 发起流程
this.start(process);
return true;
return JSON.toJSONString(process);
}
@Override
public void startProcess(String entity, String dictValue) {
HazardRiskProcessDTO process= JSONObject.parseObject(entity, HazardRiskProcessDTO.class);
// 查询作业区域负责人
Map<String, Object> variables = JSONObject.parseObject(JSONObject.toJSONStringWithDateFormat(process, DateUtil.PATTERN_DATETIME), Map.class);
variables.put(HazardRiskConstants.TROUBLE, TaskUtil.getTaskUser(String.valueOf(process.getHead())));
R<BladeFlow> result = flowClient.startProcessInstanceContainNameByKey(dictValue, FlowUtil.getBusinessKey(HazardRiskConstants.HAZARD_RISK_KEY,String.valueOf(process.getId())), process.getTaskName(), variables);
log.error("start_process_planV4 :{}",result);
// 更新任务流程Id
if (result.isSuccess()) {
BladeFlow flow = result.getData();
process.setProcessInstanceId(flow.getProcessInstanceId());
this.updateById(process);
} else {
throw new ServiceException("开启检修计划流程失败,code=" + result.getCode());
}
}
/**
* 流程发起
@ -374,4 +399,5 @@ public class HazardTaskServiceImpl extends ServiceImpl<HazardTaskMapper, HazardT
}
return riskInner;
}
}

1
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/allTicket/controller/TicketInfoEvaluateController.java

@ -1,5 +1,6 @@
package com.hnac.hzims.ticket.allTicket.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.hnac.hzims.ticket.allTicket.dto.TicketInfoEvaluateDto;

72
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/impl/WorkTaskServiceImpl.java

@ -1,5 +1,5 @@
package com.hnac.hzims.ticket.repair.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hnac.hzims.common.constant.CommonConstant;
import com.hnac.hzims.common.flow.StartProcessService;
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse;
import com.hnac.hzims.ticket.repair.constants.WorkTaskConstants;
import com.hnac.hzims.ticket.repair.entity.WorkTaskEntity;
@ -53,7 +54,7 @@ import java.util.*;
@Slf4j
@Service
@RequiredArgsConstructor
public class WorkTaskServiceImpl extends ServiceImpl<WorkTaskMapper, WorkTaskEntity> implements IWorkTaskService {
public class WorkTaskServiceImpl extends ServiceImpl<WorkTaskMapper, WorkTaskEntity> implements IWorkTaskService , StartProcessService {
private final IWorkTicketInfoService workTicketInfoService;
@ -80,42 +81,15 @@ public class WorkTaskServiceImpl extends ServiceImpl<WorkTaskMapper, WorkTaskEnt
@Override
public boolean start(WorkTaskVO workTask) {
// 步骤1.保存工作任务单
this.saveWorkTask(workTask);
this.saveEntity(JSON.toJSONString(workTask));
// 步骤2.开启检修计划流程
this.startProcess(workTask);
this.startProcess(JSON.toJSONString(workTask),"work_task");
return true;
}
private void startProcess(WorkTaskVO workTask) {
Map<String, Object> variables = JSONObject.parseObject(JSONObject.toJSONStringWithDateFormat(workTask, DateUtil.PATTERN_DATETIME), Map.class);
variables.put("head", TaskUtil.getTaskUser(String.valueOf(workTask.getHead())));
// 班组成员
String[] member = workTask.getMember().split(",");
for(int i = 1;i <= 5 ; i++){
if(i > member.length){
variables.put("duty" + i, "");
}else{
variables.put("duty" + i, TaskUtil.getTaskUser(member[i-1]));
}
}
R<BladeFlow> result = flowClient.startProcessInstanceContainNameByKey("work_task", FlowUtil.getBusinessKey("work_task_v4",String.valueOf(workTask.getId())), workTask.getCode(), variables);
log.error("work_task_start_process_result :{}",result);
// 更新任务流程Id
if (result.isSuccess()) {
BladeFlow flow = result.getData();
workTask.setProcessInstanceId(flow.getProcessInstanceId());
this.updateById(workTask);
} else {
throw new ServiceException("开启工作任务计划流程失败,code=" + result.getCode());
}
}
/**
* 保存工作任务单
* @param workTask
*/
private void saveWorkTask(WorkTaskVO workTask) {
@Override
public String saveEntity(String entity) {
WorkTaskVO workTask= JSONObject.parseObject(entity, WorkTaskVO.class);
// 查询当月最序号记录
WorkTaskEntity max = this.getOne(Wrappers.<WorkTaskEntity>lambdaQuery()
.like(WorkTaskEntity::getCreateTime,DateUtil.format(new Date(),"yyyy-MM"))
@ -143,7 +117,37 @@ public class WorkTaskServiceImpl extends ServiceImpl<WorkTaskMapper, WorkTaskEnt
workTask.setDeptName(result.getData().getDeptName());
}
this.save(workTask);
return JSON.toJSONString(workTask);
}
@Override
public void startProcess(String entity, String dictValue) {
WorkTaskVO workTask= JSONObject.parseObject(entity, WorkTaskVO.class);
Map<String, Object> variables = JSONObject.parseObject(JSONObject.toJSONStringWithDateFormat(workTask, DateUtil.PATTERN_DATETIME), Map.class);
variables.put("head", TaskUtil.getTaskUser(String.valueOf(workTask.getHead())));
// 班组成员
String[] member = workTask.getMember().split(",");
for(int i = 1;i <= 5 ; i++){
if(i > member.length){
variables.put("duty" + i, "");
}else{
variables.put("duty" + i, TaskUtil.getTaskUser(member[i-1]));
}
}
R<BladeFlow> result = flowClient.startProcessInstanceContainNameByKey(dictValue, FlowUtil.getBusinessKey("work_task_v4",String.valueOf(workTask.getId())), workTask.getCode(), variables);
log.error("work_task_start_process_result :{}",result);
// 更新任务流程Id
if (result.isSuccess()) {
BladeFlow flow = result.getData();
workTask.setProcessInstanceId(flow.getProcessInstanceId());
this.updateById(workTask);
} else {
workTask.setIsNormal(false);
this.updateById(workTask);
throw new ServiceException("开启工作任务计划流程失败,code=" + result.getCode());
}
}
/**
* 工作任务监听 - 业务处理

101
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/OperationTicketServiceImpl.java

@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.hnac.hzims.common.flow.StartProcessService;
import com.hnac.hzims.common.logs.utils.StringUtils;
import com.hnac.hzims.middle.process.feign.ProcessDictFeignService;
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse;
@ -32,6 +33,7 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tenant.mp.TenantEntity;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.CollectionUtil;
@ -72,7 +74,7 @@ import static com.hnac.hzims.middle.process.constant.TicketProcessConstant.OPERA
@Slf4j
@Service
@RequiredArgsConstructor
public class OperationTicketServiceImpl implements OperationTicketService {
public class OperationTicketServiceImpl implements OperationTicketService , StartProcessService {
private final IStandardTicketInfoService standardTicketInfoService;
@ -101,6 +103,20 @@ public class OperationTicketServiceImpl implements OperationTicketService {
@Override
public void startUp(StandardTicketInfoVo standardTicketInfoVo) {
log.info("执行 com.hnac.hzims.ticket.standardTicket.service.impl【startUp】 。。。方法");
//保存操作票
String standardTicketInfoVoBySave = this.saveEntity(JSONObject.toJSONString(standardTicketInfoVo));
//查询流程对应value
String dictValue = processDictFeignService.selectDictValueByKey(OPERATION_TICKET_KEY);
log.info("查询第操作票值: {}", dictValue);
if (StringUtils.isBlank(dictValue)) {
throw new ServiceException("服务器异常,请联系管理员");
}
//启动流程
this.startProcess(standardTicketInfoVoBySave, dictValue);
}
@Override
public String saveEntity(String entity) {
StandardTicketInfoVo standardTicketInfoVo= JSONObject.parseObject(entity, StandardTicketInfoVo.class);
if (standardTicketInfoVo.getSignage() == null) {
throw new ServiceException("票据抬头未配置,请您到站点管理配置");
}
@ -126,7 +142,6 @@ public class OperationTicketServiceImpl implements OperationTicketService {
throw new ServiceException("票据抬头未配置,请您到站点管理配置");
}
//signage = signage.length() == 2 ? station.getSignage() : station.getSignage().substring(0, 2);
standardTicketInfoVo.setSignage(signage);
standardTicketInfoVo.setSignageCode(station.getCode());
//2. 获取编码
@ -137,18 +152,43 @@ public class OperationTicketServiceImpl implements OperationTicketService {
}
standardTicketInfoVo.setCode(code);
//3. 保存操作对象
this.saveStandardTicketInfo(standardTicketInfoVo);
StandardTicketInfoEntity standardTicketInfo = getStandardTicketInfoEntity(standardTicketInfoVo);
boolean save = standardTicketInfoService.save(standardTicketInfo);
if (!save) {
throw new ServiceException("Save failed");
}
BeanUtils.copyProperties(standardTicketInfo, standardTicketInfoVo);
//5. 保存安全措施
List<StandardTicketMeasureVo> standardTicketInfoVos = this.saveStandardTicketMeasure(this.saveStandardTicketMeasureWichTicket(standardTicketInfoVo));
standardTicketInfoVo.setStandardTicketMeasureVos(standardTicketInfoVos);
//6. 查询第操作票值
String dictValue = processDictFeignService.selectDictValueByKey(OPERATION_TICKET_KEY);
log.info("查询第操作票值: {}", dictValue);
if (StringUtils.isBlank(dictValue)) {
throw new ServiceException("服务器异常,请联系管理员");
log.info("保存操作对象 :{}", standardTicketInfoVo);
return JSON.toJSONString(standardTicketInfoVo);
}
// 7.启动流程
this.startProcess(standardTicketInfoVo, dictValue);
@Override
public void startProcess(String entity, String dictValue) {
StandardTicketInfoVo standardTicketInfoVo= JSONObject.parseObject(entity, StandardTicketInfoVo.class);
StandardTicketInfoEntity standardTicketInfoEntity = getStandardTicketInfoEntity(standardTicketInfoVo);
Instant start = Instant.now();
Map<String, Object> params = new HashMap<>(4);
params.put("standardTicketInfoVo", standardTicketInfoVo);
params.put("taskId", standardTicketInfoVo.getId());
params.put("guardianUserIds", "taskUser_".concat(standardTicketInfoVo.getGuardian().toString()));
//已开启流程
R<BladeFlow> processInstanceContainNameByKey = flowClient.startProcessInstanceContainNameByKey(dictValue, String.valueOf(standardTicketInfoVo.getId()), standardTicketInfoVo.getTitle(), params);
if (!processInstanceContainNameByKey.isSuccess()) {
standardTicketInfoEntity.setIsNormal(false);
standardTicketInfoService.save(standardTicketInfoEntity);
log.error("开启流程失败 {}", processInstanceContainNameByKey.getMsg());
throw new ServiceException("不好意思,您暂无权限...");
}
Duration between = Duration.between(start, Instant.now());
log.info("================================================================");
log.info("耗时: " + (between.getSeconds()) + "秒");
log.info("耗时: " + (between.toMillis()) + "毫秒");
log.info("================================================================");
}
/**
@ -292,30 +332,6 @@ public class OperationTicketServiceImpl implements OperationTicketService {
}
}
/**
* 启动流程
*
* @param standardTicketInfoVo
* @param dictValue
*/
private void startProcess(StandardTicketInfoVo standardTicketInfoVo, String dictValue) {
Instant start = Instant.now();
Map<String, Object> params = new HashMap<>(4);
params.put("standardTicketInfoVo", standardTicketInfoVo);
params.put("taskId", standardTicketInfoVo.getId());
params.put("guardianUserIds", "taskUser_".concat(standardTicketInfoVo.getGuardian().toString()));
//已开启流程
R<BladeFlow> processInstanceContainNameByKey = flowClient.startProcessInstanceContainNameByKey(dictValue, String.valueOf(standardTicketInfoVo.getId()), standardTicketInfoVo.getTitle(), params);
if (!processInstanceContainNameByKey.isSuccess()) {
log.error("processInstanceContainNameByKey {}", processInstanceContainNameByKey.getMsg());
throw new ServiceException("不好意思,您暂无权限...");
}
Duration between = Duration.between(start, Instant.now());
log.info("================================================================");
log.info("耗时: " + (between.getSeconds()) + "秒");
log.info("耗时: " + (between.toMillis()) + "毫秒");
log.info("================================================================");
}
/**
@ -353,7 +369,6 @@ public class OperationTicketServiceImpl implements OperationTicketService {
if (!save) {
throw new ServiceException("Save failed");
}
return measureEntityList.stream().map(item -> {
StandardTicketMeasureVo standardTicketMeasureVo = new StandardTicketMeasureVo();
BeanUtils.copyProperties(item, standardTicketMeasureVo);
@ -361,13 +376,8 @@ public class OperationTicketServiceImpl implements OperationTicketService {
}).collect(Collectors.toList());
}
/**
* 保存工作对象
*
* @param standardTicketInfoVo
* @return
*/
private void saveStandardTicketInfo(StandardTicketInfoVo standardTicketInfoVo) {
private static StandardTicketInfoEntity getStandardTicketInfoEntity(StandardTicketInfoVo standardTicketInfoVo) {
StandardTicketInfoEntity standardTicketInfo = new StandardTicketInfoEntity();
BeanUtils.copyProperties(standardTicketInfoVo, standardTicketInfo);
//保存前保存对应用户得姓名
@ -397,12 +407,7 @@ public class OperationTicketServiceImpl implements OperationTicketService {
standardTicketInfo.setGuardianName(guardian.getRealName());
}
}
boolean save = standardTicketInfoService.save(standardTicketInfo);
if (!save) {
throw new ServiceException("Save failed");
}
BeanUtils.copyProperties(standardTicketInfo, standardTicketInfoVo);
return standardTicketInfo;
}

153
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java

@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.hnac.hzims.common.flow.StartProcessService;
import com.hnac.hzims.common.logs.utils.StringUtils;
import com.hnac.hzims.middle.process.feign.ProcessDictFeignService;
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse;
@ -27,6 +28,7 @@ import com.hnac.hzims.ticket.twoTicket.service.TicketInfoDangerService;
import com.hnac.hzims.ticket.twoTicket.service.TicketProcessService;
import com.hnac.hzims.ticket.twoTicket.utils.WordHelper;
import com.hnac.hzims.ticket.twoTicket.utils.WordMapUtils;
import com.hnac.hzims.ticket.twoTicket.vo.operation.StandardTicketInfoVo;
import com.hnac.hzims.ticket.twoTicket.vo.process.FristWorkTicketVo;
import com.hnac.hzims.ticket.twoTicket.vo.process.WorkTicketVo;
import com.hnac.hzims.ticket.utils.MergeDocUtils;
@ -87,7 +89,7 @@ import static com.hnac.hzims.middle.process.constant.TicketProcessConstant.MACHI
@Slf4j
@RequiredArgsConstructor
@Service
public class TicketProcessServiceImpl implements TicketProcessService {
public class TicketProcessServiceImpl implements TicketProcessService, StartProcessService {
private final IFlowClient flowClient;
@ -159,12 +161,31 @@ public class TicketProcessServiceImpl implements TicketProcessService {
*
* @param workTicketVo
*/
@SneakyThrows
// @SneakyThrows
@Override
@Transactional
public Long startUp(WorkTicketVo workTicketVo) {
log.info("ticket:start:request",JSON.toJSONString(workTicketVo));
log.info("执行 com.hnac.hzims.ticket.twoTicket.service.impl【startUp】 。。。方法");
//保存操作票
String saveEntity = saveEntity(JSONObject.toJSONString(workTicketVo));
workTicketVo= JSONObject.parseObject(saveEntity, WorkTicketVo.class);
//查询第工作票值
String dictValue = getDictValue(workTicketVo);
log.info("查询第工作票值: {}", dictValue);
if (StringUtils.isBlank(dictValue)) {
throw new ServiceException("服务器异常,请联系管理员");
}
//开启动作流
this.startProcess(saveEntity,dictValue);
// //处理任务--老版本业务要求,2024/07/05弃用
// this.returnTicket(workTicketVo);
return workTicketVo.getWorkTicket().getId();
}
@Override
public String saveEntity(String entity) {
WorkTicketVo workTicketVo= JSONObject.parseObject(entity, WorkTicketVo.class);
if (workTicketVo.getWorkTicket().getSignage() == null) {
throw new ServiceException("票据抬头未配置,请您到站点管理配置");
}
@ -200,27 +221,63 @@ public class TicketProcessServiceImpl implements TicketProcessService {
throw new ServiceException("服务器异常,请联系管理员");
}
workTicketVo.getWorkTicket().setCode(code);
//3 .保存工作对象
//保存工作对象
log.info("ticket:start:vo",JSON.toJSONString(workTicketVo.getWorkTicket()));
this.saveWorkTicketInfo(workTicketVo.getWorkTicket());
//4. 保存安全措施
WorkTicketInfoEntity workTicket = getWorkTicketInfo(workTicketVo.getWorkTicket());
boolean isSave = firstWorkTicketService.save(workTicket);
log.info("ticket:start:save",JSON.toJSONString(workTicket));
if (!isSave) {
throw new IllegalArgumentException("保存工作对象错误");
}
//保存安全措施
this.saveSafetyMeasures(workTicketVo.getSafetyMeasuresList(), workTicketVo.getWorkTicket());
//5. 保存工作任务
//保存工作任务
this.saveWorkTicketContentDto(workTicketVo.getWorkTicketContentDtoList(), workTicketVo.getWorkTicket());
//6. 查询第工作票值
String dictValue = getDictValue(workTicketVo);
log.info("查询第工作票值: {}", dictValue);
if (StringUtils.isBlank(dictValue)) {
throw new ServiceException("服务器异常,请联系管理员");
return JSONObject.toJSONString(workTicketVo);
}
//7. 开启动作流
this.dealProcess(dictValue, workTicketVo);
//8. 处理任务
this.returnTicket(workTicketVo);
return workTicketVo.getWorkTicket().getId();
@Override
public void startProcess(String entity, String dictValue) {
WorkTicketVo workTicketVo= JSONObject.parseObject(entity, WorkTicketVo.class);
WorkTicketInfoEntity workTicket = getWorkTicketInfo(workTicketVo.getWorkTicket());
workTicketVo.setWorkTicket(workTicket);
Instant start = Instant.now();
//若为线下工作票 则无需开启工作流
Integer status = WorkTicketConstants.FirstWorkTicketStatusEnum.SIGN.getStatus();
if (status.intValue() != workTicketVo.getWorkTicket().getFlowStatus().intValue()) {
return;
}
Map<String, Object> params = new HashMap<>(4);
params.put("workTicketVo", workTicketVo);
//获取当前登录人
Long userId = AuthUtil.getUserId();
//负责人
Long principal = workTicketVo.getWorkTicket().getPrincipal();
if ("8".equals(workTicketVo.getWorkTicket().getType()) && principal.longValue() != userId.longValue()) {
params.put("principal", "taskUser_" + workTicketVo.getWorkTicket().getPrincipal());
}
//已开启流程
R<BladeFlow> processInstanceContainNameByKey = flowClient.startProcessInstanceContainNameByKey(dictValue, String.valueOf(workTicketVo.getWorkTicket().getId()), workTicketVo.getWorkTicket().getWorkContent(), params);
log.info("processInstanceContainNameByKey.isSuccess() : {}", processInstanceContainNameByKey.isSuccess());
if (!processInstanceContainNameByKey.isSuccess()) {
//保存流程开始失败情况
workTicket.setIsNormal(false);
boolean isSave = firstWorkTicketService.save(workTicket);
log.info("ticket:start:save",JSON.toJSONString(workTicket));
if (!isSave) {
throw new IllegalArgumentException("保存工作对象错误");
}
log.error("processInstanceContainNameByKey {}", processInstanceContainNameByKey.getMsg());
throw new ServiceException("流程开启失败,请检查流程和用户权限后重试!");
}
log.info("获取启动流程数据 : {}", processInstanceContainNameByKey);
Duration between = Duration.between(start, Instant.now());
log.info("================================================================");
log.info("耗时: " + (between.getSeconds()) + "秒");
log.info("耗时: " + (between.toMillis()) + "毫秒");
log.info("================================================================");
}
/**
* 验证是走那种工作票流程默认走第一种工作票
*
@ -707,54 +764,6 @@ public class TicketProcessServiceImpl implements TicketProcessService {
}
}
/**
* 开启流程
*
* @param newFirstWorkTicketFlowKey
* @param workTicketVo
*/
public void dealProcess(String newFirstWorkTicketFlowKey, WorkTicketVo workTicketVo) {
Instant start = Instant.now();
//若为线下工作票 则无需开启工作流
Integer status = WorkTicketConstants.FirstWorkTicketStatusEnum.SIGN.getStatus();
if (status.intValue() != workTicketVo.getWorkTicket().getFlowStatus().intValue()) {
return;
}
//log.info("租户Id:{}", AuthUtil.getTenantId());
//log.info("用户部门Id: {}", AuthUtil.getUser().getDeptId());
//log.info("用户Id: {}", AuthUtil.getUserId());
//获取签发人角色下的人员
// R<List<User>> listR = userClient.relationUserListByRoleAlias(AuthUtil.getTenantId(), Long.parseLong(AuthUtil.getUser().getDeptId()), TicketConstants.SIGNER_ROLE);
// if (!listR.isSuccess() || CollectionUtil.isEmpty(listR.getData())) {
// throw new ServiceException("工作票签发人角色下未查询到相关人员");
// }
Map<String, Object> params = new HashMap<>(4);
params.put("workTicketVo", workTicketVo);
//获取当前登录人
Long userId = AuthUtil.getUserId();
//负责人
Long principal = workTicketVo.getWorkTicket().getPrincipal();
if ("8".equals(workTicketVo.getWorkTicket().getType()) && principal.longValue() != userId.longValue()) {
params.put("principal", "taskUser_" + workTicketVo.getWorkTicket().getPrincipal());
}
//已开启流程
R<BladeFlow> processInstanceContainNameByKey = flowClient.startProcessInstanceContainNameByKey(newFirstWorkTicketFlowKey, String.valueOf(workTicketVo.getWorkTicket().getId()), workTicketVo.getWorkTicket().getWorkContent(), params);
log.info("processInstanceContainNameByKey.isSuccess() : {}", processInstanceContainNameByKey.isSuccess());
if (!processInstanceContainNameByKey.isSuccess() && processInstanceContainNameByKey.getCode() == 500) {
log.error("processInstanceContainNameByKey {}", processInstanceContainNameByKey.getMsg());
throw new ServiceException("不好意思,您暂无权限...");
}
log.info("获取启动流程数据 : {}", processInstanceContainNameByKey);
Duration between = Duration.between(start, Instant.now());
log.info("================================================================");
log.info("耗时: " + (between.getSeconds()) + "秒");
log.info("耗时: " + (between.toMillis()) + "毫秒");
log.info("================================================================");
}
/**
* 保存工作任务
*
@ -810,7 +819,7 @@ public class TicketProcessServiceImpl implements TicketProcessService {
* @param workTicket
* @return
*/
public WorkTicketInfoEntity saveWorkTicketInfo(WorkTicketInfoEntity workTicket) {
public WorkTicketInfoEntity getWorkTicketInfo(WorkTicketInfoEntity workTicket) {
workTicket.setStatus(Func.isEmpty(workTicket.getPrincipal()) || Func.isEmpty(workTicket.getClassGroupMembers()) ? WorkTicketConstants.FirstWorkTicketStatusEnum.OFFLINE_OPERATE.getStatus() : WorkTicketConstants.FirstWorkTicketStatusEnum.SIGN.getStatus());
//班组成员名称
String byclassGroupMembers = getByClassGroupMembers(workTicket);
@ -826,11 +835,6 @@ public class TicketProcessServiceImpl implements TicketProcessService {
workTicket.setIsHazard(false);
workTicket.setIsRailway(false);
workTicket.setIsLimited(false);
boolean isSave = firstWorkTicketService.save(workTicket);
log.info("ticket:start:save",JSON.toJSONString(workTicket));
if (!isSave) {
throw new IllegalArgumentException("保存工作对象错误");
}
return workTicket;
}
@ -1392,7 +1396,7 @@ public class TicketProcessServiceImpl implements TicketProcessService {
* @param workTicketVo 工作票
* @return 工作流实例ID
*/
private String startOfflineTicketProcess(WorkTicketVo workTicketVo) {
public String startOfflineTicketProcess(WorkTicketVo workTicketVo) {
WorkTicketInfoEntity workTicket = workTicketVo.getWorkTicket();
Map<String, Object> params = new HashMap<>();
workTicketVo.setWorkTicket(workTicket);
@ -1400,6 +1404,13 @@ public class TicketProcessServiceImpl implements TicketProcessService {
R<BladeFlow> flowR =
flowClient.startProcessInstanceContainNameByKey("offlineWorkTicket",String.valueOf(workTicket.getId()),workTicket.getWorkContent(), params);
Assert.isTrue(flowR.isSuccess(),() -> {
//保存流程开始失败情况
workTicket.setIsNormal(false);
boolean isSave = firstWorkTicketService.save(workTicket);
log.info("ticket:start:save",JSON.toJSONString(workTicket));
if (!isSave) {
throw new IllegalArgumentException("保存工作对象错误");
}
throw new ServiceException("开启工作流失败,请联系管理员");
});
return flowR.getData().getProcessInstanceId();

3
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/operation/StandardTicketInfoVo.java

@ -150,6 +150,9 @@ public class StandardTicketInfoVo extends TenantEntity {
@ApiModelProperty("许可人名称")
private String guardianName;
@ApiModelProperty("是否运行正常")
private Boolean isNormal;
@ApiModelProperty("安全措施")
private List<StandardTicketMeasureVo> standardTicketMeasureVos;
}

Loading…
Cancel
Save