Commit deaccab3 authored by 王果's avatar 王果

21052 启用停用校验设备是否在流程中

parent b809ee89
...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jg.api.mapper; ...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto; import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto;
import com.yeejoin.amos.boot.module.jg.api.dto.CompanyEquipCountDto;
import com.yeejoin.amos.boot.module.jg.api.dto.EquipBizCountDto; import com.yeejoin.amos.boot.module.jg.api.dto.EquipBizCountDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgEnableDisableDto; import com.yeejoin.amos.boot.module.jg.api.dto.JgEnableDisableDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgEnableDisable; import com.yeejoin.amos.boot.module.jg.api.entity.JgEnableDisable;
...@@ -29,4 +30,6 @@ public interface JgEnableDisableMapper extends BaseMapper<JgEnableDisable> { ...@@ -29,4 +30,6 @@ public interface JgEnableDisableMapper extends BaseMapper<JgEnableDisable> {
Map<String, Object> getDetail(@Param("sequenceNbr") Long sequenceNbr); Map<String, Object> getDetail(@Param("sequenceNbr") Long sequenceNbr);
List<EquipBizCountDto> queryStoppedDeviceStaticListData(DPFilterParamDto dpFilterParamDto); List<EquipBizCountDto> queryStoppedDeviceStaticListData(DPFilterParamDto dpFilterParamDto);
List<CompanyEquipCountDto> queryForFlowingEquipList();
} }
...@@ -151,4 +151,14 @@ ...@@ -151,4 +151,14 @@
c.equ_category, c.equ_category,
c.equ_define c.equ_define
</select> </select>
<select id="queryForFlowingEquipList" resultType="com.yeejoin.amos.boot.module.jg.api.dto.CompanyEquipCountDto">
select a.use_unit_credit_code as companyCode,
group_concat(b.certificate_seq) as records
from tzs_jg_change_registration_name a,
tzs_jg_change_registration_name_eq b
where a.sequence_nbr = b.name_change_registration_id
and a.audit_status in ('三级待受理', '二级待受理', '一级待受理')
GROUP BY a.use_unit_credit_code
</select>
</mapper> </mapper>
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.yeejoin.amos.boot.module.jg.api.dto.CompanyEquipCountDto;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgEnableDisableMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgInstallationNoticeMapper;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author Administrator
*/
@Component
@Slf4j
public class JgEnableDisableEquipUsedCheckImpl extends BaseEquipUsedCheckService {
private RedissonClient redissonClient;
private String bizType = "deactivateEnable";
private JgEnableDisableMapper mapper;
public JgEnableDisableEquipUsedCheckImpl(RedissonClient redissonClient, JgEnableDisableMapper mapper) {
this.redissonClient = redissonClient;
this.mapper = mapper;
}
@Override
public RedissonClient getRedisClient() {
return redissonClient;
}
@Override
public String getApplyBizType() {
return bizType;
}
@Override
public void init() {
// 初始化已经完成或者在流程中安装告知的设备数据
List<CompanyEquipCountDto> companyEquipCountDtos = mapper.queryForFlowingEquipList();
companyEquipCountDtos.forEach(c -> {
RBucket<Set<String>> rBucket = redissonClient.getBucket(getFlowingEquipRedisKey(c.getCompanyCode(), bizType));
rBucket.set(Arrays.stream(c.getRecords().split(",")).collect(Collectors.toSet()));
});
}
}
package com.yeejoin.amos.boot.module.jg.biz.service.impl; package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
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.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.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.*; import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.*; import com.yeejoin.amos.boot.module.jg.api.entity.JgEnableDisable;
import com.yeejoin.amos.boot.module.jg.api.entity.JgEnableDisableEq;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRegistrationHistory;
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.WorkFlowStatusEnum; import com.yeejoin.amos.boot.module.jg.api.enums.WorkFlowStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgEnableDisableEqMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgEnableDisableEqMapper;
...@@ -19,6 +22,9 @@ import com.yeejoin.amos.boot.module.jg.api.mapper.JgMaintainNoticeMapper; ...@@ -19,6 +22,9 @@ import com.yeejoin.amos.boot.module.jg.api.mapper.JgMaintainNoticeMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgRegistrationHistoryMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgRegistrationHistoryMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgEnableDisableService; import com.yeejoin.amos.boot.module.jg.api.service.IJgEnableDisableService;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo; import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.jg.biz.config.LocalBadRequest;
import com.yeejoin.amos.boot.module.jg.biz.context.EquipUsedCheckStrategyContext;
import com.yeejoin.amos.boot.module.jg.biz.context.FlowingEquipRedisContext;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient; import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.ICmWorkflowService; import com.yeejoin.amos.boot.module.jg.biz.service.ICmWorkflowService;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgRegisterInfoService; import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgRegisterInfoService;
...@@ -37,15 +43,13 @@ import org.redisson.api.RLock; ...@@ -37,15 +43,13 @@ import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; 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.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; 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;
...@@ -74,14 +78,14 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -74,14 +78,14 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
JgEnableDisableEqMapper jgEnableDisableEqMapper; JgEnableDisableEqMapper jgEnableDisableEqMapper;
@Autowired @Autowired
JgMaintainNoticeMapper jgMaintainNoticeMapper; JgMaintainNoticeMapper jgMaintainNoticeMapper;
@Autowired @Autowired
TzsServiceFeignClient tzsServiceFeignClient; TzsServiceFeignClient tzsServiceFeignClient;
@Autowired @Autowired
IIdxBizJgRegisterInfoService idxBizJgRegisterInfoService; IIdxBizJgRegisterInfoService idxBizJgRegisterInfoService;
private final List<String> NOT_FLOWING_STATE = Arrays.asList("使用单位待提交", "一级受理已驳回", "使用单位已撤回", "已作废", "已完成");
private final String PROCESS_DEFINITION_KEY = "deactivateEnable"; private final String PROCESS_DEFINITION_KEY = "deactivateEnable";
...@@ -117,142 +121,182 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -117,142 +121,182 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public List<JgEnableDisable> saveOrUpdate(JSONObject map, ReginParams reginParams) { public List<JgEnableDisable> saveOrUpdate(JSONObject map, ReginParams reginParams) {
JgEnableDisable jgEnableDisable = new JgEnableDisable(); try {
if (!"null".equals(String.valueOf(map.get("sequenceNbr")))) { JgEnableDisable jgEnableDisable = new JgEnableDisable();
jgEnableDisable = this.baseMapper.selectById(String.valueOf(map.get("sequenceNbr"))); if (!"null".equals(String.valueOf(map.get("sequenceNbr")))) {
jgEnableDisable.setRemark(map.get("remark").toString()); jgEnableDisable = this.baseMapper.selectById(String.valueOf(map.get("sequenceNbr")));
} else { jgEnableDisable.setRemark(map.get("remark").toString());
// 获取申请编号 } else {
ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(map.get("businessCode"))), 1); // 获取申请编号
jgEnableDisable.setApplyNo(listResponseModel.getResult().get(0)); ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(map.get("businessCode"))), 1);
jgEnableDisable.setSequenceNbr(sequence.nextId()); jgEnableDisable.setApplyNo(listResponseModel.getResult().get(0));
} jgEnableDisable.setSequenceNbr(sequence.nextId());
jgEnableDisable.setCreateDate(new Date()); }
String submit = String.valueOf(map.get("submit")); jgEnableDisable.setCreateDate(new Date());
String pageType = String.valueOf(map.get("formType")); String submit = String.valueOf(map.get("submit"));
List<Map<String, Object>> equipments = (List<Map<String, Object>>) map.get("equipments"); String pageType = String.valueOf(map.get("formType"));
String businessCode = ObjectUtils.isEmpty(map.get("applyType"))?String.valueOf(map.get("businessCode")):String.valueOf(map.get("applyType")); List<Map<String, Object>> equipments = (List<Map<String, Object>>) map.get("equipments");
// 接收机构 if (SUBMIT_TYPE_FLOW.equals(submit)) {//校验设备不能再多个流程中
String[] receiveOrgCode = String.valueOf(map.getString("receiveOrgCode")).split("_"); this.repeatUsedEquipCheck(equipments, reginParams.getCompany().getCompanyCode());
List<WorkflowResultDto> workflowResultList = new ArrayList<>(); }
String businessCode = ObjectUtils.isEmpty(map.get("applyType")) ? String.valueOf(map.get("businessCode")) : String.valueOf(map.get("applyType"));
// 接收机构
String[] receiveOrgCode = String.valueOf(map.getString("receiveOrgCode")).split("_");
List<WorkflowResultDto> workflowResultList = new ArrayList<>();
WorkflowResultDto workflowResultDto = new WorkflowResultDto();
List<ProcessTaskDTO> processTaskDTOS = new ArrayList<>();
jgEnableDisable.setOtherAccessories(JSONObject.toJSONString(Optional.ofNullable(map.get("otherAccessories")).orElse(Collections.emptyMap())));
if (SUBMIT_TYPE_FLOW.equals(submit)) {
if (map.containsKey("instanceId") && !ObjectUtils.isEmpty(map.get("instanceId"))) {
// 只调用执行API,返回下个节点信息,用于填充业务字段
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(jgEnableDisable.getNextTaskId());
HashMap<String, Object> commMap = new HashMap<>();
if (FlowStatusEnum.REJECTED.getName().equals(jgEnableDisable.getAuditStatus()) || FlowStatusEnum.ROLLBACK.getName().equals(jgEnableDisable.getAuditStatus())) {
commMap.put("approvalStatus", "提交");
//下一节点执行人单位(下节点接收机构code)
dto.setNextExecuteUserCompanyCode(jgEnableDisable.getReceiveCompanyCode());
} else {
commMap.put("approvalStatus", submit);
//下一节点执行人单位(下节点接收机构code)
dto.setNextExecuteUserCompanyCode(jgEnableDisable.getUseUnitCreditCode());
}
WorkflowResultDto workflowResultDto = new WorkflowResultDto(); dto.setVariable(commMap);
List<ProcessTaskDTO> processTaskDTOS = new ArrayList<>(); ProcessTaskDTO processTaskDTO = iCmWorkflowService.completeOrReject(jgEnableDisable.getNextTaskId(), dto, "0");
jgEnableDisable.setOtherAccessories(JSONObject.toJSONString(Optional.ofNullable(map.get("otherAccessories")).orElse(Collections.emptyMap()))); processTaskDTOS.add(processTaskDTO);
// 提取节点等信息
if (SUBMIT_TYPE_FLOW.equals(submit)) { workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
if (map.containsKey("instanceId") && !ObjectUtils.isEmpty(map.get("instanceId"))){ workflowResultList.add(workflowResultDto);
// 只调用执行API,返回下个节点信息,用于填充业务字段 if (!ObjectUtils.isEmpty(jgEnableDisable.getExecuteSequence())) {
//组装信息 jgEnableDisable.setExecuteSequence(jgEnableDisable.getExecuteSequence() + "," + workflowResultDto.getNextExecutorRoleIds());
TaskResultDTO dto = new TaskResultDTO(); } else {
dto.setResultCode("approvalStatus"); jgEnableDisable.setExecuteSequence(workflowResultDto.getNextExecutorRoleIds());
dto.setTaskId(jgEnableDisable.getNextTaskId()); }
HashMap<String, Object> commMap = new HashMap<>(); jgEnableDisable.setPromoter(RequestContext.getExeUserId());
if (FlowStatusEnum.REJECTED.getName().equals(jgEnableDisable.getAuditStatus()) || FlowStatusEnum.ROLLBACK.getName().equals(jgEnableDisable.getAuditStatus())) { jgEnableDisable.setNextExecutorIds(String.join(",", workflowResultDto.getNextExecutorRoleIds()));
commMap.put("approvalStatus", "提交"); jgEnableDisable.setAuditStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getName()));
//下一节点执行人单位(下节点接收机构code) jgEnableDisable.setNextTaskId(workflowResultDto.getNextTaskId());
dto.setNextExecuteUserCompanyCode(jgEnableDisable.getReceiveCompanyCode()); jgEnableDisable.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
this.baseMapper.updateById(jgEnableDisable);
// 上个代办改为已办
HashMap<String, Object> map1 = new HashMap<>();
map1.put("taskStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
map1.put("taskStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
map1.put("relationId", jgEnableDisable.getInstanceId());
map1.put("flowStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode());
map1.put("flowStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName());
TaskV2Model taskV2Model = commonService.updateTaskModel(map1);
if (ObjectUtils.isEmpty(taskV2Model)) {
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgEnableDisable, 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(jgEnableDisable.getNextTaskId());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
}
} else { } else {
commMap.put("approvalStatus", submit); // 启动工作流并返回信息
//下一节点执行人单位(下节点接收机构code) workflowResultList = workFlowInfo(submit, jgEnableDisable, receiveOrgCode[0]);
dto.setNextExecuteUserCompanyCode(jgEnableDisable.getUseUnitCreditCode()); //业务数据组装等
businessData(submit, reginParams, jgEnableDisable, map, workflowResultList);
// 关联设备表
for (Map<String, Object> equipment : equipments) {
JgEnableDisableEq jgEnableDisableEq = new JgEnableDisableEq();
jgEnableDisableEq.setEquId(String.valueOf(equipment.get("SEQUENCE_NBR")));
jgEnableDisableEq.setEnableDisableApplyId(jgEnableDisable.getSequenceNbr().toString());
jgEnableDisableEqService.saveOrUpdate(jgEnableDisableEq);
}
} }
dto.setVariable(commMap); commonService.saveExecuteFlowData2Redis(jgEnableDisable.getInstanceId(), buildInstanceRuntimeData(jgEnableDisable));
ProcessTaskDTO processTaskDTO = iCmWorkflowService.completeOrReject(jgEnableDisable.getNextTaskId(), dto, "0"); } else {
processTaskDTOS.add(processTaskDTO); jgEnableDisable.setNextExecuteUserIds(reginParams.getUserModel().getUserId());
// 提取节点等信息 jgEnableDisable.setCreateUserId(reginParams.getUserModel().getUserId());
workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0); jgEnableDisable.setCreateUserName(reginParams.getUserModel().getRealName());
workflowResultList.add(workflowResultDto); jgEnableDisable.setUseUnitCreditCode(reginParams.getCompany().getCompanyCode());
if (!ObjectUtils.isEmpty(jgEnableDisable.getExecuteSequence())) { jgEnableDisable.setUseUnitName(reginParams.getCompany().getCompanyName());
jgEnableDisable.setExecuteSequence(jgEnableDisable.getExecuteSequence() + "," + workflowResultDto.getNextExecutorRoleIds()); jgEnableDisable.setReceiveCompanyCode(receiveOrgCode[0]);
} else { jgEnableDisable.setReceiveOrgName(receiveOrgCode[1]);
jgEnableDisable.setExecuteSequence(workflowResultDto.getNextExecutorRoleIds()); jgEnableDisable.setRemark(map.get("remark") == null ? "" : map.get("remark").toString());
} jgEnableDisable.setApplyDate(new Date());
jgEnableDisable.setPromoter(RequestContext.getExeUserId()); jgEnableDisable.setApplyType(String.valueOf(map.get("applyType")));
jgEnableDisable.setNextExecutorIds(String.join(",", workflowResultDto.getNextExecutorRoleIds())); jgEnableDisable.setAuditStatus(ObjectUtils.isEmpty(jgEnableDisable.getAuditStatus()) ? FlowStatusEnum.TO_BE_SUBMITTED.getName() : jgEnableDisable.getAuditStatus());
jgEnableDisable.setAuditStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getName())); }
jgEnableDisable.setNextTaskId(workflowResultDto.getNextTaskId()); // 仅保存
jgEnableDisable.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); this.saveOrUpdate(jgEnableDisable);
if ("add".equals(pageType)) {
buildTask(Arrays.asList(jgEnableDisable), businessCode, workflowResultList, Boolean.FALSE);
} else {
// 编辑
jgEnableDisable.setSequenceNbr(Long.valueOf(String.valueOf(map.get("sequenceNbr"))));
this.baseMapper.updateById(jgEnableDisable); this.baseMapper.updateById(jgEnableDisable);
// 上个代办改为已办 LambdaQueryWrapper<JgEnableDisableEq> lambda = new QueryWrapper<JgEnableDisableEq>().lambda();
HashMap<String, Object> map1 = new HashMap<>(); lambda.eq(JgEnableDisableEq::getEnableDisableApplyId, String.valueOf(map.get("sequenceNbr")));
map1.put("taskStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode()); jgEnableDisableEqService.getBaseMapper().delete(lambda);
map1.put("taskStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName()); }
map1.put("relationId", jgEnableDisable.getInstanceId()); if (!SUBMIT_TYPE_FLOW.equals(submit)) {
map1.put("flowStatus", FlowStatusEnum.TO_BE_PROCESSED.getCode()); // 暂存任务
map1.put("flowStatusLabel", FlowStatusEnum.TO_BE_PROCESSED.getName()); buildTaskDraft(jgEnableDisable);
TaskV2Model taskV2Model = commonService.updateTaskModel(map1);
if (ObjectUtils.isEmpty(taskV2Model)) {
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtils.copyProperties(jgEnableDisable, 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(jgEnableDisable.getNextTaskId());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
}
} else { } else {
// 启动工作流并返回信息 buildTask(Arrays.asList(jgEnableDisable), businessCode, workflowResultList, Boolean.TRUE);
workflowResultList = workFlowInfo(submit, jgEnableDisable,receiveOrgCode[0]);
//业务数据组装等
businessData(submit, reginParams, jgEnableDisable, map, workflowResultList);
// 关联设备表
for (Map<String, Object> equipment : equipments) {
JgEnableDisableEq jgEnableDisableEq = new JgEnableDisableEq();
jgEnableDisableEq.setEquId(String.valueOf(equipment.get("SEQUENCE_NBR")));
jgEnableDisableEq.setEnableDisableApplyId(jgEnableDisable.getSequenceNbr().toString());
jgEnableDisableEqService.saveOrUpdate(jgEnableDisableEq);
}
} }
// 保存历史表
commonService.saveExecuteFlowData2Redis(jgEnableDisable.getInstanceId(), buildInstanceRuntimeData(jgEnableDisable)); commonService.saveOrUpdateHistory(this.getRegistrationClass(jgEnableDisable), map, null, jgEnableDisable.getSequenceNbr().toString());
} else { return Collections.singletonList(jgEnableDisable);
jgEnableDisable.setNextExecuteUserIds(reginParams.getUserModel().getUserId()); } catch (BadRequest | LocalBadRequest e) {
jgEnableDisable.setCreateUserId(reginParams.getUserModel().getUserId()); log.error(e.getMessage(), e);
jgEnableDisable.setCreateUserName(reginParams.getUserModel().getRealName()); this.rollBackForDelRedisData();
jgEnableDisable.setUseUnitCreditCode(reginParams.getCompany().getCompanyCode()); throw e;
jgEnableDisable.setUseUnitName(reginParams.getCompany().getCompanyName()); } catch (Exception e) {
jgEnableDisable.setReceiveCompanyCode(receiveOrgCode[0]); log.error(e.getMessage(), e);
jgEnableDisable.setReceiveOrgName(receiveOrgCode[1]); this.rollBackForDelRedisData();
jgEnableDisable.setRemark(map.get("remark") == null ? "" : map.get("remark").toString()); throw new BadRequest("保存失败!");
jgEnableDisable.setApplyDate(new Date()); } finally {
jgEnableDisable.setApplyType(String.valueOf(map.get("applyType"))); FlowingEquipRedisContext.clean();
jgEnableDisable.setAuditStatus(ObjectUtils.isEmpty(jgEnableDisable.getAuditStatus()) ? FlowStatusEnum.TO_BE_SUBMITTED.getName() : jgEnableDisable.getAuditStatus());
}
// 仅保存
this.saveOrUpdate(jgEnableDisable);
if ("add".equals(pageType)) {
buildTask(Arrays.asList(jgEnableDisable), businessCode, workflowResultList, Boolean.FALSE);
} else {
// 编辑
jgEnableDisable.setSequenceNbr(Long.valueOf(String.valueOf(map.get("sequenceNbr"))));
this.baseMapper.updateById(jgEnableDisable);
LambdaQueryWrapper<JgEnableDisableEq> lambda = new QueryWrapper<JgEnableDisableEq>().lambda();
lambda.eq(JgEnableDisableEq::getEnableDisableApplyId, String.valueOf(map.get("sequenceNbr")));
jgEnableDisableEqService.getBaseMapper().delete(lambda);
} }
if(!SUBMIT_TYPE_FLOW.equals(submit)){ }
// 暂存任务
buildTaskDraft(jgEnableDisable); private void repeatUsedEquipCheck(List<Map<String, Object>> equipList, String companyCode) {
} else { equipList.forEach(equipMap -> EquipUsedCheckStrategyContext.getUsedStrategy(PROCESS_DEFINITION_KEY)
buildTask(Arrays.asList(jgEnableDisable), businessCode, workflowResultList, Boolean.TRUE); .equipRepeatUsedCheck(String.valueOf(equipMap.get("record")), companyCode));
}
/**
* 删除 redis校验重复引用设备的数据
*/
private void delRepeatUseEquipData(JgEnableDisable notice) {
if (NOT_FLOWING_STATE.contains(notice.getAuditStatus())) {
LambdaQueryWrapper<JgEnableDisableEq> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgEnableDisableEq::getEnableDisableApplyId, notice.getSequenceNbr());
List<JgEnableDisableEq> noticeEqList = jgEnableDisableEqService.list(queryWrapper);
noticeEqList.forEach(noticeEq -> EquipUsedCheckStrategyContext.getUsedStrategy(PROCESS_DEFINITION_KEY)
.delDataForCheckEquipRepeatUsed(Collections.singletonList(noticeEq.getEquId()), notice.getUseUnitCreditCode()));
} }
// 保存历史表
commonService.saveOrUpdateHistory(this.getRegistrationClass(jgEnableDisable), map, null, jgEnableDisable.getSequenceNbr().toString());
return Collections.singletonList(jgEnableDisable);
} }
private String getRegistrationClass(JgEnableDisable jgEnableDisable){ private void rollBackForDelRedisData() {
FlowingEquipRedisContext.getContext().forEach(e -> {
EquipUsedCheckStrategyContext.getUsedStrategy(PROCESS_DEFINITION_KEY)
.delDataForCheckWithKey(e.getData(), e.getRedisKey());
});
}
private String getRegistrationClass(JgEnableDisable jgEnableDisable) {
// SB_QY启用,SB_TY停用 // SB_QY启用,SB_TY停用
if(APPLY_TYPE_QY.equals(jgEnableDisable.getApplyType())){ if (APPLY_TYPE_QY.equals(jgEnableDisable.getApplyType())) {
return BusinessTypeEnum.JG_EQUIPMENT_START.getName(); return BusinessTypeEnum.JG_EQUIPMENT_START.getName();
} else { } else {
return BusinessTypeEnum.JG_EQUIPMENT_STOP.getName(); return BusinessTypeEnum.JG_EQUIPMENT_STOP.getName();
...@@ -261,6 +305,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -261,6 +305,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
/** /**
* 暂存任务生成待办 * 暂存任务生成待办
*
* @param jgEnableDisable 业务信息 * @param jgEnableDisable 业务信息
*/ */
private void buildTaskDraft(JgEnableDisable jgEnableDisable) { private void buildTaskDraft(JgEnableDisable jgEnableDisable) {
...@@ -327,14 +372,14 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -327,14 +372,14 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
/** /**
* 插入代办 * 插入代办
*/ */
private void buildTask(List<JgEnableDisable> list,String businessCode, List<WorkflowResultDto> workflowResultList,Boolean bool) { private void buildTask(List<JgEnableDisable> list, String businessCode, List<WorkflowResultDto> workflowResultList, Boolean bool) {
String taskType = businessCode.equals(ApplicationFormTypeEnum.SBQY.getBusinessCode())?BusinessTypeEnum.JG_EQUIPMENT_START.getCode():BusinessTypeEnum.JG_EQUIPMENT_STOP.getCode(); String taskType = businessCode.equals(ApplicationFormTypeEnum.SBQY.getBusinessCode()) ? BusinessTypeEnum.JG_EQUIPMENT_START.getCode() : BusinessTypeEnum.JG_EQUIPMENT_STOP.getCode();
String taskTypeLabel = businessCode.equals(ApplicationFormTypeEnum.SBQY.getBusinessCode())?BusinessTypeEnum.JG_EQUIPMENT_START.getName():BusinessTypeEnum.JG_EQUIPMENT_STOP.getName(); String taskTypeLabel = businessCode.equals(ApplicationFormTypeEnum.SBQY.getBusinessCode()) ? BusinessTypeEnum.JG_EQUIPMENT_START.getName() : BusinessTypeEnum.JG_EQUIPMENT_STOP.getName();
List<TaskModelDto> taskModelDtoList = new ArrayList<>(); List<TaskModelDto> taskModelDtoList = new ArrayList<>();
list.forEach(item -> { list.forEach(item -> {
TaskModelDto taskModelDto = new TaskModelDto(); TaskModelDto taskModelDto = new TaskModelDto();
taskModelDto.setFlowCreateDate(item.getCreateDate()); taskModelDto.setFlowCreateDate(item.getCreateDate());
if(workflowResultList.size()>0){ if (workflowResultList.size() > 0) {
taskModelDto.setTaskName(workflowResultList.get(0).getNextTaskName()); // 工作流API返回 taskModelDto.setTaskName(workflowResultList.get(0).getNextTaskName()); // 工作流API返回
taskModelDto.setExecuteUserIds(workflowResultList.get(0).getNextExecutorUserIds()); // 工作流API返回 taskModelDto.setExecuteUserIds(workflowResultList.get(0).getNextExecutorUserIds()); // 工作流API返回
} }
...@@ -358,27 +403,26 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -358,27 +403,26 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
taskModelDtoList.add(taskModelDto); taskModelDtoList.add(taskModelDto);
if (bool) { if (bool) {
// 删除暂存时生成的待办 // 删除暂存时生成的待办
commonService.deleteTasksByRelationId(item.getSequenceNbr()+""); commonService.deleteTasksByRelationId(item.getSequenceNbr() + "");
} }
}); });
if(bool){ if (bool) {
commonService.buildTaskModel(taskModelDtoList); commonService.buildTaskModel(taskModelDtoList);
} }
} }
public Page<Map<String, Object>> pageList(Page<Map<String, Object>> page, String sort, JgEnableDisableDto dto) {
public Page<Map<String, Object>> pageList(Page<Map<String, Object>> page,String sort, JgEnableDisableDto dto) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class); ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if ("company".equals(reginParams.getCompany().getLevel())) { if ("company".equals(reginParams.getCompany().getLevel())) {
dto.setUseUnitCreditCode(reginParams.getCompany().getCompanyCode()); dto.setUseUnitCreditCode(reginParams.getCompany().getCompanyCode());
} else { } else {
dto.setReceiveCompanyCode(reginParams.getCompany().getCompanyCode()); dto.setReceiveCompanyCode(reginParams.getCompany().getCompanyCode());
} }
String level = reginParams.getCompany().getLevel(); String level = reginParams.getCompany().getLevel();
String userId = reginParams.getUserModel().getUserId(); String userId = reginParams.getUserModel().getUserId();
SortVo sortMap = commonService.sortFieldConversion(sort); SortVo sortMap = commonService.sortFieldConversion(sort);
return this.baseMapper.pageList(page,sortMap, dto, level,userId); return this.baseMapper.pageList(page, sortMap, dto, level, userId);
} }
...@@ -398,14 +442,14 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -398,14 +442,14 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
} }
/** /**
* 工作流启动并执行 * 工作流启动并执行
* @param submitType 是否提交 *
* @param submitType 是否提交
* @param jgEnableDisable 业务数据 * @param jgEnableDisable 业务数据
* @return 工作流返回相关数据 * @return 工作流返回相关数据
*/ */
private List<WorkflowResultDto> workFlowInfo(String submitType, JgEnableDisable jgEnableDisable,String receiveOrgCode) { private List<WorkflowResultDto> workFlowInfo(String submitType, JgEnableDisable jgEnableDisable, String receiveOrgCode) {
if (SUBMIT_TYPE_FLOW.equals(submitType)) { if (SUBMIT_TYPE_FLOW.equals(submitType)) {
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO(); ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>(); List<ActWorkflowStartDTO> list = new ArrayList<>();
...@@ -435,7 +479,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -435,7 +479,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
try { try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS); boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回) // 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if(!isLocked){ if (!isLocked) {
throw new BadRequest("当前流程已经被执行!请重新打开页面查看并执行!"); throw new BadRequest("当前流程已经被执行!请重新打开页面查看并执行!");
} }
// 流程执行时,状态及权限校验 // 流程执行时,状态及权限校验
...@@ -531,10 +575,11 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -531,10 +575,11 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
// redis流程实时数据更新 // redis流程实时数据更新
commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgEnableDisable)); commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgEnableDisable));
this.delRepeatUseEquipData(jgEnableDisable);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
if(lock.isHeldByCurrentThread()){ if (lock.isHeldByCurrentThread()) {
lock.unlock(); lock.unlock();
} }
} }
...@@ -546,7 +591,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -546,7 +591,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
lambdaEq.eq(JgEnableDisableEq::getEnableDisableApplyId, jgEnableDisable.getSequenceNbr()); lambdaEq.eq(JgEnableDisableEq::getEnableDisableApplyId, jgEnableDisable.getSequenceNbr());
JgEnableDisableEq jgScrapCancelEq = jgEnableDisableEqMapper.selectOne(lambdaEq); JgEnableDisableEq jgScrapCancelEq = jgEnableDisableEqMapper.selectOne(lambdaEq);
IdxBizJgUseInfo idxBizJgUseInfo = new IdxBizJgUseInfo(); IdxBizJgUseInfo idxBizJgUseInfo = new IdxBizJgUseInfo();
if(APPLY_TYPE_QY.equals(jgEnableDisable.getApplyType())){ if (APPLY_TYPE_QY.equals(jgEnableDisable.getApplyType())) {
// 1启用 // 1启用
idxBizJgUseInfo.setEquState(String.valueOf(EquimentEnum.ZAIYONG.getCode())); idxBizJgUseInfo.setEquState(String.valueOf(EquimentEnum.ZAIYONG.getCode()));
} else { } else {
...@@ -568,15 +613,16 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -568,15 +613,16 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
try { try {
tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap); tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap);
} catch (Exception e) { } catch (Exception e) {
log.error("更新es失败", e.getCause()); log.error("更新es失败", e.getCause());
} }
} }
/** /**
* 执行工作流并返回组装好的工作流信息 * 执行工作流并返回组装好的工作流信息
* @param op 是否通过 *
* @param opinion 备注信息 * @param op 是否通过
* @param opinion 备注信息
* @param jgEnableDisable 业务信息 * @param jgEnableDisable 业务信息
* @return 返回组装好的工作流信息 * @return 返回组装好的工作流信息
*/ */
...@@ -607,7 +653,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -607,7 +653,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
try { try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS); boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回) // 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if(!isLocked){ if (!isLocked) {
throw new BadRequest("当前流程已经被执行!请重新打开页面查看并执行!"); throw new BadRequest("当前流程已经被执行!请重新打开页面查看并执行!");
} }
// 流程执行时,状态及权限校验 // 流程执行时,状态及权限校验
...@@ -623,7 +669,6 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -623,7 +669,6 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
jgEnableDisable.setNextTaskId(workflowResultDto.getNextTaskId()); jgEnableDisable.setNextTaskId(workflowResultDto.getNextTaskId());
jgEnableDisable.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds()); jgEnableDisable.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
updateById(jgEnableDisable); updateById(jgEnableDisable);
// 删除待办 // 删除待办
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(jgEnableDisable)); JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(jgEnableDisable));
jsonObject.put("nextExecuteUser", jgEnableDisable.getNextExecutorIds()); jsonObject.put("nextExecuteUser", jgEnableDisable.getNextExecutorIds());
...@@ -634,10 +679,11 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -634,10 +679,11 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
// redis流程实时数据更新 // redis流程实时数据更新
commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgEnableDisable)); commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgEnableDisable));
this.delRepeatUseEquipData(jgEnableDisable);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
if(lock.isHeldByCurrentThread()){ if (lock.isHeldByCurrentThread()) {
lock.unlock(); lock.unlock();
} }
} }
...@@ -710,7 +756,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto, ...@@ -710,7 +756,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
public void deleteMessage(Long sequenceNbr) { public void deleteMessage(Long sequenceNbr) {
JgEnableDisable jgEnableDisable = this.baseMapper.selectById(sequenceNbr); JgEnableDisable jgEnableDisable = this.baseMapper.selectById(sequenceNbr);
// 删除代办 + 中止流程 // 删除代办 + 中止流程
commonService.deleteTaskModel(String.valueOf(sequenceNbr),jgEnableDisable.getInstanceId()); commonService.deleteTaskModel(String.valueOf(sequenceNbr), jgEnableDisable.getInstanceId());
// 删除单子 // 删除单子
this.baseMapper.deleteById(sequenceNbr); this.baseMapper.deleteById(sequenceNbr);
// 删除单子对应eq // 删除单子对应eq
......
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