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-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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); + } + } + } +} 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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); + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java index 91f1072..1aab5c1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java @@ -15,9 +15,9 @@ /** * 字典code转换成名称 */ - public static void convertDictCodeToName(Object object) throws Exception{ + public static void convertDictCodeToName(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } @@ -27,7 +27,7 @@ throw new BusinessException(500, "缓存名不能为空"); } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if(Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())){ + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { continue; } String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); @@ -39,7 +39,59 @@ if (destField == null) { throw new BusinessException(500, "字典名称字段不存在"); } - if(!destField.isAccessible()) { + if (!destField.isAccessible()) { + destField.setAccessible(true); + } + destField.set(object, name); + } + } + } + + + /** + * 多个字典code(逗号隔开),转换成名称 + */ + public static void convertDictMultiCodeToName(Object object) throws Exception { + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { + + DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; + if (StringUtils.isEmpty(dictCodeField.cacheName())) { + throw new BusinessException(500, "缓存名不能为空"); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { + continue; + } + String name = ""; + //进行字典值得获取 + if (field.get(object).toString().contains(",")) { + String[] filedObjects = field.get(object).toString().split(","); + for (String filedObject : filedObjects) { + name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } else { + name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + String destFieldName = field.getName() + "Name"; + Field destField = object.getClass().getDeclaredField(destFieldName); + if (destField == null) { + throw new BusinessException(500, "字典名称字段不存在"); + } + if (!destField.isAccessible()) { destField.setAccessible(true); } destField.set(object, name); @@ -49,19 +101,20 @@ /** * 校验字典code是否合法 + * * @param object * @return */ - public static boolean validDictCode(Object object) throws Exception{ + public static boolean validDictCode(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; // 判断字典code是否需要校验 - if(!dictCodeField.needValid()){ + if (!dictCodeField.needValid()) { continue; } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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); + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java index 91f1072..1aab5c1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java @@ -15,9 +15,9 @@ /** * 字典code转换成名称 */ - public static void convertDictCodeToName(Object object) throws Exception{ + public static void convertDictCodeToName(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } @@ -27,7 +27,7 @@ throw new BusinessException(500, "缓存名不能为空"); } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if(Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())){ + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { continue; } String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); @@ -39,7 +39,59 @@ if (destField == null) { throw new BusinessException(500, "字典名称字段不存在"); } - if(!destField.isAccessible()) { + if (!destField.isAccessible()) { + destField.setAccessible(true); + } + destField.set(object, name); + } + } + } + + + /** + * 多个字典code(逗号隔开),转换成名称 + */ + public static void convertDictMultiCodeToName(Object object) throws Exception { + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { + + DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; + if (StringUtils.isEmpty(dictCodeField.cacheName())) { + throw new BusinessException(500, "缓存名不能为空"); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { + continue; + } + String name = ""; + //进行字典值得获取 + if (field.get(object).toString().contains(",")) { + String[] filedObjects = field.get(object).toString().split(","); + for (String filedObject : filedObjects) { + name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } else { + name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + String destFieldName = field.getName() + "Name"; + Field destField = object.getClass().getDeclaredField(destFieldName); + if (destField == null) { + throw new BusinessException(500, "字典名称字段不存在"); + } + if (!destField.isAccessible()) { destField.setAccessible(true); } destField.set(object, name); @@ -49,19 +101,20 @@ /** * 校验字典code是否合法 + * * @param object * @return */ - public static boolean validDictCode(Object object) throws Exception{ + public static boolean validDictCode(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; // 判断字典code是否需要校验 - if(!dictCodeField.needValid()){ + if (!dictCodeField.needValid()) { continue; } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java index 8b73201..ebb38b7 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java @@ -2,8 +2,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.model.customer.CustomerSampleInfo; import org.apache.ibatis.annotations.Param; @@ -12,7 +13,9 @@ Long selectMaxSampleNo(); - Page measureRecordsBySampleId(Page page, @Param("request") MeasureRecordsIdRequest recordsIdRequest); + Page measureRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); + + Page certificateRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); Page samplesByOderId(Page page, 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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); + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java index 91f1072..1aab5c1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java @@ -15,9 +15,9 @@ /** * 字典code转换成名称 */ - public static void convertDictCodeToName(Object object) throws Exception{ + public static void convertDictCodeToName(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } @@ -27,7 +27,7 @@ throw new BusinessException(500, "缓存名不能为空"); } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if(Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())){ + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { continue; } String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); @@ -39,7 +39,59 @@ if (destField == null) { throw new BusinessException(500, "字典名称字段不存在"); } - if(!destField.isAccessible()) { + if (!destField.isAccessible()) { + destField.setAccessible(true); + } + destField.set(object, name); + } + } + } + + + /** + * 多个字典code(逗号隔开),转换成名称 + */ + public static void convertDictMultiCodeToName(Object object) throws Exception { + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { + + DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; + if (StringUtils.isEmpty(dictCodeField.cacheName())) { + throw new BusinessException(500, "缓存名不能为空"); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { + continue; + } + String name = ""; + //进行字典值得获取 + if (field.get(object).toString().contains(",")) { + String[] filedObjects = field.get(object).toString().split(","); + for (String filedObject : filedObjects) { + name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } else { + name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + String destFieldName = field.getName() + "Name"; + Field destField = object.getClass().getDeclaredField(destFieldName); + if (destField == null) { + throw new BusinessException(500, "字典名称字段不存在"); + } + if (!destField.isAccessible()) { destField.setAccessible(true); } destField.set(object, name); @@ -49,19 +101,20 @@ /** * 校验字典code是否合法 + * * @param object * @return */ - public static boolean validDictCode(Object object) throws Exception{ + public static boolean validDictCode(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; // 判断字典code是否需要校验 - if(!dictCodeField.needValid()){ + if (!dictCodeField.needValid()) { continue; } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java index 8b73201..ebb38b7 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java @@ -2,8 +2,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.model.customer.CustomerSampleInfo; import org.apache.ibatis.annotations.Param; @@ -12,7 +13,9 @@ Long selectMaxSampleNo(); - Page measureRecordsBySampleId(Page page, @Param("request") MeasureRecordsIdRequest recordsIdRequest); + Page measureRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); + + Page certificateRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); Page samplesByOderId(Page page, diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java deleted file mode 100644 index ed42059..0000000 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.mapper.customer.customize; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.customer.CertificationResponse; - -public interface CertificationResponseMapper extends BaseMapper { -} 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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); + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java index 91f1072..1aab5c1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java @@ -15,9 +15,9 @@ /** * 字典code转换成名称 */ - public static void convertDictCodeToName(Object object) throws Exception{ + public static void convertDictCodeToName(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } @@ -27,7 +27,7 @@ throw new BusinessException(500, "缓存名不能为空"); } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if(Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())){ + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { continue; } String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); @@ -39,7 +39,59 @@ if (destField == null) { throw new BusinessException(500, "字典名称字段不存在"); } - if(!destField.isAccessible()) { + if (!destField.isAccessible()) { + destField.setAccessible(true); + } + destField.set(object, name); + } + } + } + + + /** + * 多个字典code(逗号隔开),转换成名称 + */ + public static void convertDictMultiCodeToName(Object object) throws Exception { + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { + + DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; + if (StringUtils.isEmpty(dictCodeField.cacheName())) { + throw new BusinessException(500, "缓存名不能为空"); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { + continue; + } + String name = ""; + //进行字典值得获取 + if (field.get(object).toString().contains(",")) { + String[] filedObjects = field.get(object).toString().split(","); + for (String filedObject : filedObjects) { + name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } else { + name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + String destFieldName = field.getName() + "Name"; + Field destField = object.getClass().getDeclaredField(destFieldName); + if (destField == null) { + throw new BusinessException(500, "字典名称字段不存在"); + } + if (!destField.isAccessible()) { destField.setAccessible(true); } destField.set(object, name); @@ -49,19 +101,20 @@ /** * 校验字典code是否合法 + * * @param object * @return */ - public static boolean validDictCode(Object object) throws Exception{ + public static boolean validDictCode(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; // 判断字典code是否需要校验 - if(!dictCodeField.needValid()){ + if (!dictCodeField.needValid()) { continue; } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java index 8b73201..ebb38b7 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java @@ -2,8 +2,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.model.customer.CustomerSampleInfo; import org.apache.ibatis.annotations.Param; @@ -12,7 +13,9 @@ Long selectMaxSampleNo(); - Page measureRecordsBySampleId(Page page, @Param("request") MeasureRecordsIdRequest recordsIdRequest); + Page measureRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); + + Page certificateRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); Page samplesByOderId(Page page, diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java deleted file mode 100644 index ed42059..0000000 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.mapper.customer.customize; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.customer.CertificationResponse; - -public interface CertificationResponseMapper extends BaseMapper { -} diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 3657cfd..5aedb18 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -42,10 +42,10 @@ FROM business_certificate_report WHERE is_del = 0 - and certificate_no like concat('%',#{request.certificateNo},'%') + and certificate_report_code like concat('%',#{request.certificateNo},'%') - and certificate_class like concat('%',#{request.certificateClass},'%') + and certificate_report_category like concat('%',#{request.certificateClass},'%') and print_status = #{request.printStatus} 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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); + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java index 91f1072..1aab5c1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java @@ -15,9 +15,9 @@ /** * 字典code转换成名称 */ - public static void convertDictCodeToName(Object object) throws Exception{ + public static void convertDictCodeToName(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } @@ -27,7 +27,7 @@ throw new BusinessException(500, "缓存名不能为空"); } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if(Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())){ + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { continue; } String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); @@ -39,7 +39,59 @@ if (destField == null) { throw new BusinessException(500, "字典名称字段不存在"); } - if(!destField.isAccessible()) { + if (!destField.isAccessible()) { + destField.setAccessible(true); + } + destField.set(object, name); + } + } + } + + + /** + * 多个字典code(逗号隔开),转换成名称 + */ + public static void convertDictMultiCodeToName(Object object) throws Exception { + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { + + DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; + if (StringUtils.isEmpty(dictCodeField.cacheName())) { + throw new BusinessException(500, "缓存名不能为空"); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { + continue; + } + String name = ""; + //进行字典值得获取 + if (field.get(object).toString().contains(",")) { + String[] filedObjects = field.get(object).toString().split(","); + for (String filedObject : filedObjects) { + name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } else { + name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + String destFieldName = field.getName() + "Name"; + Field destField = object.getClass().getDeclaredField(destFieldName); + if (destField == null) { + throw new BusinessException(500, "字典名称字段不存在"); + } + if (!destField.isAccessible()) { destField.setAccessible(true); } destField.set(object, name); @@ -49,19 +101,20 @@ /** * 校验字典code是否合法 + * * @param object * @return */ - public static boolean validDictCode(Object object) throws Exception{ + public static boolean validDictCode(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; // 判断字典code是否需要校验 - if(!dictCodeField.needValid()){ + if (!dictCodeField.needValid()) { continue; } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java index 8b73201..ebb38b7 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java @@ -2,8 +2,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.model.customer.CustomerSampleInfo; import org.apache.ibatis.annotations.Param; @@ -12,7 +13,9 @@ Long selectMaxSampleNo(); - Page measureRecordsBySampleId(Page page, @Param("request") MeasureRecordsIdRequest recordsIdRequest); + Page measureRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); + + Page certificateRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); Page samplesByOderId(Page page, diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java deleted file mode 100644 index ed42059..0000000 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.mapper.customer.customize; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.customer.CertificationResponse; - -public interface CertificationResponseMapper extends BaseMapper { -} diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 3657cfd..5aedb18 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -42,10 +42,10 @@ FROM business_certificate_report WHERE is_del = 0 - and certificate_no like concat('%',#{request.certificateNo},'%') + and certificate_report_code like concat('%',#{request.certificateNo},'%') - and certificate_class like concat('%',#{request.certificateClass},'%') + and certificate_report_category like concat('%',#{request.certificateClass},'%') and print_status = #{request.printStatus} diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml index a119612..7f75b74 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml @@ -40,29 +40,28 @@ SELECT bif.id,deliverer,customerNo,customerName,delivererTel,orderId,id,interchangeCode,remark,deliverTime,bo.orderId,isUrgent,orderNo,requireOverTime,reciever FROM ( - SELECT id,interchange_code AS "interchangeCode",remark,order_id,deliver_time AS - "deliverTime",reciever,deliverer,deliverer_tel AS "delivererTel" - FROM business_interchange - WHERE is_del = 0 - - AND interchange_Code=#{request.interchangeCode} - - - AND reciever=#{request.reciever} - - - - AND #{request.startTime} DATE_FORMAT(deliver_time,'%Y-%m-%d') - - - AND #{request.endTime} = ]]> DATE_FORMAT(deliver_time,'%Y-%m-%d') - - - and id in - - #{id} - - + SELECT id,interchange_code AS "interchangeCode",remark,order_id,deliver_time AS + "deliverTime",reciever,deliverer,deliverer_tel AS "delivererTel" + FROM business_interchange + WHERE is_del = 0 + + AND interchange_Code=#{request.interchangeCode} + + + AND reciever=#{request.reciever} + + + AND #{request.startTime} DATE_FORMAT(deliver_time,'%Y-%m-%d') + + + AND #{request.endTime} = ]]> DATE_FORMAT(deliver_time,'%Y-%m-%d') + + + and id in + + #{id} + + ) bif JOIN ( SELECT customer_no AS "customerNo",customer_name AS "customerName",id as "orderId",is_urgent AS 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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); + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java index 91f1072..1aab5c1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java @@ -15,9 +15,9 @@ /** * 字典code转换成名称 */ - public static void convertDictCodeToName(Object object) throws Exception{ + public static void convertDictCodeToName(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } @@ -27,7 +27,7 @@ throw new BusinessException(500, "缓存名不能为空"); } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if(Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())){ + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { continue; } String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); @@ -39,7 +39,59 @@ if (destField == null) { throw new BusinessException(500, "字典名称字段不存在"); } - if(!destField.isAccessible()) { + if (!destField.isAccessible()) { + destField.setAccessible(true); + } + destField.set(object, name); + } + } + } + + + /** + * 多个字典code(逗号隔开),转换成名称 + */ + public static void convertDictMultiCodeToName(Object object) throws Exception { + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { + + DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; + if (StringUtils.isEmpty(dictCodeField.cacheName())) { + throw new BusinessException(500, "缓存名不能为空"); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { + continue; + } + String name = ""; + //进行字典值得获取 + if (field.get(object).toString().contains(",")) { + String[] filedObjects = field.get(object).toString().split(","); + for (String filedObject : filedObjects) { + name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } else { + name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + String destFieldName = field.getName() + "Name"; + Field destField = object.getClass().getDeclaredField(destFieldName); + if (destField == null) { + throw new BusinessException(500, "字典名称字段不存在"); + } + if (!destField.isAccessible()) { destField.setAccessible(true); } destField.set(object, name); @@ -49,19 +101,20 @@ /** * 校验字典code是否合法 + * * @param object * @return */ - public static boolean validDictCode(Object object) throws Exception{ + public static boolean validDictCode(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; // 判断字典code是否需要校验 - if(!dictCodeField.needValid()){ + if (!dictCodeField.needValid()) { continue; } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java index 8b73201..ebb38b7 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java @@ -2,8 +2,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.model.customer.CustomerSampleInfo; import org.apache.ibatis.annotations.Param; @@ -12,7 +13,9 @@ Long selectMaxSampleNo(); - Page measureRecordsBySampleId(Page page, @Param("request") MeasureRecordsIdRequest recordsIdRequest); + Page measureRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); + + Page certificateRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); Page samplesByOderId(Page page, diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java deleted file mode 100644 index ed42059..0000000 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.mapper.customer.customize; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.customer.CertificationResponse; - -public interface CertificationResponseMapper extends BaseMapper { -} diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 3657cfd..5aedb18 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -42,10 +42,10 @@ FROM business_certificate_report WHERE is_del = 0 - and certificate_no like concat('%',#{request.certificateNo},'%') + and certificate_report_code like concat('%',#{request.certificateNo},'%') - and certificate_class like concat('%',#{request.certificateClass},'%') + and certificate_report_category like concat('%',#{request.certificateClass},'%') and print_status = #{request.printStatus} diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml index a119612..7f75b74 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml @@ -40,29 +40,28 @@ SELECT bif.id,deliverer,customerNo,customerName,delivererTel,orderId,id,interchangeCode,remark,deliverTime,bo.orderId,isUrgent,orderNo,requireOverTime,reciever FROM ( - SELECT id,interchange_code AS "interchangeCode",remark,order_id,deliver_time AS - "deliverTime",reciever,deliverer,deliverer_tel AS "delivererTel" - FROM business_interchange - WHERE is_del = 0 - - AND interchange_Code=#{request.interchangeCode} - - - AND reciever=#{request.reciever} - - - - AND #{request.startTime} DATE_FORMAT(deliver_time,'%Y-%m-%d') - - - AND #{request.endTime} = ]]> DATE_FORMAT(deliver_time,'%Y-%m-%d') - - - and id in - - #{id} - - + SELECT id,interchange_code AS "interchangeCode",remark,order_id,deliver_time AS + "deliverTime",reciever,deliverer,deliverer_tel AS "delivererTel" + FROM business_interchange + WHERE is_del = 0 + + AND interchange_Code=#{request.interchangeCode} + + + AND reciever=#{request.reciever} + + + AND #{request.startTime} DATE_FORMAT(deliver_time,'%Y-%m-%d') + + + AND #{request.endTime} = ]]> DATE_FORMAT(deliver_time,'%Y-%m-%d') + + + and id in + + #{id} + + ) bif JOIN ( SELECT customer_no AS "customerNo",customer_name AS "customerName",id as "orderId",is_urgent AS diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index cff5fc5..86f4ee4 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -33,7 +33,7 @@ SELECT bosr.id,csi.id AS "sampleId", csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no,bo.order_code, bo.id AS orderId,bo.customer_id,bo.customer_name,bo.customer_no,bo.deliverer,bo.is_urgent,csi.sample_belong, bo.require_over_time,bosr.sample_status,bosr.real_deliver_time AS "realDeliverTime",csi.measure_type AS "measureType", - bo.is_urgent AS "isUrgent" + bo.is_urgent AS "isUrgent",plan_deliver_time AS "planDeliverTime" FROM ( SELECT * 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/business/BusinessInterchangeController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java index e2d588a..481f92e 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessInterchangeController.java @@ -33,7 +33,7 @@ * 业务管理-设备交接单 前端控制器 *

* - * @author wangpeng + * @author cz * @since 2023-02-02 */ @RestController diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index ae7a28d..4461f67 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -10,6 +10,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.Info.*; +import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; @@ -119,13 +120,20 @@ return ReturnUtil.success(super.packForBT(customerService.certificationByCustomerId(idDTO.getId()))); } + @ApiOperation("根据客户id查询检定记录(在样品中实现,可复用)") + @PostMapping("/fake/interface") + public ReturnDTO> measureRecordsBySampleId() { + return null; + } + @ApiOperation("客户导出") @PostMapping("/export") - public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response){ + public void sampleExport(@RequestBody @Valid CustomerListRequest request, HttpServletResponse response) { customerService.customerExport(request, response); } - //*******************************************************************************************************************// + + //*******************************************************************************************************************// // @ApiOperation("客户批量导入") // @PostMapping("/batchImport") // public ReturnDTO exportAdvice(@RequestBody @Valid CustomerAdviceInfo customerAdviceInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index c7d6b3f..101a5d0 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -10,9 +10,9 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListRequest; import com.casic.missiles.dto.customer.sample.CustomerSampleListResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; @@ -94,20 +94,18 @@ customerSampleService.sampleExport(request, response); } - @ApiOperation("根据样品id或客户id查询检定记录") - @PostMapping("/measureRecordsBySampleId") - public ReturnDTO> mesureRecordsBySampleId(@RequestBody MeasureRecordsIdRequest recordsIdRequest) { - return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsBySampleId(recordsIdRequest))); + @ApiOperation("根据样品id/客户id查询检定记录") + @PostMapping("/measureRecordsById") + public ReturnDTO> measureRecordsById(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) { + return ReturnUtil.success(super.packForBT(customerSampleService.measureRecordsById(customerSampleIdRequest))); } - @ApiOperation("根据样品id查询检定证书") - @PostMapping("/certificationBySampleId") - public ReturnDTO> certificationBySampleId(@RequestBody @Valid IdDTO idDTO) { - Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return ReturnUtil.success(super.packForBT(customerSampleService.certificationBySampleId(idDTO.getId()))); + @ApiOperation("根据样品id/客户id查询检定证书") + @PostMapping("/certificateRecordsById") + public ReturnDTO> certificationBySampleId(@RequestBody CustomerSampleIdRequest customerSampleIdRequest) throws Exception{ + return ReturnUtil.success(super.packForBT(customerSampleService.certificateRecordsById(customerSampleIdRequest))); } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java new file mode 100644 index 0000000..ebb9d60 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/ActionStatusBeanEnum.java @@ -0,0 +1,18 @@ +package com.casic.missiles.enums.notifyevent; + +/** + * 这里定义bean的信息 + */ +public interface ActionStatusBeanEnum { + + String APPLY_BEAN_NAME = "equipmentApplyBean"; + + String SUPPORT_BEAN_NAME = "equipmentSupportBean"; + + String MANAGING_BEAN_NAME = "equipmentManagingBean"; + + String CERTIFICATE_BEAN_NAME = "certificatePrintBean"; + + String LEASE_BEAN_NAME = "equipmentLeaseBean"; + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java new file mode 100644 index 0000000..9300729 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareActionStatusEnum.java @@ -0,0 +1,63 @@ +package com.casic.missiles.enums.notifyevent; + +import com.casic.missiles.enums.equipment.EquipmentApplyProcessEnum; +import com.casic.missiles.enums.system.ApplyFromIdEnum; + +import java.util.HashMap; + +public enum AwareActionStatusEnum implements ActionStatusBeanEnum { + EQUIPMENT_APPLY_USE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STANDARD_USE), + EQUIPMENT_APPLY_STOP(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.STOP), + EQUIPMENT_APPLY_REVOKE(APPLY_BEAN_NAME, EquipmentApplyProcessEnum.REVOKE), + EQUIPMENT_SUPPORT_STATUS(SUPPORT_BEAN_NAME, ""), + DEVICE_MANAGING_IDLE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.IDLE), + DEVICE_MANAGING_SEALED(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SEALED), + DEVICE_MANAGING_USE(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.USE), + DEVICE_MANAGING_SCRAP(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.SCRAP), + DEVICE_MANAGING_MANAGEMENT(MANAGING_BEAN_NAME, EquipmentApplyProcessEnum.MANAGEMENT), + DEVICE_LEASE_CONSUMING(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_COLLECTING), + DEVICE_LEASE_BORROWED(LEASE_BEAN_NAME, EquipmentApplyProcessEnum.WAIT_BORROWED), + CERTIFICATE_PRINT_STATUS(CERTIFICATE_BEAN_NAME, ""), + ACTION_STATUS_MAP(new HashMap() { + { + put(ApplyFromIdEnum.STANDARD_REVERT_APPROVAL, EQUIPMENT_APPLY_USE); + put(ApplyFromIdEnum.STANDARD_PAUSE_APPROVAL, EQUIPMENT_APPLY_STOP); + put(ApplyFromIdEnum.STANDARD_RESUME_APPROVAL, EQUIPMENT_APPLY_REVOKE); + put(ApplyFromIdEnum.STANDARD_CHANGE_APPROVAL, EQUIPMENT_SUPPORT_STATUS); + put(ApplyFromIdEnum.DEVICE_UNUSED_APPROVAL, DEVICE_MANAGING_IDLE); + put(ApplyFromIdEnum.DEVICE_SEALED_APPROVAL, DEVICE_MANAGING_SEALED); + put(ApplyFromIdEnum.DEVICE_UNSEALED_APPROVAL, DEVICE_MANAGING_USE); + put(ApplyFromIdEnum.DEVICE_SCRAPPED_ROVAL, DEVICE_MANAGING_SCRAP); + put(ApplyFromIdEnum.DEVICE_HANDLE_APPROVAL, DEVICE_MANAGING_MANAGEMENT); + put(ApplyFromIdEnum.DEVICE_CONSUMING_APPROVAL, DEVICE_LEASE_CONSUMING); // 设备领用申请 + put(ApplyFromIdEnum.DEVICE_BORROW_APPROVAL, DEVICE_LEASE_BORROWED); // 设备借用申请 + put(ApplyFromIdEnum.CERTIFICATE_PRINT_APPROVAL, CERTIFICATE_PRINT_STATUS); //证书打印审批通过状态回填 + } + }); + String actionBeanName; + String status; + + AwareActionStatusEnum(String actionBeanName, String status) { + this.actionBeanName = actionBeanName; + this.status = status; + } + + public String getActionBeanName() { + return actionBeanName; + } + + public String getStatus() { + return status; + } + + public HashMap actionStatusMap; + + AwareActionStatusEnum(HashMap actionStatusMap) { + this.actionStatusMap = actionStatusMap; + } + + public HashMap getActionStatusMap() { + return actionStatusMap; + } + +} 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 c2597b0..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,175 +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; - //证书报告审批通过状态回填 - case ApplyFromIdEnum.CERTIFICATE_REPORT_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"); @@ -252,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); + } + } + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java index 91f1072..1aab5c1 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/DictCodeUtils.java @@ -15,9 +15,9 @@ /** * 字典code转换成名称 */ - public static void convertDictCodeToName(Object object) throws Exception{ + public static void convertDictCodeToName(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } @@ -27,7 +27,7 @@ throw new BusinessException(500, "缓存名不能为空"); } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if(Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())){ + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { continue; } String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); @@ -39,7 +39,59 @@ if (destField == null) { throw new BusinessException(500, "字典名称字段不存在"); } - if(!destField.isAccessible()) { + if (!destField.isAccessible()) { + destField.setAccessible(true); + } + destField.set(object, name); + } + } + } + + + /** + * 多个字典code(逗号隔开),转换成名称 + */ + public static void convertDictMultiCodeToName(Object object) throws Exception { + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { + + DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; + if (StringUtils.isEmpty(dictCodeField.cacheName())) { + throw new BusinessException(500, "缓存名不能为空"); + } + AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); + if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { + continue; + } + String name = ""; + //进行字典值得获取 + if (field.get(object).toString().contains(",")) { + String[] filedObjects = field.get(object).toString().split(","); + for (String filedObject : filedObjects) { + name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } else { + name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); + if (StringUtils.isEmpty(name)) { + throw new BusinessException(500, dictCodeField.message()); + } + } + String destFieldName = field.getName() + "Name"; + Field destField = object.getClass().getDeclaredField(destFieldName); + if (destField == null) { + throw new BusinessException(500, "字典名称字段不存在"); + } + if (!destField.isAccessible()) { destField.setAccessible(true); } destField.set(object, name); @@ -49,19 +101,20 @@ /** * 校验字典code是否合法 + * * @param object * @return */ - public static boolean validDictCode(Object object) throws Exception{ + public static boolean validDictCode(Object object) throws Exception { Field[] fields = object.getClass().getDeclaredFields(); - for (Field field:fields) { + for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; // 判断字典code是否需要校验 - if(!dictCodeField.needValid()){ + if (!dictCodeField.needValid()) { continue; } AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java index 8b73201..ebb38b7 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/CustomerSampleMapper.java @@ -2,8 +2,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.MeasureRecordsResponse; -import com.casic.missiles.dto.customer.sample.MeasureRecordsIdRequest; +import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; import com.casic.missiles.model.customer.CustomerSampleInfo; import org.apache.ibatis.annotations.Param; @@ -12,7 +13,9 @@ Long selectMaxSampleNo(); - Page measureRecordsBySampleId(Page page, @Param("request") MeasureRecordsIdRequest recordsIdRequest); + Page measureRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); + + Page certificateRecordsById(Page page, @Param("request") CustomerSampleIdRequest customerSampleIdRequest); Page samplesByOderId(Page page, diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java deleted file mode 100644 index ed42059..0000000 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/customer/customize/CertificationResponseMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.mapper.customer.customize; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.customer.CertificationResponse; - -public interface CertificationResponseMapper extends BaseMapper { -} diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 3657cfd..5aedb18 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -42,10 +42,10 @@ FROM business_certificate_report WHERE is_del = 0 - and certificate_no like concat('%',#{request.certificateNo},'%') + and certificate_report_code like concat('%',#{request.certificateNo},'%') - and certificate_class like concat('%',#{request.certificateClass},'%') + and certificate_report_category like concat('%',#{request.certificateClass},'%') and print_status = #{request.printStatus} diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml index a119612..7f75b74 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessInterchangeMapper.xml @@ -40,29 +40,28 @@ SELECT bif.id,deliverer,customerNo,customerName,delivererTel,orderId,id,interchangeCode,remark,deliverTime,bo.orderId,isUrgent,orderNo,requireOverTime,reciever FROM ( - SELECT id,interchange_code AS "interchangeCode",remark,order_id,deliver_time AS - "deliverTime",reciever,deliverer,deliverer_tel AS "delivererTel" - FROM business_interchange - WHERE is_del = 0 - - AND interchange_Code=#{request.interchangeCode} - - - AND reciever=#{request.reciever} - - - - AND #{request.startTime} DATE_FORMAT(deliver_time,'%Y-%m-%d') - - - AND #{request.endTime} = ]]> DATE_FORMAT(deliver_time,'%Y-%m-%d') - - - and id in - - #{id} - - + SELECT id,interchange_code AS "interchangeCode",remark,order_id,deliver_time AS + "deliverTime",reciever,deliverer,deliverer_tel AS "delivererTel" + FROM business_interchange + WHERE is_del = 0 + + AND interchange_Code=#{request.interchangeCode} + + + AND reciever=#{request.reciever} + + + AND #{request.startTime} DATE_FORMAT(deliver_time,'%Y-%m-%d') + + + AND #{request.endTime} = ]]> DATE_FORMAT(deliver_time,'%Y-%m-%d') + + + and id in + + #{id} + + ) bif JOIN ( SELECT customer_no AS "customerNo",customer_name AS "customerName",id as "orderId",is_urgent AS diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index cff5fc5..86f4ee4 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -33,7 +33,7 @@ SELECT bosr.id,csi.id AS "sampleId", csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no,bo.order_code, bo.id AS orderId,bo.customer_id,bo.customer_name,bo.customer_no,bo.deliverer,bo.is_urgent,csi.sample_belong, bo.require_over_time,bosr.sample_status,bosr.real_deliver_time AS "realDeliverTime",csi.measure_type AS "measureType", - bo.is_urgent AS "isUrgent" + bo.is_urgent AS "isUrgent",plan_deliver_time AS "planDeliverTime" FROM ( SELECT * diff --git a/casic-metering-dao/src/main/resources/mapper/customer/CustomerSampleMapper.xml b/casic-metering-dao/src/main/resources/mapper/customer/CustomerSampleMapper.xml index e7f5950..893a2ff 100644 --- a/casic-metering-dao/src/main/resources/mapper/customer/CustomerSampleMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/customer/CustomerSampleMapper.xml @@ -7,41 +7,56 @@ FROM customer_sample_info - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + + - SELECT order_id AS "orderId",order_code AS "orderCode",order_time AS orderTime, customer_no AS customerCode,customer_name AS "customerName",deliverer,real_deliver_time AS "deliverTime" FROM ( - SELECT id - FROM customer_sample_info csi - WHERE csi.is_del =0 - - AND csi.id=#{request.sampleId} - - - AND csi.customer_id=#{request.customerId } - + SELECT id + FROM customer_sample_info csi + WHERE csi.is_del =0 + + AND csi.id=#{request.sampleId} + + + AND csi.customer_id=#{request.customerId } + )csi JOIN ( - SELECT sample_id,order_id,real_deliver_time - FROM business_order_sample_relation - WHERE 1=1 - - AND sample_id=#{request.sampleId} - + SELECT sample_id,order_id,real_deliver_time + FROM business_order_sample_relation + WHERE 1=1 + + AND sample_id=#{request.sampleId} + )bosr ON bosr.sample_id=csi.id JOIN ( - SELECT * - FROM business_order - WHERE is_del =0 - - AND customer_id=#{request.customerId} - + SELECT * + FROM business_order + WHERE is_del =0 + + AND customer_id=#{request.customerId} + )bo ON bo.id=bosr.order_id ORDER BY bosr.real_deliver_time DESC + + +