Commit 7995e161 authored by 韩桐桐's avatar 韩桐桐

Merge remote-tracking branch 'origin/develop_tzs_register' into develop_tzs_register

parents 8ae34c73 13d4c293
package com.yeejoin.amos.boot.module.jg.api.dto; package com.yeejoin.amos.boot.module.jg.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto; import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
...@@ -162,7 +161,6 @@ public class JgMaintainNoticeDto extends BaseDto { ...@@ -162,7 +161,6 @@ public class JgMaintainNoticeDto extends BaseDto {
@ApiModelProperty(value = "接收机构机构代码") @ApiModelProperty(value = "接收机构机构代码")
private String receiveOrgCode; private String receiveOrgCode;
@TableField(exist = false)
@ApiModelProperty(value = "告知设备列表") @ApiModelProperty(value = "告知设备列表")
private List<Map<String, Object>> deviceList; private List<Map<String, Object>> deviceList;
......
package com.yeejoin.amos.boot.module.jg.api.dto; package com.yeejoin.amos.boot.module.jg.api.dto;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
...@@ -131,11 +130,9 @@ public class JgReformNoticeDto extends BaseDto { ...@@ -131,11 +130,9 @@ public class JgReformNoticeDto extends BaseDto {
private String entrustingUnitName; private String entrustingUnitName;
@ApiModelProperty (value = "委托书附件") @ApiModelProperty (value = "委托书附件")
@TableField(typeHandler = FastjsonTypeHandler.class)
private List<JSONObject> powerOfAttorney; private List<JSONObject> powerOfAttorney;
@ApiModelProperty (value = "施工合同附件") @ApiModelProperty (value = "施工合同附件")
@TableField(typeHandler = FastjsonTypeHandler.class)
private List<JSONObject> constructionContract; private List<JSONObject> constructionContract;
@ApiModelProperty (value = "施工合同是否本单位与甲方直接签署") @ApiModelProperty (value = "施工合同是否本单位与甲方直接签署")
...@@ -163,7 +160,6 @@ public class JgReformNoticeDto extends BaseDto { ...@@ -163,7 +160,6 @@ public class JgReformNoticeDto extends BaseDto {
private String equCategory; private String equCategory;
/* ---------------- -------------- */ /* ---------------- -------------- */
@TableField (exist = false)
@ApiModelProperty (value = "告知设备列表") @ApiModelProperty (value = "告知设备列表")
private List<Map<String, Object>> deviceList; private List<Map<String, Object>> deviceList;
...@@ -228,4 +224,11 @@ public class JgReformNoticeDto extends BaseDto { ...@@ -228,4 +224,11 @@ public class JgReformNoticeDto extends BaseDto {
@ApiModelProperty (value = "其他附件") @ApiModelProperty (value = "其他附件")
private String otherAccessories; private String otherAccessories;
/**
*工作流下一节点任务id
*/
@ApiModelProperty (value = "工作流下一节点任务id")
private String nextTaskId;
} }
package com.yeejoin.amos.boot.module.jg.biz.init; package com.yeejoin.amos.boot.module.jg.biz.init;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration; import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.CommonServiceImpl; import com.yeejoin.amos.boot.module.jg.biz.service.impl.CommonServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationServiceImpl; import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
...@@ -20,18 +22,29 @@ public class ApplicationRunnerImpl implements ApplicationRunner { ...@@ -20,18 +22,29 @@ public class ApplicationRunnerImpl implements ApplicationRunner {
private CommonServiceImpl commonService; private CommonServiceImpl commonService;
public ApplicationRunnerImpl(JgUseRegistrationServiceImpl useRegistrationService, CommonServiceImpl commonService) { private JgInstallationNoticeServiceImpl installationNoticeService;
public ApplicationRunnerImpl(JgUseRegistrationServiceImpl useRegistrationService,
CommonServiceImpl commonService,
JgInstallationNoticeServiceImpl installationNoticeService) {
this.commonService = commonService; this.commonService = commonService;
this.useRegistrationService = useRegistrationService; this.useRegistrationService = useRegistrationService;
this.installationNoticeService = installationNoticeService;
} }
@Override @Override
public void run(ApplicationArguments args) { public void run(ApplicationArguments args) {
// TODO 增加删除启动时, 完成时 // TODO 增加删除启动时, 完成时
// 使用登记数据初始化
List<JgUseRegistration> jgUseRegistrations = useRegistrationService.list(new LambdaQueryWrapper<JgUseRegistration>().ne(JgUseRegistration::getStatus, FlowStatusEnum.TO_BE_FINISHED.getName())); List<JgUseRegistration> jgUseRegistrations = useRegistrationService.list(new LambdaQueryWrapper<JgUseRegistration>().ne(JgUseRegistration::getStatus, FlowStatusEnum.TO_BE_FINISHED.getName()));
jgUseRegistrations.forEach(jgUseRegistration -> { jgUseRegistrations.forEach(jgUseRegistration -> {
commonService.saveExecuteFlowData2Redis(jgUseRegistration.getInstanceId(), useRegistrationService.buildInstanceRuntimeData(jgUseRegistration)); commonService.saveExecuteFlowData2Redis(jgUseRegistration.getInstanceId(), useRegistrationService.buildInstanceRuntimeData(jgUseRegistration));
}); });
// 安装告知数据初始化
List<JgInstallationNotice> jgInstallationNotices = installationNoticeService.list(new LambdaQueryWrapper<JgInstallationNotice>().ne(JgInstallationNotice::getNoticeStatus, FlowStatusEnum.TO_BE_FINISHED.getCode()));
jgInstallationNotices.forEach(jgInstallation -> {
commonService.saveExecuteFlowData2Redis(jgInstallation.getInstanceId(), installationNoticeService.buildInstanceRuntimeData(jgInstallation));
});
} }
} }
...@@ -7,18 +7,17 @@ import com.alibaba.fastjson.JSONObject; ...@@ -7,18 +7,17 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.util.StringUtil;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper; import com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto; import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.dto.TaskMessageDto;
import com.yeejoin.amos.boot.module.jg.api.dto.TaskModelDto;
import com.yeejoin.amos.boot.module.jg.api.dto.WorkflowResultDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice; import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNoticeEq; import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNoticeEq;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.CompanyTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.CompanyTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
...@@ -46,6 +45,8 @@ import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO; ...@@ -46,6 +45,8 @@ import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO; import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO; import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -65,6 +66,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel; ...@@ -65,6 +66,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.text.ParseException; import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -159,6 +161,9 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -159,6 +161,9 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
@Autowired @Autowired
private CommonServiceImpl commonService; private CommonServiceImpl commonService;
@Autowired
private RedissonClient redissonClient;
/** /**
* 根据sequenceNbr查询 * 根据sequenceNbr查询
* *
...@@ -332,7 +337,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -332,7 +337,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
commonService.buildTaskModel(Collections.singletonList(taskModelDto)); commonService.buildTaskModel(Collections.singletonList(taskModelDto));
} }
} }
commonService.saveExecuteFlowData2Redis(notice.getInstanceId(),this.buildInstanceRuntimeData(notice));
} else { } else {
JgInstallationNotice bean = new JgInstallationNotice(); JgInstallationNotice bean = new JgInstallationNotice();
BeanUtils.copyProperties(noticeDto, bean); BeanUtils.copyProperties(noticeDto, bean);
...@@ -377,13 +382,6 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -377,13 +382,6 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
} }
/** /**
* 列表查询 示例
*/
public List<JgInstallationNoticeDto> queryForJgInstallationNoticeList() {
return this.queryForList("", false);
}
/**
* 批量删除 * 批量删除
* *
* @param sequenceNbrs 主键 * @param sequenceNbrs 主键
...@@ -533,16 +531,22 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -533,16 +531,22 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
// 暂存任务 // 暂存任务
buildTaskDraft(list); buildTaskDraft(list);
} }
List<JgInstallationNoticeEq> jgRelationEquipList = equipList.stream().map(jgRelationEquip -> { List<JgInstallationNoticeEq> jgRelationEquipList = equipList.stream().map(jgRelationEquip -> {
List<JgInstallationNotice> collect = list.stream().filter(jgInstallationNotice -> jgRelationEquip.getEquipTransferId().equals(jgInstallationNotice.getApplyNo())).collect(Collectors.toList()); List<JgInstallationNotice> collect = list.stream().filter(jgInstallationNotice -> jgRelationEquip.getEquipTransferId().equals(jgInstallationNotice.getApplyNo())).collect(Collectors.toList());
Long sequenceNbr = collect.get(0).getSequenceNbr(); Long sequenceNbr = collect.get(0).getSequenceNbr();
return jgRelationEquip.setEquipTransferId(String.valueOf(sequenceNbr)); return jgRelationEquip.setEquipTransferId(String.valueOf(sequenceNbr));
}).collect(Collectors.toList()); }).collect(Collectors.toList());
jgInstallationNoticeEqMapper.insertBatchSomeColumn(jgRelationEquipList); jgInstallationNoticeEqMapper.insertBatchSomeColumn(jgRelationEquipList);
this.updateRedisBatch(list);
return list; return list;
} }
private void updateRedisBatch(List<JgInstallationNotice> jgInstallationNotices) {
jgInstallationNotices.stream().filter(n-> StringUtil.isNotEmpty(n.getInstanceId())).forEach(jgInstallationNotice -> {
commonService.saveExecuteFlowData2Redis(jgInstallationNotice.getInstanceId(), this.buildInstanceRuntimeData(jgInstallationNotice));
});
}
/** /**
* 暂存任务生成待办 * 暂存任务生成待办
* @param list 业务信息 * @param list 业务信息
...@@ -777,233 +781,275 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN ...@@ -777,233 +781,275 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
} }
@Transactional @Transactional(rollbackFor = Exception.class)
public void cancel(JgInstallationNoticeDto noticeDto) { public void cancel(JgInstallationNoticeDto noticeDto) {
JgInstallationNotice jgInstallationNotice = this.baseMapper.selectById(noticeDto.getSequenceNbr()); String instanceId = noticeDto.getInstanceId();
// 检查实际状态是否不等于期望状态 String nextTaskId = noticeDto.getNextTaskId();
commonService.checkExpectedStatus(jgInstallationNotice.getNoticeStatus()); String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
RLock lock = redissonClient.getLock(lockKey);
ProcessTaskDTO processTaskDTO = iCmWorkflowService.rollBack(jgInstallationNotice.getInstanceId()); try {
// 提取节点等信息 boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0); // 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
jgInstallationNotice.setPromoter(""); if(!isLocked){
jgInstallationNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds()); throw new BadRequest("当前流程已经被执行!");
jgInstallationNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); }
jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.ROLLBACK.getCode())); // 流程执行时,状态及权限校验
jgInstallationNotice.setNextTaskId(workflowResultDto.getNextTaskId()); commonService.checkForRevocationFlow(nextTaskId, instanceId);
this.updateById(jgInstallationNotice); JgInstallationNotice jgInstallationNotice = this.baseMapper.selectById(noticeDto.getSequenceNbr());
TaskMessageDto taskMessageDto = new TaskMessageDto(); ProcessTaskDTO processTaskDTO = iCmWorkflowService.rollBack(jgInstallationNotice.getInstanceId());
BeanUtils.copyProperties(jgInstallationNotice, taskMessageDto); // 提取节点等信息
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(taskMessageDto)); WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
jsonObject.put("taskType", BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getCode()); jgInstallationNotice.setPromoter("");
jsonObject.put("nextExecuteUser", jgInstallationNotice.getNextExecuteIds()); jgInstallationNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jsonObject.put("flowStatusLabel", FlowStatusEnum.ROLLBACK.getName()); jgInstallationNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jsonObject.put("flowStatus", FlowStatusEnum.ROLLBACK.getCode()); jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.ROLLBACK.getCode()));
jsonObject.put("nextTaskId", jgInstallationNotice.getNextTaskId()); jgInstallationNotice.setNextTaskId(workflowResultDto.getNextTaskId());
commonService.rollbackTask(jgInstallationNotice.getInstanceId(), jsonObject); this.updateById(jgInstallationNotice);
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgInstallationNotice, taskMessageDto);
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(taskMessageDto));
jsonObject.put("taskType", BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getCode());
jsonObject.put("nextExecuteUser", jgInstallationNotice.getNextExecuteIds());
jsonObject.put("flowStatusLabel", FlowStatusEnum.ROLLBACK.getName());
jsonObject.put("flowStatus", FlowStatusEnum.ROLLBACK.getCode());
jsonObject.put("nextTaskId", jgInstallationNotice.getNextTaskId());
commonService.rollbackTask(jgInstallationNotice.getInstanceId(), jsonObject);
commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgInstallationNotice));
}catch (InterruptedException e) {
e.printStackTrace();
} finally {
if(lock.isHeldByCurrentThread()){
lock.unlock();
}
}
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void accept(JgInstallationNoticeDto dto,String op) { public void accept(JgInstallationNoticeDto dto,String op) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class); String instanceId = dto.getInstanceId();
JgInstallationNotice jgInstallationNotice = this.getById(dto.getSequenceNbr()); String nextTaskId = dto.getNextTaskId();
// 检查实际状态是否不等于期望状态 String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
commonService.checkExpectedStatus(jgInstallationNotice.getNoticeStatus()); RLock lock = redissonClient.getLock(lockKey);
jgInstallationNotice.setProcessAdvice(dto.getProcessAdvice());
// 组装设备注册代码
StringBuilder stringBuffer = new StringBuilder();
String ym = null;
try { try {
ym = DateUtils.dateFormat(new Date(), DateUtils.DATE_PATTERN_MM); boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
} catch (ParseException e) { // 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
log.error("日期转换失败:{}", e); if(!isLocked){
} throw new BadRequest("当前流程已经被执行!");
// 执行工作流并返回组装好的工作流信息 }
WorkflowResultDto workflowResultDto = getWorkflowResultDto(op, jgInstallationNotice); // 流程执行时,状态及权限校验
jgInstallationNotice.setPromoter(reginParams.getUserModel().getUserId()); commonService.checkForExecuteFlow(nextTaskId, instanceId);
jgInstallationNotice.setNextTaskId(workflowResultDto.getNextTaskId());
TaskV2Model taskV2Model = new TaskV2Model(); JgInstallationNotice jgInstallationNotice = this.getById(dto.getSequenceNbr());
if ("0".equals(op)) { jgInstallationNotice.setProcessAdvice(dto.getProcessAdvice());
if (StringUtils.isEmpty(workflowResultDto.getNextExecutorRoleIds())) { // 组装设备注册代码
LambdaQueryWrapper<JgInstallationNoticeEq> queryWrapper = new LambdaQueryWrapper<>(); StringBuilder stringBuffer = new StringBuilder();
queryWrapper.eq(JgInstallationNoticeEq::getEquipTransferId,dto.getSequenceNbr()); String ym = null;
JgInstallationNoticeEq jgRelationEquip = jgInstallationNoticeEqMapper.selectOne(queryWrapper); try {
LambdaQueryWrapper<OtherInfo> queryWrapper1 = new LambdaQueryWrapper<>(); ym = DateUtils.dateFormat(new Date(), DateUtils.DATE_PATTERN_MM);
queryWrapper1.eq(OtherInfo::getRecord,jgRelationEquip.getEquId()); } catch (ParseException e) {
OtherInfo tzsJgOtherInfo = tzsJgOtherInfoMapper.selectOne(queryWrapper1); log.error("日期转换失败:{}", e);
LambdaQueryWrapper<RegistrationInfo> queryWrapper2 = new LambdaQueryWrapper<>(); }
queryWrapper2.eq(RegistrationInfo::getRecord,jgRelationEquip.getEquId()); // 执行工作流并返回组装好的工作流信息
RegistrationInfo tzsJgRegistrationInfo = tzsJgRegistrationInfoMapper.selectOne(queryWrapper2); WorkflowResultDto workflowResultDto = getWorkflowResultDto(op, jgInstallationNotice);
stringBuffer.append(tzsJgRegistrationInfo.getEquCategory()).append(jgInstallationNotice.getReceiveOrgCreditCode()).append(ym); jgInstallationNotice.setPromoter(RequestContext.getExeUserId());
String equCode = stringBuffer.toString(); jgInstallationNotice.setNextTaskId(workflowResultDto.getNextTaskId());
TaskV2Model taskV2Model = new TaskV2Model();
ResponseModel<String> responseModel = tzsServiceFeignClient.deviceRegistrationCode(equCode); if ("0".equals(op)) {
String deviceRegistrationCode = responseModel.getResult(); if (StringUtils.isEmpty(workflowResultDto.getNextExecutorRoleIds())) {
Map<String, Object> map = new HashMap<>(); LambdaQueryWrapper<JgInstallationNoticeEq> queryWrapper = new LambdaQueryWrapper<>();
map.put("code96333",tzsJgOtherInfo.getCode96333()); queryWrapper.eq(JgInstallationNoticeEq::getEquipTransferId,dto.getSequenceNbr());
map.put("superviseCode",tzsJgOtherInfo.getSupervisoryCode()); JgInstallationNoticeEq jgRelationEquip = jgInstallationNoticeEqMapper.selectOne(queryWrapper);
map.put("cityCode",jgInstallationNotice.getCity()); LambdaQueryWrapper<OtherInfo> queryWrapper1 = new LambdaQueryWrapper<>();
map.put("countyCode",jgInstallationNotice.getCounty()); queryWrapper1.eq(OtherInfo::getRecord,jgRelationEquip.getEquId());
map.put("equCategory",tzsJgRegistrationInfo.getEquCategory()); OtherInfo tzsJgOtherInfo = tzsJgOtherInfoMapper.selectOne(queryWrapper1);
map.put("isXiXian", jgInstallationNotice.getIsXixian() == null ? "null" : jgInstallationNotice.getIsXixian().equals("0") ? "null" : "1"); LambdaQueryWrapper<RegistrationInfo> queryWrapper2 = new LambdaQueryWrapper<>();
Map<String, Object> mapCode; queryWrapper2.eq(RegistrationInfo::getRecord,jgRelationEquip.getEquId());
ResponseModel<Map<String, Object>> code = tzsServiceFeignClient.createCode(map); RegistrationInfo tzsJgRegistrationInfo = tzsJgRegistrationInfoMapper.selectOne(queryWrapper2);
mapCode = code.getResult(); stringBuffer.append(tzsJgRegistrationInfo.getEquCategory()).append(jgInstallationNotice.getReceiveOrgCreditCode()).append(ym);
supervisoryCodeInfoMapper.updateStatusBySuperviseCode(mapCode.get("superviseCode").toString()); String equCode = stringBuffer.toString();
jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode()));
jgInstallationNotice.setHandleDate(new Date()); ResponseModel<String> responseModel = tzsServiceFeignClient.deviceRegistrationCode(equCode);
Map<String,Object> map1 =new HashMap<>(); String deviceRegistrationCode = responseModel.getResult();
// 更新其他业务表 Map<String, Object> map = new HashMap<>();
if(!ValidationUtil.isEmpty(mapCode.get("code96333"))) { map.put("code96333",tzsJgOtherInfo.getCode96333());
tzsJgOtherInfo.setCode96333(mapCode.get("code96333").toString()); map.put("superviseCode",tzsJgOtherInfo.getSupervisoryCode());
map1.put("CODE96333",tzsJgOtherInfo.getCode96333() ); map.put("cityCode",jgInstallationNotice.getCity());
} map.put("countyCode",jgInstallationNotice.getCounty());
tzsJgOtherInfo.setSupervisoryCode(mapCode.get("superviseCode").toString()); map.put("equCategory",tzsJgRegistrationInfo.getEquCategory());
//tzsJgRegistrationInfo.setEquCode(deviceRegistrationCode); map.put("isXiXian", jgInstallationNotice.getIsXixian() == null ? "null" : jgInstallationNotice.getIsXixian().equals("0") ? "null" : "1");
//jgInstallationNotice.setEquRegisterCode(deviceRegistrationCode); Map<String, Object> mapCode;
jgInstallationNotice.setInformNumber(deviceRegistrationCode); ResponseModel<Map<String, Object>> code = tzsServiceFeignClient.createCode(map);
mapCode = code.getResult();
jgInstallationNotice.setSupervisoryCode(mapCode.get("superviseCode").toString()); supervisoryCodeInfoMapper.updateStatusBySuperviseCode(mapCode.get("superviseCode").toString());
Map<String,Map<String,Object>> objMap = new HashMap<>(); jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode()));
map1.put("EQU_CODE",tzsJgRegistrationInfo.getEquCode() ); jgInstallationNotice.setHandleDate(new Date());
map1.put("SUPERVISORY_CODE",tzsJgOtherInfo.getSupervisoryCode()); Map<String,Object> map1 =new HashMap<>();
map1.put("USE_UNIT_CREDIT_CODE",jgInstallationNotice.getUseUnitCreditCode()); // 更新其他业务表
map1.put("USE_UNIT_NAME",jgInstallationNotice.getUseUnitName()); if(!ValidationUtil.isEmpty(mapCode.get("code96333"))) {
map1.put("USC_UNIT_CREDIT_CODE",jgInstallationNotice.getInstallUnitCreditCode()); tzsJgOtherInfo.setCode96333(mapCode.get("code96333").toString());
map1.put("USC_UNIT_NAME",jgInstallationNotice.getInstallUnitName()); map1.put("CODE96333",tzsJgOtherInfo.getCode96333() );
// 安装告知去除该字段,使用登记时添加 }
tzsJgOtherInfo.setSupervisoryCode(mapCode.get("superviseCode").toString());
//tzsJgRegistrationInfo.setEquCode(deviceRegistrationCode);
//jgInstallationNotice.setEquRegisterCode(deviceRegistrationCode);
jgInstallationNotice.setInformNumber(deviceRegistrationCode);
jgInstallationNotice.setSupervisoryCode(mapCode.get("superviseCode").toString());
Map<String,Map<String,Object>> objMap = new HashMap<>();
map1.put("EQU_CODE",tzsJgRegistrationInfo.getEquCode() );
map1.put("SUPERVISORY_CODE",tzsJgOtherInfo.getSupervisoryCode());
map1.put("USE_UNIT_CREDIT_CODE",jgInstallationNotice.getUseUnitCreditCode());
map1.put("USE_UNIT_NAME",jgInstallationNotice.getUseUnitName());
map1.put("USC_UNIT_CREDIT_CODE",jgInstallationNotice.getInstallUnitCreditCode());
map1.put("USC_UNIT_NAME",jgInstallationNotice.getInstallUnitName());
// 安装告知去除该字段,使用登记时添加
// map1.put("ORG_BRANCH_CODE",jgInstallationNotice.getOrgBranchCode()); // map1.put("ORG_BRANCH_CODE",jgInstallationNotice.getOrgBranchCode());
// map1.put("ORG_BRANCH_NAME",jgInstallationNotice.getOrgBranchCode()); // map1.put("ORG_BRANCH_NAME",jgInstallationNotice.getOrgBranchCode());
map1.put("USE_PLACE",String.format("%s/%s/%s", jgInstallationNotice.getProvinceName(), jgInstallationNotice.getCityName(), jgInstallationNotice.getCounty())); map1.put("USE_PLACE",String.format("%s/%s/%s", jgInstallationNotice.getProvinceName(), jgInstallationNotice.getCityName(), jgInstallationNotice.getCounty()));
map1.put("ADDRESS",String.format("%s/%s", jgInstallationNotice.getStreetName(), jgInstallationNotice.getAddress())); map1.put("ADDRESS",String.format("%s/%s", jgInstallationNotice.getStreetName(), jgInstallationNotice.getAddress()));
objMap.put(tzsJgOtherInfo.getRecord(), map1); objMap.put(tzsJgOtherInfo.getRecord(), map1);
jgInstallationNotice.setPromoter(""); jgInstallationNotice.setPromoter("");
tzsServiceFeignClient.commonUpdateEsDataByIds(objMap); tzsServiceFeignClient.commonUpdateEsDataByIds(objMap);
tzsJgOtherInfoMapper.updateById(tzsJgOtherInfo); tzsJgOtherInfoMapper.updateById(tzsJgOtherInfo);
tzsJgRegistrationInfoMapper.updateById(tzsJgRegistrationInfo); tzsJgRegistrationInfoMapper.updateById(tzsJgRegistrationInfo);
// 更新施工信息表 // 更新施工信息表
IdxBizJgConstructionInfo idxBizJgConstructionInfo = constructionInfoService.queryNewestDetailByRecord(jgRelationEquip.getEquId()); IdxBizJgConstructionInfo idxBizJgConstructionInfo = constructionInfoService.queryNewestDetailByRecord(jgRelationEquip.getEquId());
if (!ObjectUtils.isEmpty(idxBizJgConstructionInfo)) { if (!ObjectUtils.isEmpty(idxBizJgConstructionInfo)) {
idxBizJgConstructionInfo.setUscUnitCreditCode(jgInstallationNotice.getInstallUnitCreditCode()); idxBizJgConstructionInfo.setUscUnitCreditCode(jgInstallationNotice.getInstallUnitCreditCode());
idxBizJgConstructionInfo.setUscUnitName(jgInstallationNotice.getInstallUnitName()); idxBizJgConstructionInfo.setUscUnitName(jgInstallationNotice.getInstallUnitName());
idxBizJgConstructionInfo.setUscDate(jgInstallationNotice.getInstallStartDate()); idxBizJgConstructionInfo.setUscDate(jgInstallationNotice.getInstallStartDate());
// 获取施工类型id // 获取施工类型id
LambdaQueryWrapper<DataDictionary> lambda = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DataDictionary> lambda = new LambdaQueryWrapper<>();
lambda.eq(DataDictionary::getType, CONSTRUCTION_TYPE); lambda.eq(DataDictionary::getType, CONSTRUCTION_TYPE);
lambda.eq(DataDictionary::getName, CONSTRUCTION_TYPE_NAME); lambda.eq(DataDictionary::getName, CONSTRUCTION_TYPE_NAME);
List<DataDictionary> dataDictionaries = dataDictionaryMapper.selectList(lambda); List<DataDictionary> dataDictionaries = dataDictionaryMapper.selectList(lambda);
if (!CollectionUtils.isEmpty(dataDictionaries)) { if (!CollectionUtils.isEmpty(dataDictionaries)) {
idxBizJgConstructionInfo.setConstructionType(String.valueOf(dataDictionaries.get(0).getSequenceNbr())); idxBizJgConstructionInfo.setConstructionType(String.valueOf(dataDictionaries.get(0).getSequenceNbr()));
}
constructionInfoService.saveOrUpdateData(idxBizJgConstructionInfo);
} }
constructionInfoService.saveOrUpdateData(idxBizJgConstructionInfo); // 使用信息表更新是否西咸
} IdxBizJgUseInfo useInfo = useInfoService.getOneData(jgRelationEquip.getEquId());
// 使用信息表更新是否西咸 if (!ObjectUtils.isEmpty(useInfo)) {
IdxBizJgUseInfo useInfo = useInfoService.getOneData(jgRelationEquip.getEquId()); useInfo.setUseUnitCreditCode(jgInstallationNotice.getUseUnitCreditCode());
if (!ObjectUtils.isEmpty(useInfo)) { useInfo.setUseUnitName(jgInstallationNotice.getUseUnitName());
useInfo.setUseUnitCreditCode(jgInstallationNotice.getUseUnitCreditCode()); useInfo.setIsNotXiXian(jgInstallationNotice.getIsXixian() == null ? "0" : jgInstallationNotice.getIsXixian());
useInfo.setUseUnitName(jgInstallationNotice.getUseUnitName()); useInfoService.saveOrUpdateData(useInfo);
useInfo.setIsNotXiXian(jgInstallationNotice.getIsXixian() == null ? "0" : jgInstallationNotice.getIsXixian()); }
useInfoService.saveOrUpdateData(useInfo); // 修改属地 - 字段去除
}
// 修改属地 - 字段去除
// LambdaUpdateWrapper<SuperviseInfo> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); // LambdaUpdateWrapper<SuperviseInfo> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
// lambdaUpdateWrapper.eq(SuperviseInfo::getRecord, jgRelationEquip.getEquId()); // lambdaUpdateWrapper.eq(SuperviseInfo::getRecord, jgRelationEquip.getEquId());
// SuperviseInfo superviseInfo = new SuperviseInfo(); // SuperviseInfo superviseInfo = new SuperviseInfo();
// superviseInfo.setOrgBranchName(jgInstallationNotice.getOrgBranchName()); // superviseInfo.setOrgBranchName(jgInstallationNotice.getOrgBranchName());
// superviseInfo.setOrgBranchCode(jgInstallationNotice.getOrgBranchCode()); // superviseInfo.setOrgBranchCode(jgInstallationNotice.getOrgBranchCode());
// superviseInfoMapper.update(superviseInfo, lambdaUpdateWrapper); // superviseInfoMapper.update(superviseInfo, lambdaUpdateWrapper);
// 修改使用信息 // 修改使用信息
LambdaUpdateWrapper<IdxBizJgUseInfo> lambda = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<IdxBizJgUseInfo> lambda = new LambdaUpdateWrapper<>();
lambda.eq(IdxBizJgUseInfo::getRecord, jgRelationEquip.getEquId()); lambda.eq(IdxBizJgUseInfo::getRecord, jgRelationEquip.getEquId());
IdxBizJgUseInfo idxBizJgUseInfo = new IdxBizJgUseInfo(); IdxBizJgUseInfo idxBizJgUseInfo = new IdxBizJgUseInfo();
idxBizJgUseInfo.setProvince(jgInstallationNotice.getProvince()); idxBizJgUseInfo.setProvince(jgInstallationNotice.getProvince());
idxBizJgUseInfo.setProvinceName(jgInstallationNotice.getProvinceName()); idxBizJgUseInfo.setProvinceName(jgInstallationNotice.getProvinceName());
idxBizJgUseInfo.setCity(jgInstallationNotice.getCity()); idxBizJgUseInfo.setCity(jgInstallationNotice.getCity());
idxBizJgUseInfo.setCityName(jgInstallationNotice.getCityName()); idxBizJgUseInfo.setCityName(jgInstallationNotice.getCityName());
idxBizJgUseInfo.setCounty(jgInstallationNotice.getCounty()); idxBizJgUseInfo.setCounty(jgInstallationNotice.getCounty());
idxBizJgUseInfo.setCountyName(jgInstallationNotice.getCountyName()); idxBizJgUseInfo.setCountyName(jgInstallationNotice.getCountyName());
idxBizJgUseInfo.setFactoryUseSiteStreet(jgInstallationNotice.getFactoryUseSiteStreet()); idxBizJgUseInfo.setFactoryUseSiteStreet(jgInstallationNotice.getFactoryUseSiteStreet());
idxBizJgUseInfo.setStreetName(jgInstallationNotice.getStreetName()); idxBizJgUseInfo.setStreetName(jgInstallationNotice.getStreetName());
idxBizJgUseInfo.setAddress(jgInstallationNotice.getAddress()); idxBizJgUseInfo.setAddress(jgInstallationNotice.getAddress());
idxBizJgUseInfo.setIsNotXiXian(jgInstallationNotice.getIsXixian()); idxBizJgUseInfo.setIsNotXiXian(jgInstallationNotice.getIsXixian());
idxBizJgUseInfoMapper.update(idxBizJgUseInfo, lambda); idxBizJgUseInfoMapper.update(idxBizJgUseInfo, lambda);
// 上个代办改为已办 // 上个代办改为已办
HashMap<String, Object> taskMap = new HashMap<>(); HashMap<String, Object> taskMap = new HashMap<>();
taskMap.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode()); taskMap.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode());
taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName()); taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
taskMap.put("relationId", jgInstallationNotice.getInstanceId()); taskMap.put("relationId", jgInstallationNotice.getInstanceId());
taskMap.put("flowStatus", FlowStatusEnum.TO_BE_FINISHED.getCode()); taskMap.put("flowStatus", FlowStatusEnum.TO_BE_FINISHED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName()); taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
TaskMessageDto taskMessageDto = new TaskMessageDto(); TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgInstallationNotice, taskMessageDto); BeanUtils.copyProperties(jgInstallationNotice, taskMessageDto);
taskMap.put("model", taskMessageDto); taskMap.put("model", taskMessageDto);
taskV2Model = commonService.updateTaskModel(taskMap); taskV2Model = commonService.updateTaskModel(taskMap);
} else {
jgInstallationNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jgInstallationNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
if (!ObjectUtils.isEmpty(jgInstallationNotice.getInstanceStatus())) {
jgInstallationNotice.setInstanceStatus(jgInstallationNotice.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds());
} else { } else {
jgInstallationNotice.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds()); jgInstallationNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jgInstallationNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
if (!ObjectUtils.isEmpty(jgInstallationNotice.getInstanceStatus())) {
jgInstallationNotice.setInstanceStatus(jgInstallationNotice.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds());
} else {
jgInstallationNotice.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds());
}
jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
// 上个代办改为已办
HashMap<String, Object> taskMap = new HashMap<>();
taskMap.put("taskStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
taskMap.put("flowStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
taskMap.put("relationId", jgInstallationNotice.getInstanceId());
taskV2Model = commonService.updateTaskModel(taskMap);
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setFlowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskModelDto.setFlowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgInstallationNotice, taskMessageDto);
taskModelDto.setModel(taskMessageDto);
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
} }
jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode())); } else {
jgInstallationNotice.setPromoter("");
jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode()));
// 上个代办改为已办 // 上个代办改为已办
HashMap<String, Object> taskMap = new HashMap<>(); HashMap<String, Object> taskMap = new HashMap<>();
taskMap.put("taskStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode()); taskMap.put("taskStatus", jgInstallationNotice.getNoticeStatus());
taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName()); taskMap.put("taskStatusLabel", FlowStatusEnum.REJECTED.getName());
taskMap.put("flowStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
taskMap.put("relationId", jgInstallationNotice.getInstanceId()); taskMap.put("relationId", jgInstallationNotice.getInstanceId());
taskMap.put("flowStatus", FlowStatusEnum.REJECTED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.REJECTED.getName());
taskV2Model = commonService.updateTaskModel(taskMap); taskV2Model = commonService.updateTaskModel(taskMap);
TaskModelDto taskModelDto = new TaskModelDto(); TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto); BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办 // 创建新的代办
taskModelDto.setTaskName(workflowResultDto.getNextTaskName()); taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); taskModelDto.setFlowStatus(FlowStatusEnum.REJECTED.getCode());
taskModelDto.setFlowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode()); taskModelDto.setFlowStatusLabel(FlowStatusEnum.REJECTED.getName());
taskModelDto.setFlowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId()); taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds()); taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
taskModelDto.setPageType("edit");
TaskMessageDto taskMessageDto = new TaskMessageDto(); TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgInstallationNotice, taskMessageDto); BeanUtils.copyProperties(jgInstallationNotice, taskMessageDto);
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setModel(taskMessageDto); taskModelDto.setModel(taskMessageDto);
commonService.buildTaskModel(Collections.singletonList(taskModelDto)); commonService.buildTaskModel(Collections.singletonList(taskModelDto));
} }
} else { jgInstallationNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgInstallationNotice.setPromoter(""); jgInstallationNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode())); this.updateById(jgInstallationNotice);
// 上个代办改为已办 commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgInstallationNotice));
HashMap<String, Object> taskMap = new HashMap<>(); } catch (InterruptedException e) {
taskMap.put("taskStatus", jgInstallationNotice.getNoticeStatus()); e.printStackTrace();
taskMap.put("taskStatusLabel", FlowStatusEnum.REJECTED.getName()); } finally {
taskMap.put("relationId", jgInstallationNotice.getInstanceId()); if(lock.isHeldByCurrentThread()){
taskMap.put("flowStatus", FlowStatusEnum.REJECTED.getCode()); lock.unlock();
taskMap.put("flowStatusLabel", FlowStatusEnum.REJECTED.getName()); }
taskV2Model = commonService.updateTaskModel(taskMap);
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setFlowStatus(FlowStatusEnum.REJECTED.getCode());
taskModelDto.setFlowStatusLabel(FlowStatusEnum.REJECTED.getName());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
taskModelDto.setPageType("edit");
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgInstallationNotice, taskMessageDto);
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setModel(taskMessageDto);
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
} }
jgInstallationNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); }
jgInstallationNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
this.updateById(jgInstallationNotice); public InstanceRuntimeData buildInstanceRuntimeData(JgInstallationNotice jgInstallationNotice) {
return InstanceRuntimeData.builder()
.nextExecuteUserIds(jgInstallationNotice.getNextExecuteUserIds())
.promoter(jgInstallationNotice.getPromoter())
.nextTaskId(jgInstallationNotice.getNextTaskId())
.build();
} }
......
...@@ -7,16 +7,14 @@ import com.alibaba.fastjson.JSONObject; ...@@ -7,16 +7,14 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.util.StringUtil;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.service.IDataDictionaryService; import com.yeejoin.amos.boot.biz.common.service.IDataDictionaryService;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.JgMaintainNoticeDto; import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.dto.TaskMessageDto;
import com.yeejoin.amos.boot.module.jg.api.dto.TaskModelDto;
import com.yeejoin.amos.boot.module.jg.api.dto.WorkflowResultDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintainNotice; import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintainNotice;
import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintainNoticeEq; import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintainNoticeEq;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
...@@ -30,10 +28,15 @@ import com.yeejoin.amos.boot.module.jg.biz.utils.WordTemplateUtils; ...@@ -30,10 +28,15 @@ import com.yeejoin.amos.boot.module.jg.biz.utils.WordTemplateUtils;
import com.yeejoin.amos.boot.module.ymt.api.entity.RegistrationInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.RegistrationInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*; import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.OtherInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.RegistrationInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.SupervisoryCodeInfoMapper;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model; import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.Workflow; import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.*; import com.yeejoin.amos.feign.workflow.model.*;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -49,6 +52,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel; ...@@ -49,6 +52,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.text.ParseException; import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -95,9 +99,6 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -95,9 +99,6 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
DataDictionaryServiceImpl iDataDictionaryService; DataDictionaryServiceImpl iDataDictionaryService;
@Autowired @Autowired
private TzBaseUnitLicenceMapper baseUnitLicenceMapper;
@Autowired
private CommonServiceImpl commonService; private CommonServiceImpl commonService;
@Autowired @Autowired
...@@ -109,6 +110,9 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -109,6 +110,9 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
@Autowired @Autowired
JgInstallationNoticeServiceImpl jgInstallationNoticeService; JgInstallationNoticeServiceImpl jgInstallationNoticeService;
@Autowired
private RedissonClient redissonClient;
/** /**
* 根据sequenceNbr查询 * 根据sequenceNbr查询
* *
...@@ -142,7 +146,7 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -142,7 +146,7 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
// 设备信息 "equCategory", "equDefine", "equRegisterCode", "produceCountry", "produceLicenseNum", // 设备信息 "equCategory", "equDefine", "equRegisterCode", "produceCountry", "produceLicenseNum",
JgMaintainNoticeEq jgMaintainNoticeEq = jgMaintainNoticeEqMapper.selectOne(new LambdaQueryWrapper<JgMaintainNoticeEq>().eq(JgMaintainNoticeEq::getEquipTransferId, sequenceNbr)); JgMaintainNoticeEq jgMaintainNoticeEq = jgMaintainNoticeEqMapper.selectOne(new LambdaQueryWrapper<JgMaintainNoticeEq>().eq(JgMaintainNoticeEq::getEquipTransferId, sequenceNbr));
Map<String, Object> map = idxBizJgRegisterInfoService.getDetailFieldCamelCaseByRecord(jgMaintainNoticeEq.getEquId()); Map<String, Object> map = idxBizJgRegisterInfoService.getDetailFieldCamelCaseByRecord(jgMaintainNoticeEq.getEquId());
map.put("uuseUnitCreditCode",map.get("useUnitCreditCode")); map.put("uuseUnitCreditCode", map.get("useUnitCreditCode"));
map.remove("useUnitCreditCode"); map.remove("useUnitCreditCode");
map.remove("address"); map.remove("address");
map.remove("sequenceNbr"); map.remove("sequenceNbr");
...@@ -266,6 +270,7 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -266,6 +270,7 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
commonService.buildTaskModel(Collections.singletonList(taskModelDto)); commonService.buildTaskModel(Collections.singletonList(taskModelDto));
} }
} }
commonService.saveExecuteFlowData2Redis(notice.getInstanceId(),this.buildInstanceRuntimeData(notice));
} else { } else {
JgMaintainNotice bean = new JgMaintainNotice(); JgMaintainNotice bean = new JgMaintainNotice();
BeanUtils.copyProperties(noticeDto, bean); BeanUtils.copyProperties(noticeDto, bean);
...@@ -288,7 +293,7 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -288,7 +293,7 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
String type = reginParams.getCompany().getLevel(); String type = reginParams.getCompany().getLevel();
String userId = reginParams.getUserModel().getUserId(); String userId = reginParams.getUserModel().getUserId();
List<DataDictionary> dictionaries = dataDictionaryService.getByType("WXLX"); List<DataDictionary> dictionaries = dataDictionaryService.getByType("WXLX");
Page<JgMaintainNotice> noticePage = jgMaintainNoticeMapper.queryForPage(page, model, type, orgCode,userId); Page<JgMaintainNotice> noticePage = jgMaintainNoticeMapper.queryForPage(page, model, type, orgCode, userId);
Page<JgMaintainNoticeDto> noticeDtoPage = new Page<>(); Page<JgMaintainNoticeDto> noticeDtoPage = new Page<>();
BeanUtils.copyProperties(noticePage, noticeDtoPage, "records"); BeanUtils.copyProperties(noticePage, noticeDtoPage, "records");
List<JgMaintainNoticeDto> records = noticePage.getRecords().stream().map(notice -> { List<JgMaintainNoticeDto> records = noticePage.getRecords().stream().map(notice -> {
...@@ -433,7 +438,7 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -433,7 +438,7 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
dto.setCreateUserName(reginParams.getUserModel().getRealName()); dto.setCreateUserName(reginParams.getUserModel().getRealName());
dto.setCreateUserId(reginParams.getUserModel().getUserId()); dto.setCreateUserId(reginParams.getUserModel().getUserId());
DataDictionary dictionary = iDataDictionaryService.getByCode(dto.getMaintainType(),"WXLX"); DataDictionary dictionary = iDataDictionaryService.getByCode(dto.getMaintainType(), "WXLX");
dto.setMaintainTypeDesc(dictionary.getName()); dto.setMaintainTypeDesc(dictionary.getName());
dto.setFullAddress(dto.getProvinceName() + dto.getCityName() + dto.getCountyName() + dto.getStreetName() + dto.getAddress()); dto.setFullAddress(dto.getProvinceName() + dto.getCityName() + dto.getCountyName() + dto.getStreetName() + dto.getAddress());
list.add(dto); list.add(dto);
...@@ -446,16 +451,22 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -446,16 +451,22 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
// 暂存任务 // 暂存任务
buildTaskDraft(list); buildTaskDraft(list);
} }
List<JgMaintainNoticeEq> jgRelationEquipList = equipList.stream().map(jgRelationEquip -> { List<JgMaintainNoticeEq> jgRelationEquipList = equipList.stream().map(jgRelationEquip -> {
List<JgMaintainNotice> collect = list.stream().filter(JgMaintainNotice -> jgRelationEquip.getEquipTransferId().equals(JgMaintainNotice.getApplyNo())).collect(Collectors.toList()); List<JgMaintainNotice> collect = list.stream().filter(JgMaintainNotice -> jgRelationEquip.getEquipTransferId().equals(JgMaintainNotice.getApplyNo())).collect(Collectors.toList());
Long sequenceNbr = collect.get(0).getSequenceNbr(); Long sequenceNbr = collect.get(0).getSequenceNbr();
return jgRelationEquip.setEquipTransferId(String.valueOf(sequenceNbr)); return jgRelationEquip.setEquipTransferId(String.valueOf(sequenceNbr));
}).collect(Collectors.toList()); }).collect(Collectors.toList());
jgMaintainNoticeEqMapper.insertBatchSomeColumn(jgRelationEquipList); jgMaintainNoticeEqMapper.insertBatchSomeColumn(jgRelationEquipList);
this.updateRedisBatch(list);
return list; return list;
} }
private void updateRedisBatch(List<JgMaintainNotice> jgMaintainNotices) {
jgMaintainNotices.stream().filter(n -> StringUtil.isNotEmpty(n.getInstanceId())).forEach(jgMaintainNotice -> {
commonService.saveExecuteFlowData2Redis(jgMaintainNotice.getInstanceId(), this.buildInstanceRuntimeData(jgMaintainNotice));
});
}
/** /**
* 暂存任务生成待办 * 暂存任务生成待办
* *
...@@ -563,8 +574,9 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -563,8 +574,9 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
} }
private void convertField(JgMaintainNoticeDto model) { private void convertField(JgMaintainNoticeDto model) {
if (null == model) if (null == model) {
return; return;
}
// 处理附件 // 处理附件
if (!ValidationUtil.isEmpty(model.getPowerOfAttorneyList())) { if (!ValidationUtil.isEmpty(model.getPowerOfAttorneyList())) {
model.setPowerOfAttorney(JSON.toJSONString(model.getPowerOfAttorneyList())); model.setPowerOfAttorney(JSON.toJSONString(model.getPowerOfAttorneyList()));
...@@ -675,102 +687,165 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -675,102 +687,165 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
} }
public void cancel(JgMaintainNoticeDto noticeDto) { public void cancel(JgMaintainNoticeDto noticeDto) {
JgMaintainNotice jgMaintainNotice = this.baseMapper.selectById(noticeDto.getSequenceNbr()); String instanceId = noticeDto.getInstanceId();
// 检查实际状态是否不等于期望状态 String nextTaskId = noticeDto.getNextTaskId();
commonService.checkExpectedStatus(jgMaintainNotice.getNoticeStatus()); String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
ProcessTaskDTO processTaskDTO = cmWorkflowService.rollBack(jgMaintainNotice.getInstanceId()); RLock lock = redissonClient.getLock(lockKey);
// 提取节点等信息 try {
WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0); boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
jgMaintainNotice.setPromoter(""); // 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
jgMaintainNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds()); if (!isLocked) {
jgMaintainNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.ROLLBACK.getCode())); throw new BadRequest("当前流程已经被执行!");
jgMaintainNotice.setNextTaskId(workflowResultDto.getNextTaskId()); }
jgMaintainNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); // 流程执行时,状态及权限校验
updateById(jgMaintainNotice); commonService.checkForRevocationFlow(nextTaskId, instanceId);
JgMaintainNotice jgMaintainNotice = this.baseMapper.selectById(noticeDto.getSequenceNbr());
// 删除待办 ProcessTaskDTO processTaskDTO = cmWorkflowService.rollBack(jgMaintainNotice.getInstanceId());
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(jgMaintainNotice)); // 提取节点等信息
jsonObject.put("nextExecuteUser", jgMaintainNotice.getNextExecuteIds()); WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
jsonObject.put("taskType", BusinessTypeEnum.JG_MAINTENANCE_NOTIFICATION.getCode()); jgMaintainNotice.setPromoter("");
jsonObject.put("flowStatusLabel", FlowStatusEnum.ROLLBACK.getName()); jgMaintainNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jsonObject.put("flowStatus", FlowStatusEnum.ROLLBACK.getCode()); jgMaintainNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.ROLLBACK.getCode()));
jgMaintainNotice.setNextTaskId(workflowResultDto.getNextTaskId());
commonService.rollbackTask(jgMaintainNotice.getInstanceId(), jsonObject); jgMaintainNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
updateById(jgMaintainNotice);
// 删除待办
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(jgMaintainNotice));
jsonObject.put("nextExecuteUser", jgMaintainNotice.getNextExecuteIds());
jsonObject.put("taskType", BusinessTypeEnum.JG_MAINTENANCE_NOTIFICATION.getCode());
jsonObject.put("flowStatusLabel", FlowStatusEnum.ROLLBACK.getName());
jsonObject.put("flowStatus", FlowStatusEnum.ROLLBACK.getCode());
commonService.rollbackTask(jgMaintainNotice.getInstanceId(), jsonObject);
commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgMaintainNotice));
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
public InstanceRuntimeData buildInstanceRuntimeData(JgMaintainNotice jgMaintainNotice) {
return InstanceRuntimeData.builder()
.nextExecuteUserIds(jgMaintainNotice.getNextExecuteUserIds())
.promoter(jgMaintainNotice.getPromoter())
.nextTaskId(jgMaintainNotice.getNextTaskId())
.build();
} }
@Transactional @Transactional
public void accept(JgMaintainNoticeDto dto, String op, String opinion) { public void accept(JgMaintainNoticeDto dto, String op, String opinion) {
JgMaintainNotice jgMaintainNotice = this.jgMaintainNoticeMapper.selectById(dto.getSequenceNbr()); String instanceId = dto.getInstanceId();
String nextTaskId = dto.getNextTaskId();
// 检查实际状态是否不等于期望状态 String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
commonService.checkExpectedStatus(jgMaintainNotice.getNoticeStatus()); RLock lock = redissonClient.getLock(lockKey);
// 组装设备注册代码
StringBuilder stringBuffer = new StringBuilder();
String ym = null;
try { try {
ym = DateUtils.dateFormat(new Date(), DateUtils.DATE_PATTERN_MM); boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
} catch (ParseException e) { // 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
log.error("日期转换失败:{}", e); if (!isLocked) {
} throw new BadRequest("当前流程已经被执行!");
//组装信息 }
TaskResultDTO taskResultDTO = assembleData(jgMaintainNotice, op, opinion); // 流程执行时,状态及权限校验
ProcessTaskDTO processTaskDTO = cmWorkflowService.completeOrReject(jgMaintainNotice.getNextTaskId(), taskResultDTO, op); commonService.checkForExecuteFlow(nextTaskId, instanceId);
JgMaintainNotice jgMaintainNotice = this.jgMaintainNoticeMapper.selectById(dto.getSequenceNbr());
// 提取节点等信息 // 组装设备注册代码
WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0); StringBuilder stringBuffer = new StringBuilder();
TaskV2Model taskV2Model = new TaskV2Model(); String ym = null;
if ("0".equals(op)) { try {
// 判断如果下一步执行角色列表为空则流程完成 ym = DateUtils.dateFormat(new Date(), DateUtils.DATE_PATTERN_MM);
if (StringUtils.isEmpty(workflowResultDto.getNextExecutorRoleIds())) { } catch (ParseException e) {
LambdaQueryWrapper<JgMaintainNoticeEq> queryWrapper = new LambdaQueryWrapper<>(); log.error("日期转换失败:{}", e);
queryWrapper.eq(JgMaintainNoticeEq::getEquipTransferId, dto.getSequenceNbr()); }
JgMaintainNoticeEq jgRelationEquip = jgMaintainNoticeEqMapper.selectOne(queryWrapper); //组装信息
LambdaQueryWrapper<RegistrationInfo> queryWrapper2 = new LambdaQueryWrapper<>(); TaskResultDTO taskResultDTO = assembleData(jgMaintainNotice, op, opinion);
queryWrapper2.eq(RegistrationInfo::getRecord, jgRelationEquip.getEquId()); ProcessTaskDTO processTaskDTO = cmWorkflowService.completeOrReject(jgMaintainNotice.getNextTaskId(), taskResultDTO, op);
RegistrationInfo tzsJgRegistrationInfo = tzsJgRegistrationInfoMapper.selectOne(queryWrapper2);
stringBuffer.append(tzsJgRegistrationInfo.getEquCategory()).append(jgMaintainNotice.getReceiveCompanyCode()).append(ym); // 提取节点等信息
String equCode = stringBuffer.toString(); WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
ResponseModel<String> responseModel = tzsServiceFeignClient.deviceRegistrationCode(equCode); TaskV2Model taskV2Model = new TaskV2Model();
String deviceRegistrationCode = responseModel.getResult(); if ("0".equals(op)) {
jgMaintainNotice.setInformNumber(deviceRegistrationCode); // 判断如果下一步执行角色列表为空则流程完成
if (StringUtils.isEmpty(workflowResultDto.getNextExecutorRoleIds())) {
jgMaintainNotice.setAcceptDate(new Date()); LambdaQueryWrapper<JgMaintainNoticeEq> queryWrapper = new LambdaQueryWrapper<>();
jgMaintainNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode())); queryWrapper.eq(JgMaintainNoticeEq::getEquipTransferId, dto.getSequenceNbr());
jgMaintainNotice.setPromoter(""); JgMaintainNoticeEq jgRelationEquip = jgMaintainNoticeEqMapper.selectOne(queryWrapper);
jgMaintainNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode())); LambdaQueryWrapper<RegistrationInfo> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.eq(RegistrationInfo::getRecord, jgRelationEquip.getEquId());
// 上个代办改为已办 RegistrationInfo tzsJgRegistrationInfo = tzsJgRegistrationInfoMapper.selectOne(queryWrapper2);
HashMap<String, Object> taskMap = new HashMap<>(); stringBuffer.append(tzsJgRegistrationInfo.getEquCategory()).append(jgMaintainNotice.getReceiveCompanyCode()).append(ym);
taskMap.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode()); String equCode = stringBuffer.toString();
taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName()); ResponseModel<String> responseModel = tzsServiceFeignClient.deviceRegistrationCode(equCode);
taskMap.put("relationId", jgMaintainNotice.getInstanceId()); String deviceRegistrationCode = responseModel.getResult();
taskMap.put("flowStatus", FlowStatusEnum.TO_BE_FINISHED.getCode()); jgMaintainNotice.setInformNumber(deviceRegistrationCode);
taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
TaskMessageDto taskMessageDto = new TaskMessageDto(); jgMaintainNotice.setAcceptDate(new Date());
BeanUtils.copyProperties(jgMaintainNotice, taskMessageDto); jgMaintainNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode()));
taskMap.put("model", taskMessageDto); jgMaintainNotice.setPromoter("");
commonService.updateTaskModel(taskMap); jgMaintainNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode()));
jgMaintainNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); // 上个代办改为已办
jgMaintainNotice.setNextTaskId(workflowResultDto.getNextTaskId()); HashMap<String, Object> taskMap = new HashMap<>();
jgMaintainNoticeMapper.updateById(jgMaintainNotice); taskMap.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode());
this.generateMaintainNoticeReport(jgMaintainNotice.getSequenceNbr()); taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
} else { taskMap.put("relationId", jgMaintainNotice.getInstanceId());
jgMaintainNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds()); taskMap.put("flowStatus", FlowStatusEnum.TO_BE_FINISHED.getCode());
if (!ObjectUtils.isEmpty(jgMaintainNotice.getInstanceStatus())) { taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
jgMaintainNotice.setInstanceStatus(jgMaintainNotice.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds()); TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgMaintainNotice, taskMessageDto);
taskMap.put("model", taskMessageDto);
commonService.updateTaskModel(taskMap);
jgMaintainNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgMaintainNotice.setNextTaskId(workflowResultDto.getNextTaskId());
jgMaintainNoticeMapper.updateById(jgMaintainNotice);
this.generateMaintainNoticeReport(jgMaintainNotice.getSequenceNbr());
} else { } else {
jgMaintainNotice.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds()); jgMaintainNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
if (!ObjectUtils.isEmpty(jgMaintainNotice.getInstanceStatus())) {
jgMaintainNotice.setInstanceStatus(jgMaintainNotice.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds());
} else {
jgMaintainNotice.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds());
}
jgMaintainNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
// 上个代办改为已办
HashMap<String, Object> taskMap = new HashMap<>();
taskMap.put("taskStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
taskMap.put("flowStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
taskMap.put("relationId", jgMaintainNotice.getInstanceId());
taskV2Model = commonService.updateTaskModel(taskMap);
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgMaintainNotice, taskMessageDto);
taskModelDto.setModel(taskMessageDto);
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setFlowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskModelDto.setFlowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
jgMaintainNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgMaintainNotice.setNextTaskId(workflowResultDto.getNextTaskId());
jgMaintainNoticeMapper.updateById(jgMaintainNotice);
} }
jgMaintainNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode())); } else {
jgMaintainNotice.setPromoter("");
jgMaintainNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode()));
// 上个代办改为已办 // 上个代办改为已办
HashMap<String, Object> taskMap = new HashMap<>(); HashMap<String, Object> taskMap = new HashMap<>();
taskMap.put("taskStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode()); taskMap.put("taskStatus", jgMaintainNotice.getNoticeStatus());
taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName()); taskMap.put("taskStatusLabel", FlowStatusEnum.REJECTED.getName());
taskMap.put("flowStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
taskMap.put("relationId", jgMaintainNotice.getInstanceId()); taskMap.put("relationId", jgMaintainNotice.getInstanceId());
taskMap.put("flowStatus", FlowStatusEnum.REJECTED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.REJECTED.getName());
taskV2Model = commonService.updateTaskModel(taskMap); taskV2Model = commonService.updateTaskModel(taskMap);
TaskModelDto taskModelDto = new TaskModelDto(); TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto); BeanUtils.copyProperties(taskV2Model, taskModelDto);
...@@ -780,46 +855,24 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto ...@@ -780,46 +855,24 @@ public class JgMaintainNoticeServiceImpl extends BaseService<JgMaintainNoticeDto
taskModelDto.setModel(taskMessageDto); taskModelDto.setModel(taskMessageDto);
taskModelDto.setTaskName(workflowResultDto.getNextTaskName()); taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setFlowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode()); taskModelDto.setFlowStatus(FlowStatusEnum.REJECTED.getCode());
taskModelDto.setFlowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName()); taskModelDto.setFlowStatusLabel(FlowStatusEnum.REJECTED.getName());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId()); taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds()); taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
taskModelDto.setPageType("edit");
commonService.buildTaskModel(Collections.singletonList(taskModelDto)); commonService.buildTaskModel(Collections.singletonList(taskModelDto));
jgMaintainNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); jgMaintainNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgMaintainNotice.setNextTaskId(workflowResultDto.getNextTaskId()); jgMaintainNotice.setNextTaskId(workflowResultDto.getNextTaskId());
jgMaintainNoticeMapper.updateById(jgMaintainNotice); jgMaintainNoticeMapper.updateById(jgMaintainNotice);
} }
} else { commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgMaintainNotice));
jgMaintainNotice.setPromoter(""); } catch (InterruptedException e) {
jgMaintainNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode())); e.printStackTrace();
// 上个代办改为已办 } finally {
HashMap<String, Object> taskMap = new HashMap<>(); if (lock.isHeldByCurrentThread()) {
taskMap.put("taskStatus", jgMaintainNotice.getNoticeStatus()); lock.unlock();
taskMap.put("taskStatusLabel", FlowStatusEnum.REJECTED.getName()); }
taskMap.put("relationId", jgMaintainNotice.getInstanceId());
taskMap.put("flowStatus", FlowStatusEnum.REJECTED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.REJECTED.getName());
taskV2Model = commonService.updateTaskModel(taskMap);
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgMaintainNotice, taskMessageDto);
taskModelDto.setModel(taskMessageDto);
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setFlowStatus(FlowStatusEnum.REJECTED.getCode());
taskModelDto.setFlowStatusLabel(FlowStatusEnum.REJECTED.getName());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
taskModelDto.setPageType("edit");
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
jgMaintainNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgMaintainNotice.setNextTaskId(workflowResultDto.getNextTaskId());
jgMaintainNoticeMapper.updateById(jgMaintainNotice);
} }
} }
......
...@@ -6,14 +6,13 @@ import com.alibaba.fastjson.JSON; ...@@ -6,14 +6,13 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.util.StringUtil;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.JgReformNoticeDto; import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.dto.TaskMessageDto; import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.api.dto.TaskModelDto;
import com.yeejoin.amos.boot.module.jg.api.dto.WorkflowResultDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgReformNotice; import com.yeejoin.amos.boot.module.jg.api.entity.JgReformNotice;
import com.yeejoin.amos.boot.module.jg.api.entity.JgReformNoticeEq; import com.yeejoin.amos.boot.module.jg.api.entity.JgReformNoticeEq;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
...@@ -26,13 +25,18 @@ import com.yeejoin.amos.boot.module.jg.biz.utils.WordTemplateUtils; ...@@ -26,13 +25,18 @@ import com.yeejoin.amos.boot.module.jg.biz.utils.WordTemplateUtils;
import com.yeejoin.amos.boot.module.ymt.api.entity.RegistrationInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.RegistrationInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*; import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.OtherInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.RegistrationInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.SupervisoryCodeInfoMapper;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model; import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO; import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO; import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO; import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO; import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -48,6 +52,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel; ...@@ -48,6 +52,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.text.ParseException; import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
...@@ -89,8 +94,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -89,8 +94,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
RedisUtils redisUtils; RedisUtils redisUtils;
@Autowired @Autowired
private JgReformNoticeMapper jgReformNoticeMapper; private JgReformNoticeMapper jgReformNoticeMapper;
@Autowired
private TzBaseUnitLicenceMapper baseUnitLicenceMapper;
@Autowired @Autowired
private CommonServiceImpl commonService; private CommonServiceImpl commonService;
@Autowired @Autowired
...@@ -101,6 +105,9 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -101,6 +105,9 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
@Autowired @Autowired
JgInstallationNoticeServiceImpl jgInstallationNoticeService; JgInstallationNoticeServiceImpl jgInstallationNoticeService;
@Autowired
private RedissonClient redissonClient;
/** /**
* 根据sequenceNbr查询 * 根据sequenceNbr查询
* *
...@@ -130,7 +137,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -130,7 +137,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
} }
String[] fields = {"productPhoto", "designDoc", "designStandard", "factoryStandard", String[] fields = {"productPhoto", "designDoc", "designStandard", "factoryStandard",
"productQualityYieldProve", "insUseMaintainExplain", "inspectReport", "productQualityYieldProve", "insUseMaintainExplain", "inspectReport",
"proxyStatementAttachment", "installContractAttachment","otherAccessories"}; "proxyStatementAttachment", "installContractAttachment", "otherAccessories"};
// 设备信息 // 设备信息
List<Map<String, Object>> equipmentInfos = jgReformNoticeMapper.queryEquipInformation(sequenceNbr); List<Map<String, Object>> equipmentInfos = jgReformNoticeMapper.queryEquipInformation(sequenceNbr);
Map<String, Object> equipMap = null; Map<String, Object> equipMap = null;
...@@ -155,9 +162,9 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -155,9 +162,9 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
installationInfo.put("constructionManagerId", notice.getConstructionManagerId() + "_" + notice.getConstructionManager()); installationInfo.put("constructionManagerId", notice.getConstructionManagerId() + "_" + notice.getConstructionManager());
return Stream.concat( return Stream.concat(
installationInfo.entrySet().stream(), installationInfo.entrySet().stream(),
equipMap.entrySet().stream() equipMap.entrySet().stream()
) )
.filter(entry -> entry.getValue() != null) .filter(entry -> entry.getValue() != null)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (existing, replacement) -> existing)); .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (existing, replacement) -> existing));
...@@ -206,10 +213,10 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -206,10 +213,10 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
jgReformNoticeMapper.updateById(notice); jgReformNoticeMapper.updateById(notice);
//删除暂存 //删除暂存
commonService.deleteTaskModel(notice.getSequenceNbr()+""); commonService.deleteTaskModel(notice.getSequenceNbr() + "");
// 如果为保存并提交,则创建代办 // 如果为保存并提交,则创建代办
this.buildTask(Collections.singletonList(notice), Collections.singletonList(workflowResultDto)); this.buildTask(Collections.singletonList(notice), Collections.singletonList(workflowResultDto));
}else { } else {
TaskResultDTO dto = new TaskResultDTO(); TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus"); dto.setResultCode("approvalStatus");
dto.setTaskId(notice.getNextTaskId()); dto.setTaskId(notice.getNextTaskId());
...@@ -243,6 +250,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -243,6 +250,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
// 创建新的代办 // 创建新的代办
this.createNewTodo(notice, workflowResultDto, taskV2Model, FlowStatusEnum.TO_BE_PROCESSED); this.createNewTodo(notice, workflowResultDto, taskV2Model, FlowStatusEnum.TO_BE_PROCESSED);
} }
commonService.saveExecuteFlowData2Redis(notice.getInstanceId(),this.buildInstanceRuntimeData(notice));
} else { } else {
JgReformNotice bean = new JgReformNotice(); JgReformNotice bean = new JgReformNotice();
BeanUtils.copyProperties(noticeDto, bean); BeanUtils.copyProperties(noticeDto, bean);
...@@ -347,7 +355,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -347,7 +355,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
@Override @Override
@SuppressWarnings({"Duplicates", "rawtypes"}) @SuppressWarnings({"Duplicates", "rawtypes"})
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public List<JgReformNotice> saveNotice(String submitType, Map<String, Object> JgReformNoticeDtoMap, ReginParams reginParams) { public List<JgReformNotice> saveNotice(String submitType, Map<String, Object> JgReformNoticeDtoMap, ReginParams reginParams) {
JgReformNoticeDto model = JSON.parseObject(JSONObject.toJSONString(JgReformNoticeDtoMap.get(TABLE_PAGE_ID)), JgReformNoticeDto.class); JgReformNoticeDto model = JSON.parseObject(JSONObject.toJSONString(JgReformNoticeDtoMap.get(TABLE_PAGE_ID)), JgReformNoticeDto.class);
convertField(model); convertField(model);
// 获取告知设备列表 // 获取告知设备列表
...@@ -385,11 +393,11 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -385,11 +393,11 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
dto.setCreateUserName(reginParams.getUserModel().getRealName()); dto.setCreateUserName(reginParams.getUserModel().getRealName());
dto.setCreateUserId(reginParams.getUserModel().getUserId()); dto.setCreateUserId(reginParams.getUserModel().getUserId());
dto.setCreateUserCompanyName(reginParams.getCompany().getCompanyName()); dto.setCreateUserCompanyName(reginParams.getCompany().getCompanyName());
dto.setEquCategory(Objects.toString(obj.get("EQU_CATEGORY"),"")); dto.setEquCategory(Objects.toString(obj.get("EQU_CATEGORY"), ""));
dto.setEquListCode(Objects.toString(obj.get("EQU_DEFINE"),"")); dto.setEquListCode(Objects.toString(obj.get("EQU_DEFINE"), ""));
dto.setSupervisoryCode(Objects.toString(obj.get("SUPERVISORY_CODE"),"")); dto.setSupervisoryCode(Objects.toString(obj.get("SUPERVISORY_CODE"), ""));
dto.setEquList(Objects.toString(obj.get("EQU_LIST"),"")); dto.setEquList(Objects.toString(obj.get("EQU_LIST"), ""));
dto.setFullAddress(Objects.toString(obj.get("ADDRESS"),"")); dto.setFullAddress(Objects.toString(obj.get("ADDRESS"), ""));
if (SUBMIT_TYPE_FLOW.equals(submitType)) { if (SUBMIT_TYPE_FLOW.equals(submitType)) {
WorkflowResultDto workflowResult = workflowResultList.get(i); WorkflowResultDto workflowResult = workflowResultList.get(i);
...@@ -398,7 +406,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -398,7 +406,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
dto.setPromoter(reginParams.getUserModel().getUserId()); dto.setPromoter(reginParams.getUserModel().getUserId());
dto.setNextTaskId(workflowResult.getNextTaskId()); dto.setNextTaskId(workflowResult.getNextTaskId());
dto.setNextExecuteUserIds(workflowResult.getNextExecutorUserIds()); dto.setNextExecuteUserIds(workflowResult.getNextExecutorUserIds());
}else{ } else {
dto.setNextExecuteUserIds(RequestContext.getExeUserId()); dto.setNextExecuteUserIds(RequestContext.getExeUserId());
} }
dto.setInstallUnitName(reginParams.getCompany().getCompanyName()); dto.setInstallUnitName(reginParams.getCompany().getCompanyName());
...@@ -423,22 +431,28 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -423,22 +431,28 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
if (SUBMIT_TYPE_FLOW.equals(submitType)) { if (SUBMIT_TYPE_FLOW.equals(submitType)) {
this.buildTask(list, workflowResultList); this.buildTask(list, workflowResultList);
}else { } else {
this.saveTempReformNotice(list); this.saveTempReformNotice(list);
} }
List<JgReformNoticeEq> jgRelationEquipList = equipList.stream().map(jgRelationEquip -> { List<JgReformNoticeEq> jgRelationEquipList = equipList.stream().map(jgRelationEquip -> {
List<JgReformNotice> collect = list.stream().filter(JgReformNotice -> jgRelationEquip.getEquipTransferId().equals(JgReformNotice.getApplyNo())).collect(Collectors.toList()); List<JgReformNotice> collect = list.stream().filter(JgReformNotice -> jgRelationEquip.getEquipTransferId().equals(JgReformNotice.getApplyNo())).collect(Collectors.toList());
Long sequenceNbr = collect.get(0).getSequenceNbr(); Long sequenceNbr = collect.get(0).getSequenceNbr();
return jgRelationEquip.setEquipTransferId(String.valueOf(sequenceNbr)); return jgRelationEquip.setEquipTransferId(String.valueOf(sequenceNbr));
}).collect(Collectors.toList()); }).collect(Collectors.toList());
jgReformNoticeEqMapper.insertBatchSomeColumn(jgRelationEquipList); jgReformNoticeEqMapper.insertBatchSomeColumn(jgRelationEquipList);
this.updateRedisBatch(list);
return list; return list;
} }
private void updateRedisBatch(List<JgReformNotice> jgReformNotices) {
jgReformNotices.stream().filter(n-> StringUtil.isNotEmpty(n.getInstanceId())).forEach(jgReformNotice -> {
commonService.saveExecuteFlowData2Redis(jgReformNotice.getInstanceId(), this.buildInstanceRuntimeData(jgReformNotice));
});
}
/** /**
* 批量暂存 * 批量暂存
*
* @param noticeList 移交信息 * @param noticeList 移交信息
*/ */
private void saveTempReformNotice(List<JgReformNotice> noticeList) { private void saveTempReformNotice(List<JgReformNotice> noticeList) {
...@@ -456,7 +470,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -456,7 +470,7 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
.taskContent(String.format("来自%s【%s】的业务办理,【申请单号:%s】", item.getEquList(), Objects.toString(item.getSupervisoryCode(), ""), item.getApplyNo())) .taskContent(String.format("来自%s【%s】的业务办理,【申请单号:%s】", item.getEquList(), Objects.toString(item.getSupervisoryCode(), ""), item.getApplyNo()))
.taskCode(item.getApplyNo()) .taskCode(item.getApplyNo())
.taskType(BusinessTypeEnum.JG_MODIFICATION_NOTIFICATION.getCode()) .taskType(BusinessTypeEnum.JG_MODIFICATION_NOTIFICATION.getCode())
.relationId(item.getSequenceNbr()+"") .relationId(item.getSequenceNbr() + "")
.build(); .build();
} }
...@@ -634,13 +648,22 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -634,13 +648,22 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
* *
* @param noticeDto 改造信息 * @param noticeDto 改造信息
*/ */
@Transactional(rollbackFor = Exception.class)
public void cancel(JgReformNoticeDto noticeDto) { public void cancel(JgReformNoticeDto noticeDto) {
// 查询 改造信息 String instanceId = noticeDto.getInstanceId();
JgReformNotice notice = baseMapper.selectById(noticeDto.getSequenceNbr()); String nextTaskId = noticeDto.getNextTaskId();
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
if (notice != null) { RLock lock = redissonClient.getLock(lockKey);
// 检查实际状态是否不等于期望状态 try {
commonService.checkExpectedStatus(notice.getNoticeStatus()); boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if (!isLocked) {
throw new BadRequest("当前流程已经被执行!");
}
// 流程执行时,状态及权限校验
commonService.checkForRevocationFlow(nextTaskId, instanceId);
// 查询 改造信息
JgReformNotice notice = baseMapper.selectById(noticeDto.getSequenceNbr());
// 回滚工作流 // 回滚工作流
ProcessTaskDTO processTaskDTO = cmWorkflowService.rollBack(noticeDto.getInstanceId()); ProcessTaskDTO processTaskDTO = cmWorkflowService.rollBack(noticeDto.getInstanceId());
WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0); WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
...@@ -650,13 +673,19 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -650,13 +673,19 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
notice.setNextTaskId(workflowResultDto.getNextTaskId()); notice.setNextTaskId(workflowResultDto.getNextTaskId());
notice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); notice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
baseMapper.updateById(notice); baseMapper.updateById(notice);
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(notice)); JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(notice));
jsonObject.put("nextExecuteUser", notice.getNextExecuteIds()); jsonObject.put("nextExecuteUser", notice.getNextExecuteIds());
jsonObject.put("taskType", BusinessTypeEnum.JG_MODIFICATION_NOTIFICATION.getCode()); jsonObject.put("taskType", BusinessTypeEnum.JG_MODIFICATION_NOTIFICATION.getCode());
jsonObject.put("flowStatus", FlowStatusEnum.ROLLBACK.getCode()); jsonObject.put("flowStatus", FlowStatusEnum.ROLLBACK.getCode());
jsonObject.put("flowStatusLabel", FlowStatusEnum.ROLLBACK.getName()); jsonObject.put("flowStatusLabel", FlowStatusEnum.ROLLBACK.getName());
commonService.rollbackTask(notice.getInstanceId(), jsonObject); commonService.rollbackTask(notice.getInstanceId(), jsonObject);
commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(notice));
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
} }
} }
...@@ -667,93 +696,118 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg ...@@ -667,93 +696,118 @@ public class JgReformNoticeServiceImpl extends BaseService<JgReformNoticeDto, Jg
* @param op 通过或驳回 * @param op 通过或驳回
*/ */
public void accept(JgReformNoticeDto dto, String op) { public void accept(JgReformNoticeDto dto, String op) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class); String instanceId = dto.getInstanceId();
JgReformNotice jgReformNotice = baseMapper.selectById(dto.getSequenceNbr()); String nextTaskId = dto.getNextTaskId();
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
// 检查实际状态是否不等于期望状态 RLock lock = redissonClient.getLock(lockKey);
commonService.checkExpectedStatus(jgReformNotice.getNoticeStatus());
jgReformNotice.setCreateUserCompanyName(reginParams.getCompany().getCompanyName());
// 组装设备注册代码
StringBuilder stringBuffer = new StringBuilder();
String ym = null;
try { try {
ym = DateUtils.dateFormat(new Date(), DateUtils.DATE_PATTERN_MM); boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
} catch (ParseException e) { // 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
log.error("日期转换失败:{}", e.getMessage()); if (!isLocked) {
} throw new BadRequest("当前流程已经被执行!");
}
// 流程执行时,状态及权限校验
commonService.checkForExecuteFlow(nextTaskId, instanceId);
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
JgReformNotice jgReformNotice = baseMapper.selectById(dto.getSequenceNbr());
jgReformNotice.setCreateUserCompanyName(reginParams.getCompany().getCompanyName());
// 组装设备注册代码
StringBuilder stringBuffer = new StringBuilder();
String ym = null;
try {
ym = DateUtils.dateFormat(new Date(), DateUtils.DATE_PATTERN_MM);
} catch (ParseException e) {
log.error("日期转换失败:{}", e.getMessage());
}
TaskResultDTO workDto = new TaskResultDTO(); TaskResultDTO workDto = new TaskResultDTO();
workDto.setResultCode("approvalStatus"); workDto.setResultCode("approvalStatus");
workDto.setTaskId(jgReformNotice.getNextTaskId()); workDto.setTaskId(jgReformNotice.getNextTaskId());
HashMap<String, Object> commMap = new HashMap<>(); HashMap<String, Object> commMap = new HashMap<>();
if (jgReformNotice.getNoticeStatus().equals("6614") || jgReformNotice.getNoticeStatus().equals("6615")) { if (jgReformNotice.getNoticeStatus().equals("6614") || jgReformNotice.getNoticeStatus().equals("6615")) {
commMap.put("approvalStatus", "提交"); commMap.put("approvalStatus", "提交");
} else {
commMap.put("approvalStatus", op);
}
workDto.setNextExecuteUserCompanyCode("1".equals(op) ? jgReformNotice.getInstallUnitCreditCode() : jgReformNotice.getReceiveOrgCode());
workDto.setVariable(commMap);
workDto.setComment(dto.getRemark());
ProcessTaskDTO processTaskDTO = cmWorkflowService.completeOrReject(jgReformNotice.getNextTaskId(), workDto, op);
WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
jgReformNotice.setPromoter(reginParams.getUserModel().getUserId());
jgReformNotice.setRemark(dto.getRemark());
TaskV2Model taskV2Model;
if ("0".equals(op)) {
if (StringUtils.isEmpty(workflowResultDto.getNextExecutorRoleIds())) {
LambdaQueryWrapper<JgReformNoticeEq> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgReformNoticeEq::getEquipTransferId, dto.getSequenceNbr());
JgReformNoticeEq jgRelationEquip = jgReformNoticeEqMapper.selectOne(queryWrapper);
LambdaQueryWrapper<RegistrationInfo> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.eq(RegistrationInfo::getRecord, jgRelationEquip.getEquId());
RegistrationInfo tzsJgRegistrationInfo = tzsJgRegistrationInfoMapper.selectOne(queryWrapper2);
stringBuffer.append(tzsJgRegistrationInfo.getEquCategory()).append(jgReformNotice.getReceiveCompanyCode()).append(ym);
String equCode = stringBuffer.toString();
ResponseModel<String> responseModel = tzsServiceFeignClient.deviceRegistrationCode(equCode);
String deviceRegistrationCode = responseModel.getResult();
jgReformNotice.setInformNumber(deviceRegistrationCode);
jgReformNotice.setAcceptDate(new Date());
jgReformNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode()));
jgReformNotice.setPromoter("");
this.updateLastTodo(jgReformNotice, FlowStatusEnum.TO_BE_FINISHED);
this.updateById(jgReformNotice);
this.generateInstallationNoticeReport(jgReformNotice.getSequenceNbr());
} else { } else {
jgReformNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds()); commMap.put("approvalStatus", op);
if (!ObjectUtils.isEmpty(jgReformNotice.getInstanceStatus())) { }
jgReformNotice.setInstanceStatus(jgReformNotice.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds()); workDto.setNextExecuteUserCompanyCode("1".equals(op) ? jgReformNotice.getInstallUnitCreditCode() : jgReformNotice.getReceiveOrgCode());
workDto.setVariable(commMap);
workDto.setComment(dto.getRemark());
ProcessTaskDTO processTaskDTO = cmWorkflowService.completeOrReject(jgReformNotice.getNextTaskId(), workDto, op);
WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
jgReformNotice.setPromoter(reginParams.getUserModel().getUserId());
jgReformNotice.setRemark(dto.getRemark());
TaskV2Model taskV2Model;
if ("0".equals(op)) {
if (StringUtils.isEmpty(workflowResultDto.getNextExecutorRoleIds())) {
LambdaQueryWrapper<JgReformNoticeEq> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgReformNoticeEq::getEquipTransferId, dto.getSequenceNbr());
JgReformNoticeEq jgRelationEquip = jgReformNoticeEqMapper.selectOne(queryWrapper);
LambdaQueryWrapper<RegistrationInfo> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.eq(RegistrationInfo::getRecord, jgRelationEquip.getEquId());
RegistrationInfo tzsJgRegistrationInfo = tzsJgRegistrationInfoMapper.selectOne(queryWrapper2);
stringBuffer.append(tzsJgRegistrationInfo.getEquCategory()).append(jgReformNotice.getReceiveCompanyCode()).append(ym);
String equCode = stringBuffer.toString();
ResponseModel<String> responseModel = tzsServiceFeignClient.deviceRegistrationCode(equCode);
String deviceRegistrationCode = responseModel.getResult();
jgReformNotice.setInformNumber(deviceRegistrationCode);
jgReformNotice.setAcceptDate(new Date());
jgReformNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode()));
jgReformNotice.setPromoter("");
this.updateLastTodo(jgReformNotice, FlowStatusEnum.TO_BE_FINISHED);
this.updateById(jgReformNotice);
this.generateInstallationNoticeReport(jgReformNotice.getSequenceNbr());
} else { } else {
jgReformNotice.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds()); jgReformNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
if (!ObjectUtils.isEmpty(jgReformNotice.getInstanceStatus())) {
jgReformNotice.setInstanceStatus(jgReformNotice.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds());
} else {
jgReformNotice.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds());
}
jgReformNotice.setPromoter(RequestContext.getExeUserId());
jgReformNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
jgReformNotice.setNextTaskId(workflowResultDto.getNextTaskId());
// 上个代办改为已办
taskV2Model = this.updateLastTodo(jgReformNotice, FlowStatusEnum.TO_BE_FINISHED);
// 创建新的代办
this.createNewTodo(jgReformNotice, workflowResultDto, taskV2Model, FlowStatusEnum.TO_BE_PROCESSED);
jgReformNoticeMapper.updateById(jgReformNotice);
} }
jgReformNotice.setPromoter(RequestContext.getExeUserId()); } else {
jgReformNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode())); jgReformNotice.setPromoter("");
jgReformNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode()));
jgReformNotice.setSupervisoryCode(dto.getSupervisoryCode());
jgReformNotice.setEquList(dto.getEquList());
jgReformNotice.setNextTaskId(workflowResultDto.getNextTaskId()); jgReformNotice.setNextTaskId(workflowResultDto.getNextTaskId());
// 上个代办改为已办 jgReformNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskV2Model = this.updateLastTodo(jgReformNotice, FlowStatusEnum.TO_BE_FINISHED); //jgReformNotice.setInstanceId(workflowResultDto.getInstanceId());
// 创建新的代办
this.createNewTodo(jgReformNotice, workflowResultDto, taskV2Model, FlowStatusEnum.TO_BE_PROCESSED); // 上个代办改为驳回
taskV2Model = this.updateLastTodo(jgReformNotice, FlowStatusEnum.REJECTED);
this.createNewTodo(jgReformNotice, workflowResultDto, taskV2Model, FlowStatusEnum.REJECTED);
jgReformNoticeMapper.updateById(jgReformNotice); jgReformNoticeMapper.updateById(jgReformNotice);
} }
} else { commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgReformNotice));
jgReformNotice.setPromoter(""); } catch (InterruptedException e) {
jgReformNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode())); e.printStackTrace();
jgReformNotice.setSupervisoryCode(dto.getSupervisoryCode()); } finally {
jgReformNotice.setEquList(dto.getEquList()); if (lock.isHeldByCurrentThread()) {
jgReformNotice.setNextTaskId(workflowResultDto.getNextTaskId()); lock.unlock();
jgReformNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); }
//jgReformNotice.setInstanceId(workflowResultDto.getInstanceId());
// 上个代办改为驳回
taskV2Model = this.updateLastTodo(jgReformNotice, FlowStatusEnum.REJECTED);
this.createNewTodo(jgReformNotice, workflowResultDto, taskV2Model, FlowStatusEnum.REJECTED);
jgReformNoticeMapper.updateById(jgReformNotice);
} }
} }
public InstanceRuntimeData buildInstanceRuntimeData(JgReformNotice jgReformNotice) {
return InstanceRuntimeData.builder()
.nextExecuteUserIds(jgReformNotice.getNextExecuteUserIds())
.promoter(jgReformNotice.getPromoter())
.nextTaskId(jgReformNotice.getNextTaskId())
.build();
}
/** /**
* 上个代办改为已办 * 上个代办改为已办
* *
......
...@@ -7,14 +7,13 @@ import com.alibaba.fastjson.JSONObject; ...@@ -7,14 +7,13 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.util.StringUtil;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.JgTransferNoticeDto; import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.dto.TaskMessageDto; import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintainNotice;
import com.yeejoin.amos.boot.module.jg.api.dto.TaskModelDto;
import com.yeejoin.amos.boot.module.jg.api.dto.WorkflowResultDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgTransferNotice; import com.yeejoin.amos.boot.module.jg.api.entity.JgTransferNotice;
import com.yeejoin.amos.boot.module.jg.api.entity.JgTransferNoticeEq; import com.yeejoin.amos.boot.module.jg.api.entity.JgTransferNoticeEq;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
...@@ -35,6 +34,8 @@ import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO; ...@@ -35,6 +34,8 @@ import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO; import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO; import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO; import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -45,9 +46,12 @@ import org.springframework.util.StringUtils; ...@@ -45,9 +46,12 @@ import org.springframework.util.StringUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.text.ParseException; import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -92,6 +96,9 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto ...@@ -92,6 +96,9 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto
@Autowired @Autowired
private CommonServiceImpl commonService; private CommonServiceImpl commonService;
@Autowired
private RedissonClient redissonClient;
/** /**
* 根据sequenceNbr查询 * 根据sequenceNbr查询
* *
...@@ -313,6 +320,7 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto ...@@ -313,6 +320,7 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto
commonService.buildTaskModel(Collections.singletonList(taskModelDto)); commonService.buildTaskModel(Collections.singletonList(taskModelDto));
} }
} }
commonService.saveExecuteFlowData2Redis(notice.getInstanceId(),this.buildInstanceRuntimeData(notice));
} else { } else {
JgTransferNotice bean = new JgTransferNotice(); JgTransferNotice bean = new JgTransferNotice();
BeanUtils.copyProperties(noticeDto, bean); BeanUtils.copyProperties(noticeDto, bean);
...@@ -324,10 +332,9 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto ...@@ -324,10 +332,9 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto
/** /**
* 分页查询 * 分页查询
*/ */
@Override
public Page<JgTransferNoticeDto> queryForJgTransferNoticePage(Page<JgTransferNotice> page, JgTransferNoticeDto model, String type, ReginParams reginParams) { public Page<JgTransferNoticeDto> queryForJgTransferNoticePage(Page<JgTransferNotice> page, JgTransferNoticeDto model, String type, ReginParams reginParams) {
String orgCode; String orgCode = reginParams.getCompany().getCompanyCode();
orgCode = reginParams.getCompany().getCompanyCode();
// model.setReceiveOrgCode(orgCode);
model.setTransferToUserIds(reginParams.getUserModel().getUserId()); model.setTransferToUserIds(reginParams.getUserModel().getUserId());
Page<JgTransferNotice> noticePage = jgTransferNoticeMapper.queryForPage(page, model, type, orgCode); Page<JgTransferNotice> noticePage = jgTransferNoticeMapper.queryForPage(page, model, type, orgCode);
...@@ -384,11 +391,17 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto ...@@ -384,11 +391,17 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto
Long sequenceNbr = collect.get(0).getSequenceNbr(); Long sequenceNbr = collect.get(0).getSequenceNbr();
return jgRelationEquip.setEquipTransferId(String.valueOf(sequenceNbr)); return jgRelationEquip.setEquipTransferId(String.valueOf(sequenceNbr));
}).collect(Collectors.toList()); }).collect(Collectors.toList());
jgTransferNoticeEqMapper.insertBatchSomeColumn(jgRelationEquipList); jgTransferNoticeEqMapper.insertBatchSomeColumn(jgRelationEquipList);
this.updateRedisBatch(list);
return list; return list;
} }
private void updateRedisBatch(List<JgTransferNotice> jgTransferNotices) {
jgTransferNotices.stream().filter(n -> StringUtil.isNotEmpty(n.getInstanceId())).forEach(jgTransferNotice -> {
commonService.saveExecuteFlowData2Redis(jgTransferNotice.getInstanceId(), this.buildInstanceRuntimeData(jgTransferNotice));
});
}
/** /**
* 暂存任务生成待办 * 暂存任务生成待办
* *
...@@ -602,143 +615,207 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto ...@@ -602,143 +615,207 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto
} }
@Transactional @Transactional(rollbackFor = Exception.class)
public void cancel(JgTransferNoticeDto noticeDto) { public void cancel(JgTransferNoticeDto noticeDto) {
JgTransferNotice jgInstallationNotice = this.baseMapper.selectById(noticeDto.getSequenceNbr()); String instanceId = noticeDto.getInstanceId();
if (jgInstallationNotice != null) { String nextTaskId = noticeDto.getNextTaskId();
//检查实际状态是否不是待受理状态 String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
commonService.checkExpectedStatus(jgInstallationNotice.getNoticeStatus()); RLock lock = redissonClient.getLock(lockKey);
try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if (!isLocked) {
throw new BadRequest("当前流程已经被执行!");
}
// 流程执行时,状态及权限校验
commonService.checkForRevocationFlow(nextTaskId, instanceId);
JgTransferNotice jgTransferNotice = this.baseMapper.selectById(noticeDto.getSequenceNbr());
ProcessTaskDTO processTaskDTO = iCmWorkflowService.rollBack(jgInstallationNotice.getInstanceId()); ProcessTaskDTO processTaskDTO = iCmWorkflowService.rollBack(jgTransferNotice.getInstanceId());
// 提取节点等信息 // 提取节点等信息
WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0); WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
jgInstallationNotice.setPromoter(""); jgTransferNotice.setPromoter("");
jgInstallationNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds()); jgTransferNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jgInstallationNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); jgTransferNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.ROLLBACK.getCode())); jgTransferNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.ROLLBACK.getCode()));
jgInstallationNotice.setNextTaskId(workflowResultDto.getNextTaskId()); jgTransferNotice.setNextTaskId(workflowResultDto.getNextTaskId());
jgTransferNoticeMapper.updateById(jgInstallationNotice); jgTransferNoticeMapper.updateById(jgTransferNotice);
TaskMessageDto taskMessageDto = new TaskMessageDto(); TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgInstallationNotice, taskMessageDto); BeanUtils.copyProperties(jgTransferNotice, taskMessageDto);
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(taskMessageDto)); JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(taskMessageDto));
jsonObject.put("taskType", BusinessTypeEnum.JG_ADVICE_REMOVAL.getCode()); jsonObject.put("taskType", BusinessTypeEnum.JG_ADVICE_REMOVAL.getCode());
jsonObject.put("nextExecuteUser", jgInstallationNotice.getNextExecuteIds()); jsonObject.put("nextExecuteUser", jgTransferNotice.getNextExecuteIds());
jsonObject.put("flowStatusLabel", FlowStatusEnum.ROLLBACK.getName()); jsonObject.put("flowStatusLabel", FlowStatusEnum.ROLLBACK.getName());
jsonObject.put("flowStatus", FlowStatusEnum.ROLLBACK.getCode()); jsonObject.put("flowStatus", FlowStatusEnum.ROLLBACK.getCode());
jsonObject.put("nextTaskId", jgInstallationNotice.getNextTaskId()); jsonObject.put("nextTaskId", jgTransferNotice.getNextTaskId());
commonService.rollbackTask(jgInstallationNotice.getInstanceId(), jsonObject); commonService.rollbackTask(jgTransferNotice.getInstanceId(), jsonObject);
commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgTransferNotice));
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
} }
} }
@Transactional
public void accept(JgTransferNoticeDto dto, String op, String opinion) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
JgTransferNotice jgTransferNotice = this.jgTransferNoticeMapper.selectById(dto.getSequenceNbr());
// 检查实际状态是否不等于期望状态 public InstanceRuntimeData buildInstanceRuntimeData(JgTransferNotice jgTransferNotice) {
commonService.checkExpectedStatus(jgTransferNotice.getNoticeStatus()); return InstanceRuntimeData.builder()
.nextExecuteUserIds(jgTransferNotice.getNextExecuteUserIds())
.promoter(jgTransferNotice.getPromoter())
.nextTaskId(jgTransferNotice.getNextTaskId())
.build();
}
// 组装设备注册代码 @Transactional(rollbackFor = Exception.class)
StringBuilder stringBuffer = new StringBuilder(); public void accept(JgTransferNoticeDto dto, String op, String opinion) {
String ym = null; String instanceId = dto.getInstanceId();
String nextTaskId = dto.getNextTaskId();
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
RLock lock = redissonClient.getLock(lockKey);
try { try {
ym = DateUtils.dateFormat(new Date(), DateUtils.DATE_PATTERN_MM); boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
} catch (ParseException e) { // 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
log.error("日期转换失败:{}", e); if (!isLocked) {
} throw new BadRequest("当前流程已经被执行!");
// 执行工作流并返回组装好的工作流信息 }
WorkflowResultDto workflowResultDto = getWorkflowResultDto(op, opinion, jgTransferNotice); // 流程执行时,状态及权限校验
commonService.checkForExecuteFlow(nextTaskId, instanceId);
jgTransferNotice.setPromoter(reginParams.getUserModel().getUserId()); JgTransferNotice jgTransferNotice = this.jgTransferNoticeMapper.selectById(dto.getSequenceNbr());
jgTransferNotice.setNextTaskId(workflowResultDto.getNextTaskId());
TaskV2Model taskV2Model = new TaskV2Model(); // 检查实际状态是否不等于期望状态
if ("0".equals(op)) { commonService.checkExpectedStatus(jgTransferNotice.getNoticeStatus());
if (StringUtils.isEmpty(workflowResultDto.getNextExecutorRoleIds())) {
LambdaQueryWrapper<JgTransferNoticeEq> queryWrapper = new LambdaQueryWrapper<>(); // 组装设备注册代码
queryWrapper.eq(JgTransferNoticeEq::getEquipTransferId, dto.getSequenceNbr()); StringBuilder stringBuffer = new StringBuilder();
JgTransferNoticeEq jgTransferNoticeEq = jgTransferNoticeEqMapper.selectOne(queryWrapper); String ym = null;
LambdaQueryWrapper<RegistrationInfo> queryWrapper2 = new LambdaQueryWrapper<>(); try {
queryWrapper2.eq(RegistrationInfo::getRecord, jgTransferNoticeEq.getEquId()); ym = DateUtils.dateFormat(new Date(), DateUtils.DATE_PATTERN_MM);
RegistrationInfo tzsJgRegistrationInfo = tzsJgRegistrationInfoMapper.selectOne(queryWrapper2); } catch (ParseException e) {
stringBuffer.append(tzsJgRegistrationInfo.getEquCategory()).append(jgTransferNotice.getReceiveCompanyCode()).append(ym); log.error("日期转换失败:{}", e);
String equCode = stringBuffer.toString(); }
ResponseModel<String> responseModel = tzsServiceFeignClient.deviceRegistrationCode(equCode); // 执行工作流并返回组装好的工作流信息
String deviceRegistrationCode = responseModel.getResult(); WorkflowResultDto workflowResultDto = getWorkflowResultDto(op, opinion, jgTransferNotice);
jgTransferNotice.setInformNumber(deviceRegistrationCode); jgTransferNotice.setPromoter(RequestContext.getExeUserId());
jgTransferNotice.setNextTaskId(workflowResultDto.getNextTaskId());
jgTransferNotice.setPromoter(""); TaskV2Model taskV2Model = new TaskV2Model();
jgTransferNotice.setHandleDate(new Date()); if ("0".equals(op)) {
jgTransferNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode())); if (StringUtils.isEmpty(workflowResultDto.getNextExecutorRoleIds())) {
LambdaQueryWrapper<JgTransferNoticeEq> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgTransferNoticeEq::getEquipTransferId, dto.getSequenceNbr());
Map<String, Object> map1 = new HashMap<>(); JgTransferNoticeEq jgTransferNoticeEq = jgTransferNoticeEqMapper.selectOne(queryWrapper);
Map<String, Map<String, Object>> objMap = new HashMap<>(); LambdaQueryWrapper<RegistrationInfo> queryWrapper2 = new LambdaQueryWrapper<>();
map1.put("USE_PLACE", String.format("%s/%s/%s", jgTransferNotice.getProvinceName(), jgTransferNotice.getCityName(), jgTransferNotice.getCounty())); queryWrapper2.eq(RegistrationInfo::getRecord, jgTransferNoticeEq.getEquId());
map1.put("ADDRESS", String.format("%s/%s", jgTransferNotice.getStreetName(), jgTransferNotice.getAddress())); RegistrationInfo tzsJgRegistrationInfo = tzsJgRegistrationInfoMapper.selectOne(queryWrapper2);
objMap.put(jgTransferNoticeEq.getEquId(), map1); stringBuffer.append(tzsJgRegistrationInfo.getEquCategory()).append(jgTransferNotice.getReceiveCompanyCode()).append(ym);
tzsServiceFeignClient.commonUpdateEsDataByIds(objMap); String equCode = stringBuffer.toString();
ResponseModel<String> responseModel = tzsServiceFeignClient.deviceRegistrationCode(equCode);
// 修改使用信息 String deviceRegistrationCode = responseModel.getResult();
LambdaUpdateWrapper<IdxBizJgUseInfo> lambda = new LambdaUpdateWrapper<>();
lambda.eq(IdxBizJgUseInfo::getRecord, jgTransferNoticeEq.getEquId()); jgTransferNotice.setInformNumber(deviceRegistrationCode);
IdxBizJgUseInfo idxBizJgUseInfo = new IdxBizJgUseInfo();
idxBizJgUseInfo.setProvince(jgTransferNotice.getProvince()); jgTransferNotice.setPromoter("");
idxBizJgUseInfo.setProvinceName(jgTransferNotice.getProvinceName()); jgTransferNotice.setHandleDate(new Date());
idxBizJgUseInfo.setCity(jgTransferNotice.getCity()); jgTransferNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode()));
idxBizJgUseInfo.setCityName(jgTransferNotice.getCityName());
idxBizJgUseInfo.setCounty(jgTransferNotice.getCounty());
idxBizJgUseInfo.setCountyName(jgTransferNotice.getCountyName()); Map<String, Object> map1 = new HashMap<>();
idxBizJgUseInfo.setFactoryUseSiteStreet(jgTransferNotice.getFactoryUseSiteStreet()); Map<String, Map<String, Object>> objMap = new HashMap<>();
idxBizJgUseInfo.setStreetName(jgTransferNotice.getStreetName()); map1.put("USE_PLACE", String.format("%s/%s/%s", jgTransferNotice.getProvinceName(), jgTransferNotice.getCityName(), jgTransferNotice.getCounty()));
idxBizJgUseInfo.setAddress(jgTransferNotice.getAddress()); map1.put("ADDRESS", String.format("%s/%s", jgTransferNotice.getStreetName(), jgTransferNotice.getAddress()));
idxBizJgUseInfo.setIsNotXiXian(jgTransferNotice.getIsXixian()); objMap.put(jgTransferNoticeEq.getEquId(), map1);
idxBizJgUseInfoMapper.update(idxBizJgUseInfo, lambda); tzsServiceFeignClient.commonUpdateEsDataByIds(objMap);
// 上个代办改为已办 // 修改使用信息
HashMap<String, Object> taskMap = new HashMap<>(); LambdaUpdateWrapper<IdxBizJgUseInfo> lambda = new LambdaUpdateWrapper<>();
taskMap.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode()); lambda.eq(IdxBizJgUseInfo::getRecord, jgTransferNoticeEq.getEquId());
taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName()); IdxBizJgUseInfo idxBizJgUseInfo = new IdxBizJgUseInfo();
taskMap.put("relationId", jgTransferNotice.getInstanceId()); idxBizJgUseInfo.setProvince(jgTransferNotice.getProvince());
taskMap.put("flowStatus", FlowStatusEnum.TO_BE_FINISHED.getCode()); idxBizJgUseInfo.setProvinceName(jgTransferNotice.getProvinceName());
taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName()); idxBizJgUseInfo.setCity(jgTransferNotice.getCity());
TaskMessageDto taskMessageDto = new TaskMessageDto(); idxBizJgUseInfo.setCityName(jgTransferNotice.getCityName());
BeanUtils.copyProperties(jgTransferNotice, taskMessageDto); idxBizJgUseInfo.setCounty(jgTransferNotice.getCounty());
taskMap.put("model", taskMessageDto); idxBizJgUseInfo.setCountyName(jgTransferNotice.getCountyName());
taskV2Model = commonService.updateTaskModel(taskMap); idxBizJgUseInfo.setFactoryUseSiteStreet(jgTransferNotice.getFactoryUseSiteStreet());
idxBizJgUseInfo.setStreetName(jgTransferNotice.getStreetName());
jgTransferNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); idxBizJgUseInfo.setAddress(jgTransferNotice.getAddress());
jgTransferNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds()); idxBizJgUseInfo.setIsNotXiXian(jgTransferNotice.getIsXixian());
jgTransferNoticeMapper.updateById(jgTransferNotice); idxBizJgUseInfoMapper.update(idxBizJgUseInfo, lambda);
this.generateTransferNoticeReport(jgTransferNotice.getSequenceNbr());
} else { // 上个代办改为已办
jgTransferNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds()); HashMap<String, Object> taskMap = new HashMap<>();
jgTransferNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); taskMap.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode());
if (!ObjectUtils.isEmpty(jgTransferNotice.getInstanceStatus())) { taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
jgTransferNotice.setInstanceStatus(jgTransferNotice.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds()); taskMap.put("relationId", jgTransferNotice.getInstanceId());
taskMap.put("flowStatus", FlowStatusEnum.TO_BE_FINISHED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgTransferNotice, taskMessageDto);
taskMap.put("model", taskMessageDto);
taskV2Model = commonService.updateTaskModel(taskMap);
jgTransferNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgTransferNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jgTransferNoticeMapper.updateById(jgTransferNotice);
this.generateTransferNoticeReport(jgTransferNotice.getSequenceNbr());
} else { } else {
jgTransferNotice.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds()); jgTransferNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jgTransferNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
if (!ObjectUtils.isEmpty(jgTransferNotice.getInstanceStatus())) {
jgTransferNotice.setInstanceStatus(jgTransferNotice.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds());
} else {
jgTransferNotice.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds());
}
jgTransferNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
// 上个代办改为已办
HashMap<String, Object> taskMap = new HashMap<>();
taskMap.put("taskStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
taskMap.put("flowStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
taskMap.put("relationId", jgTransferNotice.getInstanceId());
taskV2Model = commonService.updateTaskModel(taskMap);
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setFlowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskModelDto.setFlowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgTransferNotice, taskMessageDto);
taskModelDto.setModel(taskMessageDto);
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
jgTransferNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgTransferNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jgTransferNoticeMapper.updateById(jgTransferNotice);
} }
jgTransferNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode())); } else {
jgTransferNotice.setPromoter("");
jgTransferNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode()));
// 上个代办改为已办 // 上个代办改为已办
HashMap<String, Object> taskMap = new HashMap<>(); HashMap<String, Object> taskMap = new HashMap<>();
taskMap.put("taskStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode()); taskMap.put("taskStatus", jgTransferNotice.getNoticeStatus());
taskMap.put("taskStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName()); taskMap.put("taskStatusLabel", FlowStatusEnum.REJECTED.getName());
taskMap.put("flowStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
taskMap.put("relationId", jgTransferNotice.getInstanceId()); taskMap.put("relationId", jgTransferNotice.getInstanceId());
taskMap.put("flowStatus", FlowStatusEnum.REJECTED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.REJECTED.getName());
taskV2Model = commonService.updateTaskModel(taskMap); taskV2Model = commonService.updateTaskModel(taskMap);
TaskModelDto taskModelDto = new TaskModelDto(); TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto); BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办 // 创建新的代办
taskModelDto.setTaskName(workflowResultDto.getNextTaskName()); taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setFlowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode()); taskModelDto.setFlowStatus(FlowStatusEnum.REJECTED.getCode());
taskModelDto.setFlowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName()); taskModelDto.setFlowStatusLabel(FlowStatusEnum.REJECTED.getName());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId()); taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds()); taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
taskModelDto.setPageType("edit");
TaskMessageDto taskMessageDto = new TaskMessageDto(); TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgTransferNotice, taskMessageDto); BeanUtils.copyProperties(jgTransferNotice, taskMessageDto);
taskModelDto.setModel(taskMessageDto); taskModelDto.setModel(taskMessageDto);
...@@ -747,34 +824,13 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto ...@@ -747,34 +824,13 @@ public class JgTransferNoticeServiceImpl extends BaseService<JgTransferNoticeDto
jgTransferNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds()); jgTransferNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jgTransferNoticeMapper.updateById(jgTransferNotice); jgTransferNoticeMapper.updateById(jgTransferNotice);
} }
} else { commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgTransferNotice));
jgTransferNotice.setPromoter(""); } catch (InterruptedException e) {
jgTransferNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode())); e.printStackTrace();
// 上个代办改为已办 } finally {
HashMap<String, Object> taskMap = new HashMap<>(); if (lock.isHeldByCurrentThread()) {
taskMap.put("taskStatus", jgTransferNotice.getNoticeStatus()); lock.unlock();
taskMap.put("taskStatusLabel", FlowStatusEnum.REJECTED.getName()); }
taskMap.put("relationId", jgTransferNotice.getInstanceId());
taskMap.put("flowStatus", FlowStatusEnum.REJECTED.getCode());
taskMap.put("flowStatusLabel", FlowStatusEnum.REJECTED.getName());
taskV2Model = commonService.updateTaskModel(taskMap);
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setFlowStatus(FlowStatusEnum.REJECTED.getCode());
taskModelDto.setFlowStatusLabel(FlowStatusEnum.REJECTED.getName());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
taskModelDto.setPageType("edit");
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgTransferNotice, taskMessageDto);
taskModelDto.setModel(taskMessageDto);
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
jgTransferNotice.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgTransferNotice.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
jgTransferNoticeMapper.updateById(jgTransferNotice);
} }
} }
......
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