diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 05104f2..6acd92b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -7,11 +7,16 @@ import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.model.response.SuccessResponseData; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import com.casic.missiles.utils.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; @@ -77,4 +82,22 @@ resultData.setMessage("登录成功"); return resultData; } + + @GetMapping("/test") + @ResponseBody() + public void testStatusListener(Long id){ + String[] formIds={ ApplyFromIdEnum.STANDARD_REVERT_APPROVAL,ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL,ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, + ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL,ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL,ApplyFromIdEnum.DEVICE_SEALED_APPROVAL,ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, + ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL,ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL,ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL,ApplyFromIdEnum.DEVICE_BORROW_APPROVAL,ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL}; + for(String formId:formIds){ + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(formId); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id("") + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); + } + } + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 05104f2..6acd92b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -7,11 +7,16 @@ import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.model.response.SuccessResponseData; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import com.casic.missiles.utils.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; @@ -77,4 +82,22 @@ resultData.setMessage("登录成功"); return resultData; } + + @GetMapping("/test") + @ResponseBody() + public void testStatusListener(Long id){ + String[] formIds={ ApplyFromIdEnum.STANDARD_REVERT_APPROVAL,ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL,ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, + ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL,ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL,ApplyFromIdEnum.DEVICE_SEALED_APPROVAL,ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, + ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL,ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL,ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL,ApplyFromIdEnum.DEVICE_BORROW_APPROVAL,ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL}; + for(String formId:formIds){ + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(formId); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id("") + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); + } + } + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java new file mode 100644 index 0000000..229d96f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java @@ -0,0 +1,13 @@ +package com.casic.missiles.listeners; + +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; + +/** + * @author cz + * 工作流监听后置事件 + */ +public interface NotifyStatusPostProcessor { + + void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO); + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 05104f2..6acd92b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -7,11 +7,16 @@ import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.model.response.SuccessResponseData; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import com.casic.missiles.utils.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; @@ -77,4 +82,22 @@ resultData.setMessage("登录成功"); return resultData; } + + @GetMapping("/test") + @ResponseBody() + public void testStatusListener(Long id){ + String[] formIds={ ApplyFromIdEnum.STANDARD_REVERT_APPROVAL,ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL,ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, + ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL,ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL,ApplyFromIdEnum.DEVICE_SEALED_APPROVAL,ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, + ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL,ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL,ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL,ApplyFromIdEnum.DEVICE_BORROW_APPROVAL,ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL}; + for(String formId:formIds){ + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(formId); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id("") + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); + } + } + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java new file mode 100644 index 0000000..229d96f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java @@ -0,0 +1,13 @@ +package com.casic.missiles.listeners; + +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; + +/** + * @author cz + * 工作流监听后置事件 + */ +public interface NotifyStatusPostProcessor { + + void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index 27bdd92..8ac418f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -1,20 +1,18 @@ package com.casic.missiles.listeners.flowable; -import com.alibaba.excel.util.DateUtils; -import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.mapper.MeterFixedAssetsMapper; -import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.mapper.equipment.*; import com.casic.missiles.mapper.system.SystemFlowFormMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; import com.casic.missiles.model.equipment.*; import com.casic.missiles.model.system.SystemFlowForm; @@ -32,12 +30,6 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - @Slf4j @Component public class ProcessUpdateStateListener implements ExecutionListener { @@ -56,170 +48,20 @@ // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); - switch (systemFlowForm.getFormId()) { - // 标准装置申请 - case ApplyFromIdEnum.STANDARD_REVERT_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STANDARD_USE); - break; - case ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STOP); - break; - case ApplyFromIdEnum.STANDARD_RESUME_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.REVOKE); - break; - case ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL: - changeSupportingEquipment(id); - break; - // 设备状态管理申请 - case ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.IDLE); - break; - case ApplyFromIdEnum.DEVICE_SEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SEALED); - break; - case ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.USE); - break; - case ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SCRAP); - break; - case ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.MANAGEMENT); - break; - // 设备借用领用申请 - case ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_COLLECTING); - break; - case ApplyFromIdEnum.DEVICE_BORROW_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_BORROWED); - break; - //证书打印审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL: - updateCertificateState(Long.valueOf(id)); - break; + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(systemFlowForm.getFormId()); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id(id) + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); } - //设置通过状态为已通过 runtimeService.updateBusinessStatus(execution.getProcessInstanceId(), ApprovalStatusEnum.PASSED); - //审批通过,通知发起人 sendMessageAndSocket(execution, systemFlowForm); } - /** - * 审批通过后修改标准装置配套设备 - * @param id - */ - private void changeSupportingEquipment(String id) { - EquipmentStandardApplyMapper standardApplyMapper = SpringContextUtil.getBean(EquipmentStandardApplyMapper.class); - EquipmentStandardApplyEquipmentMapper applyEquipmentMapper = SpringContextUtil.getBean(EquipmentStandardApplyEquipmentMapper.class); - EquipmentStandardSupportMapper supportMapper = SpringContextUtil.getBean(EquipmentStandardSupportMapper.class); - List supportEquipments = new ArrayList<>(); - // 通过申请id查询申请信息 - EquipmentStandardApply standardApply = standardApplyMapper.selectById(id); - // 通过申请id查询出申请设备列表 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("standard_apply_id",id); - List equipmentStandardApplyEquipments = applyEquipmentMapper.selectList(queryWrapper); - // 设备ids - List equipmentIds = equipmentStandardApplyEquipments.stream().map(EquipmentStandardApplyEquipment::getEquipmentId).collect(Collectors.toList()); - for (Long equipmentId : equipmentIds) { - EquipmentStandardSupportEquipment supportEquipment = new EquipmentStandardSupportEquipment(); - supportEquipment.setEquipmentId(equipmentId); - supportEquipment.setStandardEquipmentId(Long.valueOf(standardApply.getStandardEquipmentId())); - supportEquipments.add(supportEquipment); - } - // 通过标准装置id删除原先配套设备 - QueryWrapper supportEquipmentWrapper = new QueryWrapper<>(); - supportEquipmentWrapper.eq("standard_equipment_id",standardApply.getStandardEquipmentId()); - supportMapper.delete(supportEquipmentWrapper); - // 新增配套设备 - for (EquipmentStandardSupportEquipment supportEquipment : supportEquipments) { - if (supportMapper.insert(supportEquipment) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } - /** - * 审批通过后修改设备借用/领用状态 - * @param id - */ - private void updateEquipmentApplyState(String id, String state) { - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", id).set("process_result", state); - if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - /** - * 审批通过后修改设备管理状态 - * 新增状态变更记录表 - * @param id - */ - private void updateEquipmentState(String id, String state) { - EquipmentApplyEquipmentMapper equipmentMapper = SpringContextUtil.getBean(EquipmentApplyEquipmentMapper.class); - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - EquipmentStateChangeLogMapper stateChangeLogMapper = SpringContextUtil.getBean(EquipmentStateChangeLogMapper.class); - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - // 获取申请关联的设备id - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("apply_id", id); - List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); - // 获取设备idList - List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", equipmentIds).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) > 0) { - UpdateWrapper logUpdateWrapper = new UpdateWrapper<>(); - // 修改状态变更记录结束时间 - logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date())); - if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - // 获取当前申请的信息 - EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); - // 新增状态变更记录 - for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) { - EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson())); - if (stateChangeLogMapper.insert(stateChangeLog) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } else { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - /** - * 审批通过后修改标准装置业务状态 - * @param id - * @param state - */ - private void updateStandardState(String id, String state) { - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", id).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - private void updateCertificateState(Long id) { - Assert.isFalse(Objects.isNull(id), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = new BusinessCertificateReport(); - certificateReport.setId(id); - certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 - certificateReport.setPrintStatus("1"); //打印状态可打印 - int row = certificateReportMapper.updateById(certificateReport); - if (row <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) { JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef()); JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); @@ -247,4 +89,5 @@ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage)); } } + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 05104f2..6acd92b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -7,11 +7,16 @@ import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.model.response.SuccessResponseData; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import com.casic.missiles.utils.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; @@ -77,4 +82,22 @@ resultData.setMessage("登录成功"); return resultData; } + + @GetMapping("/test") + @ResponseBody() + public void testStatusListener(Long id){ + String[] formIds={ ApplyFromIdEnum.STANDARD_REVERT_APPROVAL,ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL,ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, + ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL,ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL,ApplyFromIdEnum.DEVICE_SEALED_APPROVAL,ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, + ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL,ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL,ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL,ApplyFromIdEnum.DEVICE_BORROW_APPROVAL,ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL}; + for(String formId:formIds){ + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(formId); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id("") + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); + } + } + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java new file mode 100644 index 0000000..229d96f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java @@ -0,0 +1,13 @@ +package com.casic.missiles.listeners; + +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; + +/** + * @author cz + * 工作流监听后置事件 + */ +public interface NotifyStatusPostProcessor { + + void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index 27bdd92..8ac418f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -1,20 +1,18 @@ package com.casic.missiles.listeners.flowable; -import com.alibaba.excel.util.DateUtils; -import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.mapper.MeterFixedAssetsMapper; -import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.mapper.equipment.*; import com.casic.missiles.mapper.system.SystemFlowFormMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; import com.casic.missiles.model.equipment.*; import com.casic.missiles.model.system.SystemFlowForm; @@ -32,12 +30,6 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - @Slf4j @Component public class ProcessUpdateStateListener implements ExecutionListener { @@ -56,170 +48,20 @@ // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); - switch (systemFlowForm.getFormId()) { - // 标准装置申请 - case ApplyFromIdEnum.STANDARD_REVERT_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STANDARD_USE); - break; - case ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STOP); - break; - case ApplyFromIdEnum.STANDARD_RESUME_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.REVOKE); - break; - case ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL: - changeSupportingEquipment(id); - break; - // 设备状态管理申请 - case ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.IDLE); - break; - case ApplyFromIdEnum.DEVICE_SEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SEALED); - break; - case ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.USE); - break; - case ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SCRAP); - break; - case ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.MANAGEMENT); - break; - // 设备借用领用申请 - case ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_COLLECTING); - break; - case ApplyFromIdEnum.DEVICE_BORROW_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_BORROWED); - break; - //证书打印审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL: - updateCertificateState(Long.valueOf(id)); - break; + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(systemFlowForm.getFormId()); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id(id) + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); } - //设置通过状态为已通过 runtimeService.updateBusinessStatus(execution.getProcessInstanceId(), ApprovalStatusEnum.PASSED); - //审批通过,通知发起人 sendMessageAndSocket(execution, systemFlowForm); } - /** - * 审批通过后修改标准装置配套设备 - * @param id - */ - private void changeSupportingEquipment(String id) { - EquipmentStandardApplyMapper standardApplyMapper = SpringContextUtil.getBean(EquipmentStandardApplyMapper.class); - EquipmentStandardApplyEquipmentMapper applyEquipmentMapper = SpringContextUtil.getBean(EquipmentStandardApplyEquipmentMapper.class); - EquipmentStandardSupportMapper supportMapper = SpringContextUtil.getBean(EquipmentStandardSupportMapper.class); - List supportEquipments = new ArrayList<>(); - // 通过申请id查询申请信息 - EquipmentStandardApply standardApply = standardApplyMapper.selectById(id); - // 通过申请id查询出申请设备列表 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("standard_apply_id",id); - List equipmentStandardApplyEquipments = applyEquipmentMapper.selectList(queryWrapper); - // 设备ids - List equipmentIds = equipmentStandardApplyEquipments.stream().map(EquipmentStandardApplyEquipment::getEquipmentId).collect(Collectors.toList()); - for (Long equipmentId : equipmentIds) { - EquipmentStandardSupportEquipment supportEquipment = new EquipmentStandardSupportEquipment(); - supportEquipment.setEquipmentId(equipmentId); - supportEquipment.setStandardEquipmentId(Long.valueOf(standardApply.getStandardEquipmentId())); - supportEquipments.add(supportEquipment); - } - // 通过标准装置id删除原先配套设备 - QueryWrapper supportEquipmentWrapper = new QueryWrapper<>(); - supportEquipmentWrapper.eq("standard_equipment_id",standardApply.getStandardEquipmentId()); - supportMapper.delete(supportEquipmentWrapper); - // 新增配套设备 - for (EquipmentStandardSupportEquipment supportEquipment : supportEquipments) { - if (supportMapper.insert(supportEquipment) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } - /** - * 审批通过后修改设备借用/领用状态 - * @param id - */ - private void updateEquipmentApplyState(String id, String state) { - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", id).set("process_result", state); - if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - /** - * 审批通过后修改设备管理状态 - * 新增状态变更记录表 - * @param id - */ - private void updateEquipmentState(String id, String state) { - EquipmentApplyEquipmentMapper equipmentMapper = SpringContextUtil.getBean(EquipmentApplyEquipmentMapper.class); - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - EquipmentStateChangeLogMapper stateChangeLogMapper = SpringContextUtil.getBean(EquipmentStateChangeLogMapper.class); - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - // 获取申请关联的设备id - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("apply_id", id); - List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); - // 获取设备idList - List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", equipmentIds).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) > 0) { - UpdateWrapper logUpdateWrapper = new UpdateWrapper<>(); - // 修改状态变更记录结束时间 - logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date())); - if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - // 获取当前申请的信息 - EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); - // 新增状态变更记录 - for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) { - EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson())); - if (stateChangeLogMapper.insert(stateChangeLog) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } else { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - /** - * 审批通过后修改标准装置业务状态 - * @param id - * @param state - */ - private void updateStandardState(String id, String state) { - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", id).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - private void updateCertificateState(Long id) { - Assert.isFalse(Objects.isNull(id), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = new BusinessCertificateReport(); - certificateReport.setId(id); - certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 - certificateReport.setPrintStatus("1"); //打印状态可打印 - int row = certificateReportMapper.updateById(certificateReport); - if (row <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) { JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef()); JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); @@ -247,4 +89,5 @@ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage)); } } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java new file mode 100644 index 0000000..ae742d3 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java @@ -0,0 +1,43 @@ +package com.casic.missiles.listeners.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * @author cz + * + * 证书打印审批通过状态回填 + */ +@Service(ActionStatusBeanEnum.CERTIFICATE_BEAN_NAME) +public class CertificateStateStatusPostProcessor implements NotifyStatusPostProcessor { + + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + Long id = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); + BusinessCertificateReport certificateReport = new BusinessCertificateReport(); + certificateReport.setId(id); + certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 + certificateReport.setPrintStatus("1"); //打印状态可打印 + int row = certificateReportMapper.updateById(certificateReport); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 05104f2..6acd92b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -7,11 +7,16 @@ import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.model.response.SuccessResponseData; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import com.casic.missiles.utils.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; @@ -77,4 +82,22 @@ resultData.setMessage("登录成功"); return resultData; } + + @GetMapping("/test") + @ResponseBody() + public void testStatusListener(Long id){ + String[] formIds={ ApplyFromIdEnum.STANDARD_REVERT_APPROVAL,ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL,ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, + ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL,ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL,ApplyFromIdEnum.DEVICE_SEALED_APPROVAL,ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, + ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL,ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL,ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL,ApplyFromIdEnum.DEVICE_BORROW_APPROVAL,ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL}; + for(String formId:formIds){ + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(formId); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id("") + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); + } + } + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java new file mode 100644 index 0000000..229d96f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java @@ -0,0 +1,13 @@ +package com.casic.missiles.listeners; + +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; + +/** + * @author cz + * 工作流监听后置事件 + */ +public interface NotifyStatusPostProcessor { + + void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index 27bdd92..8ac418f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -1,20 +1,18 @@ package com.casic.missiles.listeners.flowable; -import com.alibaba.excel.util.DateUtils; -import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.mapper.MeterFixedAssetsMapper; -import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.mapper.equipment.*; import com.casic.missiles.mapper.system.SystemFlowFormMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; import com.casic.missiles.model.equipment.*; import com.casic.missiles.model.system.SystemFlowForm; @@ -32,12 +30,6 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - @Slf4j @Component public class ProcessUpdateStateListener implements ExecutionListener { @@ -56,170 +48,20 @@ // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); - switch (systemFlowForm.getFormId()) { - // 标准装置申请 - case ApplyFromIdEnum.STANDARD_REVERT_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STANDARD_USE); - break; - case ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STOP); - break; - case ApplyFromIdEnum.STANDARD_RESUME_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.REVOKE); - break; - case ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL: - changeSupportingEquipment(id); - break; - // 设备状态管理申请 - case ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.IDLE); - break; - case ApplyFromIdEnum.DEVICE_SEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SEALED); - break; - case ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.USE); - break; - case ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SCRAP); - break; - case ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.MANAGEMENT); - break; - // 设备借用领用申请 - case ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_COLLECTING); - break; - case ApplyFromIdEnum.DEVICE_BORROW_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_BORROWED); - break; - //证书打印审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL: - updateCertificateState(Long.valueOf(id)); - break; + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(systemFlowForm.getFormId()); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id(id) + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); } - //设置通过状态为已通过 runtimeService.updateBusinessStatus(execution.getProcessInstanceId(), ApprovalStatusEnum.PASSED); - //审批通过,通知发起人 sendMessageAndSocket(execution, systemFlowForm); } - /** - * 审批通过后修改标准装置配套设备 - * @param id - */ - private void changeSupportingEquipment(String id) { - EquipmentStandardApplyMapper standardApplyMapper = SpringContextUtil.getBean(EquipmentStandardApplyMapper.class); - EquipmentStandardApplyEquipmentMapper applyEquipmentMapper = SpringContextUtil.getBean(EquipmentStandardApplyEquipmentMapper.class); - EquipmentStandardSupportMapper supportMapper = SpringContextUtil.getBean(EquipmentStandardSupportMapper.class); - List supportEquipments = new ArrayList<>(); - // 通过申请id查询申请信息 - EquipmentStandardApply standardApply = standardApplyMapper.selectById(id); - // 通过申请id查询出申请设备列表 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("standard_apply_id",id); - List equipmentStandardApplyEquipments = applyEquipmentMapper.selectList(queryWrapper); - // 设备ids - List equipmentIds = equipmentStandardApplyEquipments.stream().map(EquipmentStandardApplyEquipment::getEquipmentId).collect(Collectors.toList()); - for (Long equipmentId : equipmentIds) { - EquipmentStandardSupportEquipment supportEquipment = new EquipmentStandardSupportEquipment(); - supportEquipment.setEquipmentId(equipmentId); - supportEquipment.setStandardEquipmentId(Long.valueOf(standardApply.getStandardEquipmentId())); - supportEquipments.add(supportEquipment); - } - // 通过标准装置id删除原先配套设备 - QueryWrapper supportEquipmentWrapper = new QueryWrapper<>(); - supportEquipmentWrapper.eq("standard_equipment_id",standardApply.getStandardEquipmentId()); - supportMapper.delete(supportEquipmentWrapper); - // 新增配套设备 - for (EquipmentStandardSupportEquipment supportEquipment : supportEquipments) { - if (supportMapper.insert(supportEquipment) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } - /** - * 审批通过后修改设备借用/领用状态 - * @param id - */ - private void updateEquipmentApplyState(String id, String state) { - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", id).set("process_result", state); - if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - /** - * 审批通过后修改设备管理状态 - * 新增状态变更记录表 - * @param id - */ - private void updateEquipmentState(String id, String state) { - EquipmentApplyEquipmentMapper equipmentMapper = SpringContextUtil.getBean(EquipmentApplyEquipmentMapper.class); - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - EquipmentStateChangeLogMapper stateChangeLogMapper = SpringContextUtil.getBean(EquipmentStateChangeLogMapper.class); - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - // 获取申请关联的设备id - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("apply_id", id); - List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); - // 获取设备idList - List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", equipmentIds).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) > 0) { - UpdateWrapper logUpdateWrapper = new UpdateWrapper<>(); - // 修改状态变更记录结束时间 - logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date())); - if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - // 获取当前申请的信息 - EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); - // 新增状态变更记录 - for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) { - EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson())); - if (stateChangeLogMapper.insert(stateChangeLog) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } else { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - /** - * 审批通过后修改标准装置业务状态 - * @param id - * @param state - */ - private void updateStandardState(String id, String state) { - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", id).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - private void updateCertificateState(Long id) { - Assert.isFalse(Objects.isNull(id), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = new BusinessCertificateReport(); - certificateReport.setId(id); - certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 - certificateReport.setPrintStatus("1"); //打印状态可打印 - int row = certificateReportMapper.updateById(certificateReport); - if (row <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) { JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef()); JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); @@ -247,4 +89,5 @@ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage)); } } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java new file mode 100644 index 0000000..ae742d3 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java @@ -0,0 +1,43 @@ +package com.casic.missiles.listeners.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * @author cz + * + * 证书打印审批通过状态回填 + */ +@Service(ActionStatusBeanEnum.CERTIFICATE_BEAN_NAME) +public class CertificateStateStatusPostProcessor implements NotifyStatusPostProcessor { + + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + Long id = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); + BusinessCertificateReport certificateReport = new BusinessCertificateReport(); + certificateReport.setId(id); + certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 + certificateReport.setPrintStatus("1"); //打印状态可打印 + int row = certificateReportMapper.updateById(certificateReport); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java new file mode 100644 index 0000000..db56f5f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java @@ -0,0 +1,32 @@ +package com.casic.missiles.listeners.processor; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +/** + * @author xzz + * + * 审批通过后修改标准装置业务状态 + */ +@Service(ActionStatusBeanEnum.APPLY_BEAN_NAME) +public class EquipmentApplyStatusPostProcessor implements NotifyStatusPostProcessor { + + @Override + public void doUpdateNotifyEventStatus( NotifyEventStatusDTO notifyEventStatusDTO) { + MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", notifyEventStatusDTO.getId()).set("manager_state", notifyEventStatusDTO.getStatus()); + if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 05104f2..6acd92b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -7,11 +7,16 @@ import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.model.response.SuccessResponseData; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import com.casic.missiles.utils.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; @@ -77,4 +82,22 @@ resultData.setMessage("登录成功"); return resultData; } + + @GetMapping("/test") + @ResponseBody() + public void testStatusListener(Long id){ + String[] formIds={ ApplyFromIdEnum.STANDARD_REVERT_APPROVAL,ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL,ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, + ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL,ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL,ApplyFromIdEnum.DEVICE_SEALED_APPROVAL,ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, + ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL,ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL,ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL,ApplyFromIdEnum.DEVICE_BORROW_APPROVAL,ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL}; + for(String formId:formIds){ + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(formId); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id("") + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); + } + } + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java new file mode 100644 index 0000000..229d96f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java @@ -0,0 +1,13 @@ +package com.casic.missiles.listeners; + +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; + +/** + * @author cz + * 工作流监听后置事件 + */ +public interface NotifyStatusPostProcessor { + + void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index 27bdd92..8ac418f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -1,20 +1,18 @@ package com.casic.missiles.listeners.flowable; -import com.alibaba.excel.util.DateUtils; -import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.mapper.MeterFixedAssetsMapper; -import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.mapper.equipment.*; import com.casic.missiles.mapper.system.SystemFlowFormMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; import com.casic.missiles.model.equipment.*; import com.casic.missiles.model.system.SystemFlowForm; @@ -32,12 +30,6 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - @Slf4j @Component public class ProcessUpdateStateListener implements ExecutionListener { @@ -56,170 +48,20 @@ // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); - switch (systemFlowForm.getFormId()) { - // 标准装置申请 - case ApplyFromIdEnum.STANDARD_REVERT_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STANDARD_USE); - break; - case ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STOP); - break; - case ApplyFromIdEnum.STANDARD_RESUME_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.REVOKE); - break; - case ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL: - changeSupportingEquipment(id); - break; - // 设备状态管理申请 - case ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.IDLE); - break; - case ApplyFromIdEnum.DEVICE_SEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SEALED); - break; - case ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.USE); - break; - case ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SCRAP); - break; - case ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.MANAGEMENT); - break; - // 设备借用领用申请 - case ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_COLLECTING); - break; - case ApplyFromIdEnum.DEVICE_BORROW_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_BORROWED); - break; - //证书打印审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL: - updateCertificateState(Long.valueOf(id)); - break; + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(systemFlowForm.getFormId()); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id(id) + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); } - //设置通过状态为已通过 runtimeService.updateBusinessStatus(execution.getProcessInstanceId(), ApprovalStatusEnum.PASSED); - //审批通过,通知发起人 sendMessageAndSocket(execution, systemFlowForm); } - /** - * 审批通过后修改标准装置配套设备 - * @param id - */ - private void changeSupportingEquipment(String id) { - EquipmentStandardApplyMapper standardApplyMapper = SpringContextUtil.getBean(EquipmentStandardApplyMapper.class); - EquipmentStandardApplyEquipmentMapper applyEquipmentMapper = SpringContextUtil.getBean(EquipmentStandardApplyEquipmentMapper.class); - EquipmentStandardSupportMapper supportMapper = SpringContextUtil.getBean(EquipmentStandardSupportMapper.class); - List supportEquipments = new ArrayList<>(); - // 通过申请id查询申请信息 - EquipmentStandardApply standardApply = standardApplyMapper.selectById(id); - // 通过申请id查询出申请设备列表 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("standard_apply_id",id); - List equipmentStandardApplyEquipments = applyEquipmentMapper.selectList(queryWrapper); - // 设备ids - List equipmentIds = equipmentStandardApplyEquipments.stream().map(EquipmentStandardApplyEquipment::getEquipmentId).collect(Collectors.toList()); - for (Long equipmentId : equipmentIds) { - EquipmentStandardSupportEquipment supportEquipment = new EquipmentStandardSupportEquipment(); - supportEquipment.setEquipmentId(equipmentId); - supportEquipment.setStandardEquipmentId(Long.valueOf(standardApply.getStandardEquipmentId())); - supportEquipments.add(supportEquipment); - } - // 通过标准装置id删除原先配套设备 - QueryWrapper supportEquipmentWrapper = new QueryWrapper<>(); - supportEquipmentWrapper.eq("standard_equipment_id",standardApply.getStandardEquipmentId()); - supportMapper.delete(supportEquipmentWrapper); - // 新增配套设备 - for (EquipmentStandardSupportEquipment supportEquipment : supportEquipments) { - if (supportMapper.insert(supportEquipment) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } - /** - * 审批通过后修改设备借用/领用状态 - * @param id - */ - private void updateEquipmentApplyState(String id, String state) { - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", id).set("process_result", state); - if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - /** - * 审批通过后修改设备管理状态 - * 新增状态变更记录表 - * @param id - */ - private void updateEquipmentState(String id, String state) { - EquipmentApplyEquipmentMapper equipmentMapper = SpringContextUtil.getBean(EquipmentApplyEquipmentMapper.class); - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - EquipmentStateChangeLogMapper stateChangeLogMapper = SpringContextUtil.getBean(EquipmentStateChangeLogMapper.class); - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - // 获取申请关联的设备id - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("apply_id", id); - List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); - // 获取设备idList - List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", equipmentIds).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) > 0) { - UpdateWrapper logUpdateWrapper = new UpdateWrapper<>(); - // 修改状态变更记录结束时间 - logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date())); - if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - // 获取当前申请的信息 - EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); - // 新增状态变更记录 - for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) { - EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson())); - if (stateChangeLogMapper.insert(stateChangeLog) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } else { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - /** - * 审批通过后修改标准装置业务状态 - * @param id - * @param state - */ - private void updateStandardState(String id, String state) { - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", id).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - private void updateCertificateState(Long id) { - Assert.isFalse(Objects.isNull(id), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = new BusinessCertificateReport(); - certificateReport.setId(id); - certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 - certificateReport.setPrintStatus("1"); //打印状态可打印 - int row = certificateReportMapper.updateById(certificateReport); - if (row <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) { JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef()); JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); @@ -247,4 +89,5 @@ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage)); } } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java new file mode 100644 index 0000000..ae742d3 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java @@ -0,0 +1,43 @@ +package com.casic.missiles.listeners.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * @author cz + * + * 证书打印审批通过状态回填 + */ +@Service(ActionStatusBeanEnum.CERTIFICATE_BEAN_NAME) +public class CertificateStateStatusPostProcessor implements NotifyStatusPostProcessor { + + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + Long id = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); + BusinessCertificateReport certificateReport = new BusinessCertificateReport(); + certificateReport.setId(id); + certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 + certificateReport.setPrintStatus("1"); //打印状态可打印 + int row = certificateReportMapper.updateById(certificateReport); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java new file mode 100644 index 0000000..db56f5f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java @@ -0,0 +1,32 @@ +package com.casic.missiles.listeners.processor; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +/** + * @author xzz + * + * 审批通过后修改标准装置业务状态 + */ +@Service(ActionStatusBeanEnum.APPLY_BEAN_NAME) +public class EquipmentApplyStatusPostProcessor implements NotifyStatusPostProcessor { + + @Override + public void doUpdateNotifyEventStatus( NotifyEventStatusDTO notifyEventStatusDTO) { + MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", notifyEventStatusDTO.getId()).set("manager_state", notifyEventStatusDTO.getStatus()); + if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentLeaseStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentLeaseStatusPostProcessor.java new file mode 100644 index 0000000..528fab8 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentLeaseStatusPostProcessor.java @@ -0,0 +1,30 @@ +package com.casic.missiles.listeners.processor; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.equipment.EquipmentApplyMapper; +import com.casic.missiles.model.equipment.EquipmentApply; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +/** + * 审批通过后 + * 修改设备租借状态 + * + */ +@Service(ActionStatusBeanEnum.LEASE_BEAN_NAME) +public class EquipmentLeaseStatusPostProcessor implements NotifyStatusPostProcessor { + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", notifyEventStatusDTO.getId()).set("process_result", notifyEventStatusDTO.getStatus()); + if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 05104f2..6acd92b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -7,11 +7,16 @@ import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.model.response.SuccessResponseData; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import com.casic.missiles.utils.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; @@ -77,4 +82,22 @@ resultData.setMessage("登录成功"); return resultData; } + + @GetMapping("/test") + @ResponseBody() + public void testStatusListener(Long id){ + String[] formIds={ ApplyFromIdEnum.STANDARD_REVERT_APPROVAL,ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL,ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, + ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL,ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL,ApplyFromIdEnum.DEVICE_SEALED_APPROVAL,ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, + ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL,ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL,ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL,ApplyFromIdEnum.DEVICE_BORROW_APPROVAL,ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL}; + for(String formId:formIds){ + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(formId); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id("") + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); + } + } + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java new file mode 100644 index 0000000..229d96f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java @@ -0,0 +1,13 @@ +package com.casic.missiles.listeners; + +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; + +/** + * @author cz + * 工作流监听后置事件 + */ +public interface NotifyStatusPostProcessor { + + void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index 27bdd92..8ac418f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -1,20 +1,18 @@ package com.casic.missiles.listeners.flowable; -import com.alibaba.excel.util.DateUtils; -import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.mapper.MeterFixedAssetsMapper; -import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.mapper.equipment.*; import com.casic.missiles.mapper.system.SystemFlowFormMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; import com.casic.missiles.model.equipment.*; import com.casic.missiles.model.system.SystemFlowForm; @@ -32,12 +30,6 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - @Slf4j @Component public class ProcessUpdateStateListener implements ExecutionListener { @@ -56,170 +48,20 @@ // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); - switch (systemFlowForm.getFormId()) { - // 标准装置申请 - case ApplyFromIdEnum.STANDARD_REVERT_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STANDARD_USE); - break; - case ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STOP); - break; - case ApplyFromIdEnum.STANDARD_RESUME_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.REVOKE); - break; - case ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL: - changeSupportingEquipment(id); - break; - // 设备状态管理申请 - case ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.IDLE); - break; - case ApplyFromIdEnum.DEVICE_SEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SEALED); - break; - case ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.USE); - break; - case ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SCRAP); - break; - case ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.MANAGEMENT); - break; - // 设备借用领用申请 - case ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_COLLECTING); - break; - case ApplyFromIdEnum.DEVICE_BORROW_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_BORROWED); - break; - //证书打印审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL: - updateCertificateState(Long.valueOf(id)); - break; + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(systemFlowForm.getFormId()); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id(id) + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); } - //设置通过状态为已通过 runtimeService.updateBusinessStatus(execution.getProcessInstanceId(), ApprovalStatusEnum.PASSED); - //审批通过,通知发起人 sendMessageAndSocket(execution, systemFlowForm); } - /** - * 审批通过后修改标准装置配套设备 - * @param id - */ - private void changeSupportingEquipment(String id) { - EquipmentStandardApplyMapper standardApplyMapper = SpringContextUtil.getBean(EquipmentStandardApplyMapper.class); - EquipmentStandardApplyEquipmentMapper applyEquipmentMapper = SpringContextUtil.getBean(EquipmentStandardApplyEquipmentMapper.class); - EquipmentStandardSupportMapper supportMapper = SpringContextUtil.getBean(EquipmentStandardSupportMapper.class); - List supportEquipments = new ArrayList<>(); - // 通过申请id查询申请信息 - EquipmentStandardApply standardApply = standardApplyMapper.selectById(id); - // 通过申请id查询出申请设备列表 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("standard_apply_id",id); - List equipmentStandardApplyEquipments = applyEquipmentMapper.selectList(queryWrapper); - // 设备ids - List equipmentIds = equipmentStandardApplyEquipments.stream().map(EquipmentStandardApplyEquipment::getEquipmentId).collect(Collectors.toList()); - for (Long equipmentId : equipmentIds) { - EquipmentStandardSupportEquipment supportEquipment = new EquipmentStandardSupportEquipment(); - supportEquipment.setEquipmentId(equipmentId); - supportEquipment.setStandardEquipmentId(Long.valueOf(standardApply.getStandardEquipmentId())); - supportEquipments.add(supportEquipment); - } - // 通过标准装置id删除原先配套设备 - QueryWrapper supportEquipmentWrapper = new QueryWrapper<>(); - supportEquipmentWrapper.eq("standard_equipment_id",standardApply.getStandardEquipmentId()); - supportMapper.delete(supportEquipmentWrapper); - // 新增配套设备 - for (EquipmentStandardSupportEquipment supportEquipment : supportEquipments) { - if (supportMapper.insert(supportEquipment) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } - /** - * 审批通过后修改设备借用/领用状态 - * @param id - */ - private void updateEquipmentApplyState(String id, String state) { - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", id).set("process_result", state); - if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - /** - * 审批通过后修改设备管理状态 - * 新增状态变更记录表 - * @param id - */ - private void updateEquipmentState(String id, String state) { - EquipmentApplyEquipmentMapper equipmentMapper = SpringContextUtil.getBean(EquipmentApplyEquipmentMapper.class); - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - EquipmentStateChangeLogMapper stateChangeLogMapper = SpringContextUtil.getBean(EquipmentStateChangeLogMapper.class); - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - // 获取申请关联的设备id - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("apply_id", id); - List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); - // 获取设备idList - List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", equipmentIds).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) > 0) { - UpdateWrapper logUpdateWrapper = new UpdateWrapper<>(); - // 修改状态变更记录结束时间 - logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date())); - if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - // 获取当前申请的信息 - EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); - // 新增状态变更记录 - for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) { - EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson())); - if (stateChangeLogMapper.insert(stateChangeLog) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } else { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - /** - * 审批通过后修改标准装置业务状态 - * @param id - * @param state - */ - private void updateStandardState(String id, String state) { - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", id).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - private void updateCertificateState(Long id) { - Assert.isFalse(Objects.isNull(id), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = new BusinessCertificateReport(); - certificateReport.setId(id); - certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 - certificateReport.setPrintStatus("1"); //打印状态可打印 - int row = certificateReportMapper.updateById(certificateReport); - if (row <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) { JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef()); JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); @@ -247,4 +89,5 @@ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage)); } } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java new file mode 100644 index 0000000..ae742d3 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java @@ -0,0 +1,43 @@ +package com.casic.missiles.listeners.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * @author cz + * + * 证书打印审批通过状态回填 + */ +@Service(ActionStatusBeanEnum.CERTIFICATE_BEAN_NAME) +public class CertificateStateStatusPostProcessor implements NotifyStatusPostProcessor { + + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + Long id = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); + BusinessCertificateReport certificateReport = new BusinessCertificateReport(); + certificateReport.setId(id); + certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 + certificateReport.setPrintStatus("1"); //打印状态可打印 + int row = certificateReportMapper.updateById(certificateReport); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java new file mode 100644 index 0000000..db56f5f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java @@ -0,0 +1,32 @@ +package com.casic.missiles.listeners.processor; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +/** + * @author xzz + * + * 审批通过后修改标准装置业务状态 + */ +@Service(ActionStatusBeanEnum.APPLY_BEAN_NAME) +public class EquipmentApplyStatusPostProcessor implements NotifyStatusPostProcessor { + + @Override + public void doUpdateNotifyEventStatus( NotifyEventStatusDTO notifyEventStatusDTO) { + MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", notifyEventStatusDTO.getId()).set("manager_state", notifyEventStatusDTO.getStatus()); + if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentLeaseStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentLeaseStatusPostProcessor.java new file mode 100644 index 0000000..528fab8 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentLeaseStatusPostProcessor.java @@ -0,0 +1,30 @@ +package com.casic.missiles.listeners.processor; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.equipment.EquipmentApplyMapper; +import com.casic.missiles.model.equipment.EquipmentApply; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +/** + * 审批通过后 + * 修改设备租借状态 + * + */ +@Service(ActionStatusBeanEnum.LEASE_BEAN_NAME) +public class EquipmentLeaseStatusPostProcessor implements NotifyStatusPostProcessor { + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", notifyEventStatusDTO.getId()).set("process_result", notifyEventStatusDTO.getStatus()); + if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentManagingStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentManagingStatusPostProcessor.java new file mode 100644 index 0000000..773539e --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentManagingStatusPostProcessor.java @@ -0,0 +1,70 @@ +package com.casic.missiles.listeners.processor; + +import com.alibaba.excel.util.DateUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; +import com.casic.missiles.mapper.equipment.EquipmentApplyEquipmentMapper; +import com.casic.missiles.mapper.equipment.EquipmentApplyMapper; +import com.casic.missiles.mapper.equipment.EquipmentStateChangeLogMapper; +import com.casic.missiles.model.equipment.EquipmentApply; +import com.casic.missiles.model.equipment.EquipmentApplyEquipment; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.equipment.EquipmentStateChangeLog; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author xzz + * * 审批通过后修改设备管理状态 + * * 新增状态变更记录表 + */ +@Service(ActionStatusBeanEnum.MANAGING_BEAN_NAME) +public class EquipmentManagingStatusPostProcessor implements NotifyStatusPostProcessor { + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + String state=notifyEventStatusDTO.getStatus(); + String id=notifyEventStatusDTO.getId(); + EquipmentApplyEquipmentMapper equipmentMapper = SpringContextUtil.getBean(EquipmentApplyEquipmentMapper.class); + MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); + EquipmentStateChangeLogMapper stateChangeLogMapper = SpringContextUtil.getBean(EquipmentStateChangeLogMapper.class); + EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); + // 获取申请关联的设备id + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("apply_id", id); + List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList + List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", equipmentIds).set("manager_state", state); + if (meterFixedAssetsMapper.update(null, updateWrapper) > 0) { + UpdateWrapper logUpdateWrapper = new UpdateWrapper<>(); + // 修改状态变更记录结束时间 + logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date())); + if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + // 获取当前申请的信息 + EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); + // 新增状态变更记录 + for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) { + EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson())); + if (stateChangeLogMapper.insert(stateChangeLog) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 05104f2..6acd92b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -7,11 +7,16 @@ import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.model.response.SuccessResponseData; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import com.casic.missiles.utils.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; @@ -77,4 +82,22 @@ resultData.setMessage("登录成功"); return resultData; } + + @GetMapping("/test") + @ResponseBody() + public void testStatusListener(Long id){ + String[] formIds={ ApplyFromIdEnum.STANDARD_REVERT_APPROVAL,ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL,ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, + ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL,ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL,ApplyFromIdEnum.DEVICE_SEALED_APPROVAL,ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, + ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL,ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL,ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL,ApplyFromIdEnum.DEVICE_BORROW_APPROVAL,ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL}; + for(String formId:formIds){ + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(formId); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id("") + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); + } + } + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java new file mode 100644 index 0000000..229d96f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/NotifyStatusPostProcessor.java @@ -0,0 +1,13 @@ +package com.casic.missiles.listeners; + +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; + +/** + * @author cz + * 工作流监听后置事件 + */ +public interface NotifyStatusPostProcessor { + + void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO); + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java index 27bdd92..8ac418f 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java @@ -1,20 +1,18 @@ package com.casic.missiles.listeners.flowable; -import com.alibaba.excel.util.DateUtils; -import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.notifyevent.AwareActionStatusEnum; import com.casic.missiles.enums.system.ApplyFromIdEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.mapper.MeterFixedAssetsMapper; -import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; import com.casic.missiles.mapper.equipment.*; import com.casic.missiles.mapper.system.SystemFlowFormMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper; import com.casic.missiles.model.equipment.*; import com.casic.missiles.model.system.SystemFlowForm; @@ -32,12 +30,6 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - @Slf4j @Component public class ProcessUpdateStateListener implements ExecutionListener { @@ -56,170 +48,20 @@ // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); - switch (systemFlowForm.getFormId()) { - // 标准装置申请 - case ApplyFromIdEnum.STANDARD_REVERT_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STANDARD_USE); - break; - case ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.STOP); - break; - case ApplyFromIdEnum.STANDARD_RESUME_APPROVAL: - updateStandardState(id, EquipmentApplyProcessEnum.REVOKE); - break; - case ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL: - changeSupportingEquipment(id); - break; - // 设备状态管理申请 - case ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.IDLE); - break; - case ApplyFromIdEnum.DEVICE_SEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SEALED); - break; - case ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.USE); - break; - case ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.SCRAP); - break; - case ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL: - updateEquipmentState(id, EquipmentApplyProcessEnum.MANAGEMENT); - break; - // 设备借用领用申请 - case ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_COLLECTING); - break; - case ApplyFromIdEnum.DEVICE_BORROW_APPROVAL: - updateEquipmentApplyState(id, EquipmentApplyProcessEnum.WAIT_BORROWED); - break; - //证书打印审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL: - updateCertificateState(Long.valueOf(id)); - break; + AwareActionStatusEnum notifyActionStatusEnum= AwareActionStatusEnum.ACTION_STATUS_MAP.getActionStatusMap().get(systemFlowForm.getFormId()); + NotifyEventStatusDTO notifyEventStatusDTO = NotifyEventStatusDTO.builder() + .id(id) + .status(notifyActionStatusEnum.getStatus()).build(); + NotifyStatusPostProcessor postProcessor = SpringContextUtil.getBean(notifyActionStatusEnum.getActionBeanName()); + if (postProcessor != null) { + postProcessor.doUpdateNotifyEventStatus(notifyEventStatusDTO); } - //设置通过状态为已通过 runtimeService.updateBusinessStatus(execution.getProcessInstanceId(), ApprovalStatusEnum.PASSED); - //审批通过,通知发起人 sendMessageAndSocket(execution, systemFlowForm); } - /** - * 审批通过后修改标准装置配套设备 - * @param id - */ - private void changeSupportingEquipment(String id) { - EquipmentStandardApplyMapper standardApplyMapper = SpringContextUtil.getBean(EquipmentStandardApplyMapper.class); - EquipmentStandardApplyEquipmentMapper applyEquipmentMapper = SpringContextUtil.getBean(EquipmentStandardApplyEquipmentMapper.class); - EquipmentStandardSupportMapper supportMapper = SpringContextUtil.getBean(EquipmentStandardSupportMapper.class); - List supportEquipments = new ArrayList<>(); - // 通过申请id查询申请信息 - EquipmentStandardApply standardApply = standardApplyMapper.selectById(id); - // 通过申请id查询出申请设备列表 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("standard_apply_id",id); - List equipmentStandardApplyEquipments = applyEquipmentMapper.selectList(queryWrapper); - // 设备ids - List equipmentIds = equipmentStandardApplyEquipments.stream().map(EquipmentStandardApplyEquipment::getEquipmentId).collect(Collectors.toList()); - for (Long equipmentId : equipmentIds) { - EquipmentStandardSupportEquipment supportEquipment = new EquipmentStandardSupportEquipment(); - supportEquipment.setEquipmentId(equipmentId); - supportEquipment.setStandardEquipmentId(Long.valueOf(standardApply.getStandardEquipmentId())); - supportEquipments.add(supportEquipment); - } - // 通过标准装置id删除原先配套设备 - QueryWrapper supportEquipmentWrapper = new QueryWrapper<>(); - supportEquipmentWrapper.eq("standard_equipment_id",standardApply.getStandardEquipmentId()); - supportMapper.delete(supportEquipmentWrapper); - // 新增配套设备 - for (EquipmentStandardSupportEquipment supportEquipment : supportEquipments) { - if (supportMapper.insert(supportEquipment) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } - /** - * 审批通过后修改设备借用/领用状态 - * @param id - */ - private void updateEquipmentApplyState(String id, String state) { - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", id).set("process_result", state); - if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - /** - * 审批通过后修改设备管理状态 - * 新增状态变更记录表 - * @param id - */ - private void updateEquipmentState(String id, String state) { - EquipmentApplyEquipmentMapper equipmentMapper = SpringContextUtil.getBean(EquipmentApplyEquipmentMapper.class); - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - EquipmentStateChangeLogMapper stateChangeLogMapper = SpringContextUtil.getBean(EquipmentStateChangeLogMapper.class); - EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); - // 获取申请关联的设备id - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("apply_id", id); - List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); - // 获取设备idList - List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", equipmentIds).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) > 0) { - UpdateWrapper logUpdateWrapper = new UpdateWrapper<>(); - // 修改状态变更记录结束时间 - logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date())); - if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - // 获取当前申请的信息 - EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); - // 新增状态变更记录 - for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) { - EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson())); - if (stateChangeLogMapper.insert(stateChangeLog) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - } else { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - /** - * 审批通过后修改标准装置业务状态 - * @param id - * @param state - */ - private void updateStandardState(String id, String state) { - MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", id).set("manager_state", state); - if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - - private void updateCertificateState(Long id) { - Assert.isFalse(Objects.isNull(id), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = new BusinessCertificateReport(); - certificateReport.setId(id); - certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 - certificateReport.setPrintStatus("1"); //打印状态可打印 - int row = certificateReportMapper.updateById(certificateReport); - if (row <= 0) { - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); - } - } - private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) { JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef()); JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef"); @@ -247,4 +89,5 @@ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage)); } } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java new file mode 100644 index 0000000..ae742d3 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/CertificateStateStatusPostProcessor.java @@ -0,0 +1,43 @@ +package com.casic.missiles.listeners.processor; + +import cn.hutool.core.lang.Assert; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.enums.system.ApprovalStatusEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * @author cz + * + * 证书打印审批通过状态回填 + */ +@Service(ActionStatusBeanEnum.CERTIFICATE_BEAN_NAME) +public class CertificateStateStatusPostProcessor implements NotifyStatusPostProcessor { + + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + Long id = Long.valueOf(notifyEventStatusDTO.getId()); + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); + BusinessCertificateReport certificateReport = new BusinessCertificateReport(); + certificateReport.setId(id); + certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中 + certificateReport.setPrintStatus("1"); //打印状态可打印 + int row = certificateReportMapper.updateById(certificateReport); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java new file mode 100644 index 0000000..db56f5f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentApplyStatusPostProcessor.java @@ -0,0 +1,32 @@ +package com.casic.missiles.listeners.processor; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +/** + * @author xzz + * + * 审批通过后修改标准装置业务状态 + */ +@Service(ActionStatusBeanEnum.APPLY_BEAN_NAME) +public class EquipmentApplyStatusPostProcessor implements NotifyStatusPostProcessor { + + @Override + public void doUpdateNotifyEventStatus( NotifyEventStatusDTO notifyEventStatusDTO) { + MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", notifyEventStatusDTO.getId()).set("manager_state", notifyEventStatusDTO.getStatus()); + if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentLeaseStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentLeaseStatusPostProcessor.java new file mode 100644 index 0000000..528fab8 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentLeaseStatusPostProcessor.java @@ -0,0 +1,30 @@ +package com.casic.missiles.listeners.processor; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.equipment.EquipmentApplyMapper; +import com.casic.missiles.model.equipment.EquipmentApply; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +/** + * 审批通过后 + * 修改设备租借状态 + * + */ +@Service(ActionStatusBeanEnum.LEASE_BEAN_NAME) +public class EquipmentLeaseStatusPostProcessor implements NotifyStatusPostProcessor { + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", notifyEventStatusDTO.getId()).set("process_result", notifyEventStatusDTO.getStatus()); + if (equipmentApplyMapper.update(null, updateWrapper) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentManagingStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentManagingStatusPostProcessor.java new file mode 100644 index 0000000..773539e --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentManagingStatusPostProcessor.java @@ -0,0 +1,70 @@ +package com.casic.missiles.listeners.processor; + +import com.alibaba.excel.util.DateUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; +import com.casic.missiles.mapper.equipment.EquipmentApplyEquipmentMapper; +import com.casic.missiles.mapper.equipment.EquipmentApplyMapper; +import com.casic.missiles.mapper.equipment.EquipmentStateChangeLogMapper; +import com.casic.missiles.model.equipment.EquipmentApply; +import com.casic.missiles.model.equipment.EquipmentApplyEquipment; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.equipment.EquipmentStateChangeLog; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author xzz + * * 审批通过后修改设备管理状态 + * * 新增状态变更记录表 + */ +@Service(ActionStatusBeanEnum.MANAGING_BEAN_NAME) +public class EquipmentManagingStatusPostProcessor implements NotifyStatusPostProcessor { + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + String state=notifyEventStatusDTO.getStatus(); + String id=notifyEventStatusDTO.getId(); + EquipmentApplyEquipmentMapper equipmentMapper = SpringContextUtil.getBean(EquipmentApplyEquipmentMapper.class); + MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class); + EquipmentStateChangeLogMapper stateChangeLogMapper = SpringContextUtil.getBean(EquipmentStateChangeLogMapper.class); + EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class); + // 获取申请关联的设备id + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("apply_id", id); + List equipmentApplyEquipments = equipmentMapper.selectList(wrapper); + // 获取设备idList + List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList()); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", equipmentIds).set("manager_state", state); + if (meterFixedAssetsMapper.update(null, updateWrapper) > 0) { + UpdateWrapper logUpdateWrapper = new UpdateWrapper<>(); + // 修改状态变更记录结束时间 + logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date())); + if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + // 获取当前申请的信息 + EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); + // 新增状态变更记录 + for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) { + EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson())); + if (stateChangeLogMapper.insert(stateChangeLog) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentSupporteStatusPostProcessor.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentSupporteStatusPostProcessor.java new file mode 100644 index 0000000..e29b191 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/processor/EquipmentSupporteStatusPostProcessor.java @@ -0,0 +1,60 @@ +package com.casic.missiles.listeners.processor; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.listeners.NotifyStatusPostProcessor; +import com.casic.missiles.mapper.equipment.EquipmentStandardApplyEquipmentMapper; +import com.casic.missiles.mapper.equipment.EquipmentStandardApplyMapper; +import com.casic.missiles.mapper.equipment.EquipmentStandardSupportMapper; +import com.casic.missiles.model.equipment.EquipmentStandardApply; +import com.casic.missiles.model.equipment.EquipmentStandardApplyEquipment; +import com.casic.missiles.model.equipment.EquipmentStandardSupportEquipment; +import com.casic.missiles.utils.SpringContextUtil; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author xzz + * * 审批通过后修改标准装置配套设备状态 + */ +@Service(ActionStatusBeanEnum.SUPPORT_BEAN_NAME) +public class EquipmentSupporteStatusPostProcessor implements NotifyStatusPostProcessor { + @Override + public void doUpdateNotifyEventStatus(NotifyEventStatusDTO notifyEventStatusDTO) { + String id = notifyEventStatusDTO.getId(); + EquipmentStandardApplyMapper standardApplyMapper = SpringContextUtil.getBean(EquipmentStandardApplyMapper.class); + EquipmentStandardApplyEquipmentMapper applyEquipmentMapper = SpringContextUtil.getBean(EquipmentStandardApplyEquipmentMapper.class); + EquipmentStandardSupportMapper supportMapper = SpringContextUtil.getBean(EquipmentStandardSupportMapper.class); + List supportEquipments = new ArrayList<>(); + // 通过申请id查询申请信息 + EquipmentStandardApply standardApply = standardApplyMapper.selectById(id); + // 通过申请id查询出申请设备列表 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("standard_apply_id", id); + List equipmentStandardApplyEquipments = applyEquipmentMapper.selectList(queryWrapper); + // 设备ids + List equipmentIds = equipmentStandardApplyEquipments.stream().map(EquipmentStandardApplyEquipment::getEquipmentId).collect(Collectors.toList()); + for (Long equipmentId : equipmentIds) { + EquipmentStandardSupportEquipment supportEquipment = new EquipmentStandardSupportEquipment(); + supportEquipment.setEquipmentId(equipmentId); + supportEquipment.setStandardEquipmentId(Long.valueOf(standardApply.getStandardEquipmentId())); + supportEquipments.add(supportEquipment); + } + // 通过标准装置id删除原先配套设备 + QueryWrapper supportEquipmentWrapper = new QueryWrapper<>(); + supportEquipmentWrapper.eq("standard_equipment_id", standardApply.getStandardEquipmentId()); + supportMapper.delete(supportEquipmentWrapper); + // 新增配套设备 + for (EquipmentStandardSupportEquipment supportEquipment : supportEquipments) { + if (supportMapper.insert(supportEquipment) <= 0) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + } + } +}