diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index ac5918e..59587af 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -1,20 +1,84 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MonitorCodeEnum; +import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 业务管理-证书报告 服务实现类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Service public class BusinessCertificateReportServiceImpl extends ServiceImpl implements IBusinessCertificateReportService { + + @Autowired + private IBusinessOriginalRecordService originalRecordService; + /** + * 保存证书报告信息 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport) { + + initCertificateReport(certificateReport); + if(this.baseMapper.insert(certificateReport)>0) + return ReturnUtil.success(); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 证书报告详情 + * @param id + * @return + */ + @Override + public BusinessCertificateReport certificateReportDetail(Long id) { + BusinessCertificateReport certificateReport = this.baseMapper.selectById(id); + if(certificateReport.getOriginalRecordId()!=null){ + try { + certificateReport.setBusinessOriginalRecord(originalRecordService.originalDetail(certificateReport.getOriginalRecordId())); + } catch (Exception e) { + e.printStackTrace(); + } + } + return certificateReport; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + + Long maxNo = this.baseMapper.selectMaxCode(); + //生成证书编号 + String certificateReportNo =NumberGeneratorUtil.getContactNo( + MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"),maxNo); + AuthUser authUser = ShiroKit.getUser(); + certificateReport.setCreateUser(authUser.getId()); + certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setCertificateReportCode(certificateReportNo); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index ac5918e..59587af 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -1,20 +1,84 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MonitorCodeEnum; +import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 业务管理-证书报告 服务实现类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Service public class BusinessCertificateReportServiceImpl extends ServiceImpl implements IBusinessCertificateReportService { + + @Autowired + private IBusinessOriginalRecordService originalRecordService; + /** + * 保存证书报告信息 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport) { + + initCertificateReport(certificateReport); + if(this.baseMapper.insert(certificateReport)>0) + return ReturnUtil.success(); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 证书报告详情 + * @param id + * @return + */ + @Override + public BusinessCertificateReport certificateReportDetail(Long id) { + BusinessCertificateReport certificateReport = this.baseMapper.selectById(id); + if(certificateReport.getOriginalRecordId()!=null){ + try { + certificateReport.setBusinessOriginalRecord(originalRecordService.originalDetail(certificateReport.getOriginalRecordId())); + } catch (Exception e) { + e.printStackTrace(); + } + } + return certificateReport; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + + Long maxNo = this.baseMapper.selectMaxCode(); + //生成证书编号 + String certificateReportNo =NumberGeneratorUtil.getContactNo( + MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"),maxNo); + AuthUser authUser = ShiroKit.getUser(); + certificateReport.setCreateUser(authUser.getId()); + certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setCertificateReportCode(certificateReportNo); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java index 219919f..c4ed5f6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.mapper.business.BusinessEnvironmentRecordMapper; import com.casic.missiles.mapper.business.EnvironmentListResponseMapper; import com.casic.missiles.model.business.BusinessEnvironmentRecord; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessEnvironmentRecordService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -94,7 +95,8 @@ QueryWrapper wrapper = listParamWrapper(request); List environmentListResponseList = this.environmentListResponseMapper.selectList(wrapper); try { - iBaseExportService.exportExcel(response, EnvironmentListResponse.class, environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); + iBaseExportService.exportExcel(response, EnvironmentListResponse.class, + environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); } catch (IOException e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } @@ -114,6 +116,9 @@ private QueryWrapper listParamWrapper(EnvironmentListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); + if(!CollectionUtils.isEmpty(request.getIds()) && request.getIds().size()!=0){ + wrapper.in("id", request.getIds()); + } wrapper.like(StringUtils.isNotBlank(request.getEnvironmentCode()), "environment_code", request.getEnvironmentCode()); wrapper.like(StringUtils.isNotBlank(request.getRoomNumber()), "room_number", request.getRoomNumber()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()),//apply方法传入参数名不能为空 diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index ac5918e..59587af 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -1,20 +1,84 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MonitorCodeEnum; +import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 业务管理-证书报告 服务实现类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Service public class BusinessCertificateReportServiceImpl extends ServiceImpl implements IBusinessCertificateReportService { + + @Autowired + private IBusinessOriginalRecordService originalRecordService; + /** + * 保存证书报告信息 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport) { + + initCertificateReport(certificateReport); + if(this.baseMapper.insert(certificateReport)>0) + return ReturnUtil.success(); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 证书报告详情 + * @param id + * @return + */ + @Override + public BusinessCertificateReport certificateReportDetail(Long id) { + BusinessCertificateReport certificateReport = this.baseMapper.selectById(id); + if(certificateReport.getOriginalRecordId()!=null){ + try { + certificateReport.setBusinessOriginalRecord(originalRecordService.originalDetail(certificateReport.getOriginalRecordId())); + } catch (Exception e) { + e.printStackTrace(); + } + } + return certificateReport; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + + Long maxNo = this.baseMapper.selectMaxCode(); + //生成证书编号 + String certificateReportNo =NumberGeneratorUtil.getContactNo( + MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"),maxNo); + AuthUser authUser = ShiroKit.getUser(); + certificateReport.setCreateUser(authUser.getId()); + certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setCertificateReportCode(certificateReportNo); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java index 219919f..c4ed5f6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.mapper.business.BusinessEnvironmentRecordMapper; import com.casic.missiles.mapper.business.EnvironmentListResponseMapper; import com.casic.missiles.model.business.BusinessEnvironmentRecord; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessEnvironmentRecordService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -94,7 +95,8 @@ QueryWrapper wrapper = listParamWrapper(request); List environmentListResponseList = this.environmentListResponseMapper.selectList(wrapper); try { - iBaseExportService.exportExcel(response, EnvironmentListResponse.class, environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); + iBaseExportService.exportExcel(response, EnvironmentListResponse.class, + environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); } catch (IOException e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } @@ -114,6 +116,9 @@ private QueryWrapper listParamWrapper(EnvironmentListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); + if(!CollectionUtils.isEmpty(request.getIds()) && request.getIds().size()!=0){ + wrapper.in("id", request.getIds()); + } wrapper.like(StringUtils.isNotBlank(request.getEnvironmentCode()), "environment_code", request.getEnvironmentCode()); wrapper.like(StringUtils.isNotBlank(request.getRoomNumber()), "room_number", request.getRoomNumber()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()),//apply方法传入参数名不能为空 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java index 7dda5c3..046e4aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java @@ -113,11 +113,26 @@ @Override public ReturnDTO updateOriginal(BusinessOriginalRecord businessOriginalRecord) { - return null; + if (this.baseMapper.insert(businessOriginalRecord) > 0) { + //加入技术文件绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getFileList()) && businessOriginalRecord.getFileList().size() > 0) { + originalRecordFileRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getFileList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getEquipmentInfoList()) && businessOriginalRecord.getEquipmentInfoList().size() > 0) { + originalRecordEquipmentRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - @Transactional + /** + * @param businessOriginalRecord + * @return + */ @Override + @Transactional public ReturnDTO addOriginal(BusinessOriginalRecord businessOriginalRecord) { initBusinessEnvironmentRecord(businessOriginalRecord); if (baseMapper.insert(businessOriginalRecord) > 0) { @@ -136,11 +151,14 @@ @Override public void originExport(OriginRecordRequest request, HttpServletResponse response) { - - List originExportList = this.baseMapper.originExportList(request); try { + List originExportList = this.baseMapper.originExportList(request); + for (OriginRecordResponse originRecordResponse : originExportList) { + //字典值转换 + DictCodeUtils.convertDictCodeToName(originRecordResponse); + } iBaseExportService.exportExcel(response, OriginRecordResponse.class, originExportList, ExportEnum.ORIGIN_DATA.getSheetName()); - } catch (IOException e) { + } catch (Exception e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index ac5918e..59587af 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -1,20 +1,84 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MonitorCodeEnum; +import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 业务管理-证书报告 服务实现类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Service public class BusinessCertificateReportServiceImpl extends ServiceImpl implements IBusinessCertificateReportService { + + @Autowired + private IBusinessOriginalRecordService originalRecordService; + /** + * 保存证书报告信息 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport) { + + initCertificateReport(certificateReport); + if(this.baseMapper.insert(certificateReport)>0) + return ReturnUtil.success(); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 证书报告详情 + * @param id + * @return + */ + @Override + public BusinessCertificateReport certificateReportDetail(Long id) { + BusinessCertificateReport certificateReport = this.baseMapper.selectById(id); + if(certificateReport.getOriginalRecordId()!=null){ + try { + certificateReport.setBusinessOriginalRecord(originalRecordService.originalDetail(certificateReport.getOriginalRecordId())); + } catch (Exception e) { + e.printStackTrace(); + } + } + return certificateReport; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + + Long maxNo = this.baseMapper.selectMaxCode(); + //生成证书编号 + String certificateReportNo =NumberGeneratorUtil.getContactNo( + MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"),maxNo); + AuthUser authUser = ShiroKit.getUser(); + certificateReport.setCreateUser(authUser.getId()); + certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setCertificateReportCode(certificateReportNo); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java index 219919f..c4ed5f6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.mapper.business.BusinessEnvironmentRecordMapper; import com.casic.missiles.mapper.business.EnvironmentListResponseMapper; import com.casic.missiles.model.business.BusinessEnvironmentRecord; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessEnvironmentRecordService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -94,7 +95,8 @@ QueryWrapper wrapper = listParamWrapper(request); List environmentListResponseList = this.environmentListResponseMapper.selectList(wrapper); try { - iBaseExportService.exportExcel(response, EnvironmentListResponse.class, environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); + iBaseExportService.exportExcel(response, EnvironmentListResponse.class, + environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); } catch (IOException e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } @@ -114,6 +116,9 @@ private QueryWrapper listParamWrapper(EnvironmentListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); + if(!CollectionUtils.isEmpty(request.getIds()) && request.getIds().size()!=0){ + wrapper.in("id", request.getIds()); + } wrapper.like(StringUtils.isNotBlank(request.getEnvironmentCode()), "environment_code", request.getEnvironmentCode()); wrapper.like(StringUtils.isNotBlank(request.getRoomNumber()), "room_number", request.getRoomNumber()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()),//apply方法传入参数名不能为空 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java index 7dda5c3..046e4aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java @@ -113,11 +113,26 @@ @Override public ReturnDTO updateOriginal(BusinessOriginalRecord businessOriginalRecord) { - return null; + if (this.baseMapper.insert(businessOriginalRecord) > 0) { + //加入技术文件绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getFileList()) && businessOriginalRecord.getFileList().size() > 0) { + originalRecordFileRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getFileList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getEquipmentInfoList()) && businessOriginalRecord.getEquipmentInfoList().size() > 0) { + originalRecordEquipmentRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - @Transactional + /** + * @param businessOriginalRecord + * @return + */ @Override + @Transactional public ReturnDTO addOriginal(BusinessOriginalRecord businessOriginalRecord) { initBusinessEnvironmentRecord(businessOriginalRecord); if (baseMapper.insert(businessOriginalRecord) > 0) { @@ -136,11 +151,14 @@ @Override public void originExport(OriginRecordRequest request, HttpServletResponse response) { - - List originExportList = this.baseMapper.originExportList(request); try { + List originExportList = this.baseMapper.originExportList(request); + for (OriginRecordResponse originRecordResponse : originExportList) { + //字典值转换 + DictCodeUtils.convertDictCodeToName(originRecordResponse); + } iBaseExportService.exportExcel(response, OriginRecordResponse.class, originExportList, ExportEnum.ORIGIN_DATA.getSheetName()); - } catch (IOException e) { + } catch (Exception e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index ac5918e..59587af 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -1,20 +1,84 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MonitorCodeEnum; +import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 业务管理-证书报告 服务实现类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Service public class BusinessCertificateReportServiceImpl extends ServiceImpl implements IBusinessCertificateReportService { + + @Autowired + private IBusinessOriginalRecordService originalRecordService; + /** + * 保存证书报告信息 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport) { + + initCertificateReport(certificateReport); + if(this.baseMapper.insert(certificateReport)>0) + return ReturnUtil.success(); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 证书报告详情 + * @param id + * @return + */ + @Override + public BusinessCertificateReport certificateReportDetail(Long id) { + BusinessCertificateReport certificateReport = this.baseMapper.selectById(id); + if(certificateReport.getOriginalRecordId()!=null){ + try { + certificateReport.setBusinessOriginalRecord(originalRecordService.originalDetail(certificateReport.getOriginalRecordId())); + } catch (Exception e) { + e.printStackTrace(); + } + } + return certificateReport; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + + Long maxNo = this.baseMapper.selectMaxCode(); + //生成证书编号 + String certificateReportNo =NumberGeneratorUtil.getContactNo( + MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"),maxNo); + AuthUser authUser = ShiroKit.getUser(); + certificateReport.setCreateUser(authUser.getId()); + certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setCertificateReportCode(certificateReportNo); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java index 219919f..c4ed5f6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.mapper.business.BusinessEnvironmentRecordMapper; import com.casic.missiles.mapper.business.EnvironmentListResponseMapper; import com.casic.missiles.model.business.BusinessEnvironmentRecord; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessEnvironmentRecordService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -94,7 +95,8 @@ QueryWrapper wrapper = listParamWrapper(request); List environmentListResponseList = this.environmentListResponseMapper.selectList(wrapper); try { - iBaseExportService.exportExcel(response, EnvironmentListResponse.class, environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); + iBaseExportService.exportExcel(response, EnvironmentListResponse.class, + environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); } catch (IOException e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } @@ -114,6 +116,9 @@ private QueryWrapper listParamWrapper(EnvironmentListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); + if(!CollectionUtils.isEmpty(request.getIds()) && request.getIds().size()!=0){ + wrapper.in("id", request.getIds()); + } wrapper.like(StringUtils.isNotBlank(request.getEnvironmentCode()), "environment_code", request.getEnvironmentCode()); wrapper.like(StringUtils.isNotBlank(request.getRoomNumber()), "room_number", request.getRoomNumber()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()),//apply方法传入参数名不能为空 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java index 7dda5c3..046e4aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java @@ -113,11 +113,26 @@ @Override public ReturnDTO updateOriginal(BusinessOriginalRecord businessOriginalRecord) { - return null; + if (this.baseMapper.insert(businessOriginalRecord) > 0) { + //加入技术文件绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getFileList()) && businessOriginalRecord.getFileList().size() > 0) { + originalRecordFileRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getFileList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getEquipmentInfoList()) && businessOriginalRecord.getEquipmentInfoList().size() > 0) { + originalRecordEquipmentRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - @Transactional + /** + * @param businessOriginalRecord + * @return + */ @Override + @Transactional public ReturnDTO addOriginal(BusinessOriginalRecord businessOriginalRecord) { initBusinessEnvironmentRecord(businessOriginalRecord); if (baseMapper.insert(businessOriginalRecord) > 0) { @@ -136,11 +151,14 @@ @Override public void originExport(OriginRecordRequest request, HttpServletResponse response) { - - List originExportList = this.baseMapper.originExportList(request); try { + List originExportList = this.baseMapper.originExportList(request); + for (OriginRecordResponse originRecordResponse : originExportList) { + //字典值转换 + DictCodeUtils.convertDictCodeToName(originRecordResponse); + } iBaseExportService.exportExcel(response, OriginRecordResponse.class, originExportList, ExportEnum.ORIGIN_DATA.getSheetName()); - } catch (IOException e) { + } catch (Exception e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java index df07d39..6c31948 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java @@ -1,7 +1,11 @@ package com.casic.missiles.service.Impl.meter; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.util.DateUtils; +import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -9,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.meter.MeterCertificateDto; import com.casic.missiles.dto.ReturnDTO; @@ -22,13 +28,19 @@ import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.mapper.sys.UserInfoMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; import com.casic.missiles.model.meter.MeterStaff; +import com.casic.missiles.model.system.UserInfo; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateExpireMessageService; import com.casic.missiles.service.meter.MeterCertificateService; +import com.casic.missiles.service.workbench.IWorkbenchRemindMessageService; import com.casic.missiles.utils.ExportUtils; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.WebSocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -36,10 +48,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -56,16 +65,16 @@ private MeterStaffMapper meterStaffMapper; @Resource - private MeterCertificateService meterCertificateService; + private WebSocket webSocket; @Resource - private MeterCertificateExpireMessageMapper messageMapper; + private WorkbenchRemindMessageMapper messageMapper; @Resource private AbstractDictService dictService; @Resource - private MeterCertificateExpireMessageService messageService; + private IWorkbenchRemindMessageService messageService; @Resource private MinioUtil minioUtil; @@ -73,6 +82,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +97,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +115,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +144,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Page queryMessageList(Page page, MeterStaffRequest request) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("staff_no",request.getStaffNo()); + public Page queryMessageList(Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("remind_id",user.getId()); return messageMapper.selectPage(page,wrapper); } @Override public ReturnDTO readMessage(IdDTO idDto) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("status", 1); if(messageMapper.update(null, updateWrapper)>0){ return ReturnUtil.success(); @@ -157,42 +172,51 @@ public ReturnDTO expirationReminder(IdDTO idDto) { MeterCertificate meterCertificate = meterCertificateMapper.selectById(idDto.getId()); MeterStaff meterStaff = meterStaffMapper.selectById(meterCertificate.getStaffId()); - MeterCertificateExpireMessage message = new MeterCertificateExpireMessage(null,meterCertificate.getStaffId(),String.valueOf(meterCertificate.getId()),meterStaff.getAccount(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),meterCertificate.getValidDate(),0); - if(messageMapper.insert(message)>0){ - // todo 新增到消息列表后向用户推送消息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",meterStaff.getAccount()); + UserInfo userInfo = userInfoMapper.selectOne(wrapper); + if(ObjectUtil.isEmpty(userInfo)){ + throw new BusinessException(BusinessExceptionEnum.NOT_FOUND_USER_INFO); + } + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),idDto.getId(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override public void regularExpirationReminder() { - List messageList = new ArrayList<>(); + List messageList = new ArrayList<>(); // 获取即将过期的证书列表(过期时间距离过期还差30天) - List list = meterCertificateMapper.queryReminderList(); + List list = meterCertificateMapper.queryReminderList(); if(null != list && list.size()!=0){ - List idList = new ArrayList<>(); - list.forEach(bean -> { - idList.add(bean.getCertificateId()); - }); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("certificate_id"); - wrapper.in("certificate_id", idList); + List idList = new ArrayList<>(); + for (WorkbenchRemindMessage remindMessage : list) { + idList.add(remindMessage.getBusinessId()); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("business_id"); + wrapper.in("business_id", idList); // 通过证书id查询消息表中已经手动发送过得消息 List messageIds = messageMapper.selectObjs(wrapper); // 将证书列表通过证书id分组 - Map> collect = list.parallelStream().collect(Collectors.groupingBy(MeterCertificateExpireMessage::getCertificateId)); - messageIds.forEach(id -> { - // 移除已经发送过消息的证书信息 - collect.remove(id.toString()); - }); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); collect.keySet().forEach(dtoList -> { // 讲需要发送消息的证书整合 messageList.addAll(collect.get(dtoList)); }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); - } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +270,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index ac5918e..59587af 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -1,20 +1,84 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MonitorCodeEnum; +import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 业务管理-证书报告 服务实现类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Service public class BusinessCertificateReportServiceImpl extends ServiceImpl implements IBusinessCertificateReportService { + + @Autowired + private IBusinessOriginalRecordService originalRecordService; + /** + * 保存证书报告信息 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport) { + + initCertificateReport(certificateReport); + if(this.baseMapper.insert(certificateReport)>0) + return ReturnUtil.success(); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 证书报告详情 + * @param id + * @return + */ + @Override + public BusinessCertificateReport certificateReportDetail(Long id) { + BusinessCertificateReport certificateReport = this.baseMapper.selectById(id); + if(certificateReport.getOriginalRecordId()!=null){ + try { + certificateReport.setBusinessOriginalRecord(originalRecordService.originalDetail(certificateReport.getOriginalRecordId())); + } catch (Exception e) { + e.printStackTrace(); + } + } + return certificateReport; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + + Long maxNo = this.baseMapper.selectMaxCode(); + //生成证书编号 + String certificateReportNo =NumberGeneratorUtil.getContactNo( + MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"),maxNo); + AuthUser authUser = ShiroKit.getUser(); + certificateReport.setCreateUser(authUser.getId()); + certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setCertificateReportCode(certificateReportNo); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java index 219919f..c4ed5f6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.mapper.business.BusinessEnvironmentRecordMapper; import com.casic.missiles.mapper.business.EnvironmentListResponseMapper; import com.casic.missiles.model.business.BusinessEnvironmentRecord; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessEnvironmentRecordService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -94,7 +95,8 @@ QueryWrapper wrapper = listParamWrapper(request); List environmentListResponseList = this.environmentListResponseMapper.selectList(wrapper); try { - iBaseExportService.exportExcel(response, EnvironmentListResponse.class, environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); + iBaseExportService.exportExcel(response, EnvironmentListResponse.class, + environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); } catch (IOException e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } @@ -114,6 +116,9 @@ private QueryWrapper listParamWrapper(EnvironmentListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); + if(!CollectionUtils.isEmpty(request.getIds()) && request.getIds().size()!=0){ + wrapper.in("id", request.getIds()); + } wrapper.like(StringUtils.isNotBlank(request.getEnvironmentCode()), "environment_code", request.getEnvironmentCode()); wrapper.like(StringUtils.isNotBlank(request.getRoomNumber()), "room_number", request.getRoomNumber()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()),//apply方法传入参数名不能为空 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java index 7dda5c3..046e4aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java @@ -113,11 +113,26 @@ @Override public ReturnDTO updateOriginal(BusinessOriginalRecord businessOriginalRecord) { - return null; + if (this.baseMapper.insert(businessOriginalRecord) > 0) { + //加入技术文件绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getFileList()) && businessOriginalRecord.getFileList().size() > 0) { + originalRecordFileRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getFileList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getEquipmentInfoList()) && businessOriginalRecord.getEquipmentInfoList().size() > 0) { + originalRecordEquipmentRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - @Transactional + /** + * @param businessOriginalRecord + * @return + */ @Override + @Transactional public ReturnDTO addOriginal(BusinessOriginalRecord businessOriginalRecord) { initBusinessEnvironmentRecord(businessOriginalRecord); if (baseMapper.insert(businessOriginalRecord) > 0) { @@ -136,11 +151,14 @@ @Override public void originExport(OriginRecordRequest request, HttpServletResponse response) { - - List originExportList = this.baseMapper.originExportList(request); try { + List originExportList = this.baseMapper.originExportList(request); + for (OriginRecordResponse originRecordResponse : originExportList) { + //字典值转换 + DictCodeUtils.convertDictCodeToName(originRecordResponse); + } iBaseExportService.exportExcel(response, OriginRecordResponse.class, originExportList, ExportEnum.ORIGIN_DATA.getSheetName()); - } catch (IOException e) { + } catch (Exception e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java index df07d39..6c31948 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java @@ -1,7 +1,11 @@ package com.casic.missiles.service.Impl.meter; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.util.DateUtils; +import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -9,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.meter.MeterCertificateDto; import com.casic.missiles.dto.ReturnDTO; @@ -22,13 +28,19 @@ import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.mapper.sys.UserInfoMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; import com.casic.missiles.model.meter.MeterStaff; +import com.casic.missiles.model.system.UserInfo; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateExpireMessageService; import com.casic.missiles.service.meter.MeterCertificateService; +import com.casic.missiles.service.workbench.IWorkbenchRemindMessageService; import com.casic.missiles.utils.ExportUtils; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.WebSocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -36,10 +48,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -56,16 +65,16 @@ private MeterStaffMapper meterStaffMapper; @Resource - private MeterCertificateService meterCertificateService; + private WebSocket webSocket; @Resource - private MeterCertificateExpireMessageMapper messageMapper; + private WorkbenchRemindMessageMapper messageMapper; @Resource private AbstractDictService dictService; @Resource - private MeterCertificateExpireMessageService messageService; + private IWorkbenchRemindMessageService messageService; @Resource private MinioUtil minioUtil; @@ -73,6 +82,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +97,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +115,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +144,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Page queryMessageList(Page page, MeterStaffRequest request) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("staff_no",request.getStaffNo()); + public Page queryMessageList(Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("remind_id",user.getId()); return messageMapper.selectPage(page,wrapper); } @Override public ReturnDTO readMessage(IdDTO idDto) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("status", 1); if(messageMapper.update(null, updateWrapper)>0){ return ReturnUtil.success(); @@ -157,42 +172,51 @@ public ReturnDTO expirationReminder(IdDTO idDto) { MeterCertificate meterCertificate = meterCertificateMapper.selectById(idDto.getId()); MeterStaff meterStaff = meterStaffMapper.selectById(meterCertificate.getStaffId()); - MeterCertificateExpireMessage message = new MeterCertificateExpireMessage(null,meterCertificate.getStaffId(),String.valueOf(meterCertificate.getId()),meterStaff.getAccount(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),meterCertificate.getValidDate(),0); - if(messageMapper.insert(message)>0){ - // todo 新增到消息列表后向用户推送消息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",meterStaff.getAccount()); + UserInfo userInfo = userInfoMapper.selectOne(wrapper); + if(ObjectUtil.isEmpty(userInfo)){ + throw new BusinessException(BusinessExceptionEnum.NOT_FOUND_USER_INFO); + } + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),idDto.getId(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override public void regularExpirationReminder() { - List messageList = new ArrayList<>(); + List messageList = new ArrayList<>(); // 获取即将过期的证书列表(过期时间距离过期还差30天) - List list = meterCertificateMapper.queryReminderList(); + List list = meterCertificateMapper.queryReminderList(); if(null != list && list.size()!=0){ - List idList = new ArrayList<>(); - list.forEach(bean -> { - idList.add(bean.getCertificateId()); - }); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("certificate_id"); - wrapper.in("certificate_id", idList); + List idList = new ArrayList<>(); + for (WorkbenchRemindMessage remindMessage : list) { + idList.add(remindMessage.getBusinessId()); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("business_id"); + wrapper.in("business_id", idList); // 通过证书id查询消息表中已经手动发送过得消息 List messageIds = messageMapper.selectObjs(wrapper); // 将证书列表通过证书id分组 - Map> collect = list.parallelStream().collect(Collectors.groupingBy(MeterCertificateExpireMessage::getCertificateId)); - messageIds.forEach(id -> { - // 移除已经发送过消息的证书信息 - collect.remove(id.toString()); - }); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); collect.keySet().forEach(dtoList -> { // 讲需要发送消息的证书整合 messageList.addAll(collect.get(dtoList)); }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); - } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +270,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java index c1b40a2..a95919c 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java @@ -27,6 +27,7 @@ import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -71,10 +72,11 @@ if(meterPriceMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override + @Transactional public ReturnDTO addMeterPrice(MeterPrice meterPrice) { MeterPriceCategory priceCategory = new MeterPriceCategory(null,meterPrice.getCheckType(),meterPrice.getCategoryName()); int categoryFlag = meterPriceCategoryMapper.insert(priceCategory); @@ -103,6 +105,7 @@ } @Override + @Transactional public ReturnDTO updatePriceInfo(MeterPrice meterPrice) { int updateFlag = meterPriceMapper.updateById(meterPrice); MeterPriceCategory priceCategory = new MeterPriceCategory(Long.parseLong(meterPrice.getPriceType()),meterPrice.getCheckType(),meterPrice.getCategoryName()); @@ -112,7 +115,7 @@ if(categoryFlag>0 && itemFlag>0 && updateFlag>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("价格信息编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index ac5918e..59587af 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -1,20 +1,84 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MonitorCodeEnum; +import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 业务管理-证书报告 服务实现类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Service public class BusinessCertificateReportServiceImpl extends ServiceImpl implements IBusinessCertificateReportService { + + @Autowired + private IBusinessOriginalRecordService originalRecordService; + /** + * 保存证书报告信息 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport) { + + initCertificateReport(certificateReport); + if(this.baseMapper.insert(certificateReport)>0) + return ReturnUtil.success(); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 证书报告详情 + * @param id + * @return + */ + @Override + public BusinessCertificateReport certificateReportDetail(Long id) { + BusinessCertificateReport certificateReport = this.baseMapper.selectById(id); + if(certificateReport.getOriginalRecordId()!=null){ + try { + certificateReport.setBusinessOriginalRecord(originalRecordService.originalDetail(certificateReport.getOriginalRecordId())); + } catch (Exception e) { + e.printStackTrace(); + } + } + return certificateReport; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + + Long maxNo = this.baseMapper.selectMaxCode(); + //生成证书编号 + String certificateReportNo =NumberGeneratorUtil.getContactNo( + MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"),maxNo); + AuthUser authUser = ShiroKit.getUser(); + certificateReport.setCreateUser(authUser.getId()); + certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setCertificateReportCode(certificateReportNo); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java index 219919f..c4ed5f6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.mapper.business.BusinessEnvironmentRecordMapper; import com.casic.missiles.mapper.business.EnvironmentListResponseMapper; import com.casic.missiles.model.business.BusinessEnvironmentRecord; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessEnvironmentRecordService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -94,7 +95,8 @@ QueryWrapper wrapper = listParamWrapper(request); List environmentListResponseList = this.environmentListResponseMapper.selectList(wrapper); try { - iBaseExportService.exportExcel(response, EnvironmentListResponse.class, environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); + iBaseExportService.exportExcel(response, EnvironmentListResponse.class, + environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); } catch (IOException e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } @@ -114,6 +116,9 @@ private QueryWrapper listParamWrapper(EnvironmentListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); + if(!CollectionUtils.isEmpty(request.getIds()) && request.getIds().size()!=0){ + wrapper.in("id", request.getIds()); + } wrapper.like(StringUtils.isNotBlank(request.getEnvironmentCode()), "environment_code", request.getEnvironmentCode()); wrapper.like(StringUtils.isNotBlank(request.getRoomNumber()), "room_number", request.getRoomNumber()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()),//apply方法传入参数名不能为空 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java index 7dda5c3..046e4aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java @@ -113,11 +113,26 @@ @Override public ReturnDTO updateOriginal(BusinessOriginalRecord businessOriginalRecord) { - return null; + if (this.baseMapper.insert(businessOriginalRecord) > 0) { + //加入技术文件绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getFileList()) && businessOriginalRecord.getFileList().size() > 0) { + originalRecordFileRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getFileList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getEquipmentInfoList()) && businessOriginalRecord.getEquipmentInfoList().size() > 0) { + originalRecordEquipmentRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - @Transactional + /** + * @param businessOriginalRecord + * @return + */ @Override + @Transactional public ReturnDTO addOriginal(BusinessOriginalRecord businessOriginalRecord) { initBusinessEnvironmentRecord(businessOriginalRecord); if (baseMapper.insert(businessOriginalRecord) > 0) { @@ -136,11 +151,14 @@ @Override public void originExport(OriginRecordRequest request, HttpServletResponse response) { - - List originExportList = this.baseMapper.originExportList(request); try { + List originExportList = this.baseMapper.originExportList(request); + for (OriginRecordResponse originRecordResponse : originExportList) { + //字典值转换 + DictCodeUtils.convertDictCodeToName(originRecordResponse); + } iBaseExportService.exportExcel(response, OriginRecordResponse.class, originExportList, ExportEnum.ORIGIN_DATA.getSheetName()); - } catch (IOException e) { + } catch (Exception e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java index df07d39..6c31948 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java @@ -1,7 +1,11 @@ package com.casic.missiles.service.Impl.meter; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.util.DateUtils; +import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -9,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.meter.MeterCertificateDto; import com.casic.missiles.dto.ReturnDTO; @@ -22,13 +28,19 @@ import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.mapper.sys.UserInfoMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; import com.casic.missiles.model.meter.MeterStaff; +import com.casic.missiles.model.system.UserInfo; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateExpireMessageService; import com.casic.missiles.service.meter.MeterCertificateService; +import com.casic.missiles.service.workbench.IWorkbenchRemindMessageService; import com.casic.missiles.utils.ExportUtils; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.WebSocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -36,10 +48,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -56,16 +65,16 @@ private MeterStaffMapper meterStaffMapper; @Resource - private MeterCertificateService meterCertificateService; + private WebSocket webSocket; @Resource - private MeterCertificateExpireMessageMapper messageMapper; + private WorkbenchRemindMessageMapper messageMapper; @Resource private AbstractDictService dictService; @Resource - private MeterCertificateExpireMessageService messageService; + private IWorkbenchRemindMessageService messageService; @Resource private MinioUtil minioUtil; @@ -73,6 +82,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +97,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +115,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +144,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Page queryMessageList(Page page, MeterStaffRequest request) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("staff_no",request.getStaffNo()); + public Page queryMessageList(Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("remind_id",user.getId()); return messageMapper.selectPage(page,wrapper); } @Override public ReturnDTO readMessage(IdDTO idDto) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("status", 1); if(messageMapper.update(null, updateWrapper)>0){ return ReturnUtil.success(); @@ -157,42 +172,51 @@ public ReturnDTO expirationReminder(IdDTO idDto) { MeterCertificate meterCertificate = meterCertificateMapper.selectById(idDto.getId()); MeterStaff meterStaff = meterStaffMapper.selectById(meterCertificate.getStaffId()); - MeterCertificateExpireMessage message = new MeterCertificateExpireMessage(null,meterCertificate.getStaffId(),String.valueOf(meterCertificate.getId()),meterStaff.getAccount(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),meterCertificate.getValidDate(),0); - if(messageMapper.insert(message)>0){ - // todo 新增到消息列表后向用户推送消息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",meterStaff.getAccount()); + UserInfo userInfo = userInfoMapper.selectOne(wrapper); + if(ObjectUtil.isEmpty(userInfo)){ + throw new BusinessException(BusinessExceptionEnum.NOT_FOUND_USER_INFO); + } + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),idDto.getId(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override public void regularExpirationReminder() { - List messageList = new ArrayList<>(); + List messageList = new ArrayList<>(); // 获取即将过期的证书列表(过期时间距离过期还差30天) - List list = meterCertificateMapper.queryReminderList(); + List list = meterCertificateMapper.queryReminderList(); if(null != list && list.size()!=0){ - List idList = new ArrayList<>(); - list.forEach(bean -> { - idList.add(bean.getCertificateId()); - }); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("certificate_id"); - wrapper.in("certificate_id", idList); + List idList = new ArrayList<>(); + for (WorkbenchRemindMessage remindMessage : list) { + idList.add(remindMessage.getBusinessId()); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("business_id"); + wrapper.in("business_id", idList); // 通过证书id查询消息表中已经手动发送过得消息 List messageIds = messageMapper.selectObjs(wrapper); // 将证书列表通过证书id分组 - Map> collect = list.parallelStream().collect(Collectors.groupingBy(MeterCertificateExpireMessage::getCertificateId)); - messageIds.forEach(id -> { - // 移除已经发送过消息的证书信息 - collect.remove(id.toString()); - }); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); collect.keySet().forEach(dtoList -> { // 讲需要发送消息的证书整合 messageList.addAll(collect.get(dtoList)); }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); - } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +270,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java index c1b40a2..a95919c 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java @@ -27,6 +27,7 @@ import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -71,10 +72,11 @@ if(meterPriceMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override + @Transactional public ReturnDTO addMeterPrice(MeterPrice meterPrice) { MeterPriceCategory priceCategory = new MeterPriceCategory(null,meterPrice.getCheckType(),meterPrice.getCategoryName()); int categoryFlag = meterPriceCategoryMapper.insert(priceCategory); @@ -103,6 +105,7 @@ } @Override + @Transactional public ReturnDTO updatePriceInfo(MeterPrice meterPrice) { int updateFlag = meterPriceMapper.updateById(meterPrice); MeterPriceCategory priceCategory = new MeterPriceCategory(Long.parseLong(meterPrice.getPriceType()),meterPrice.getCheckType(),meterPrice.getCategoryName()); @@ -112,7 +115,7 @@ if(categoryFlag>0 && itemFlag>0 && updateFlag>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("价格信息编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java index 60f4a31..49852e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java @@ -34,6 +34,7 @@ import com.casic.missiles.utils.NumberGeneratorUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -106,7 +107,7 @@ if(meterStaffMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -123,6 +124,7 @@ } @Override + @Transactional public ReturnDTO addStaffInfo(MeterStaff meterStaff) { QueryWrapper staffWrapper = new QueryWrapper<>(); staffWrapper.eq("account",meterStaff.getAccount()); @@ -142,7 +144,7 @@ meterCertificateService.saveBatch(meterStaff.getCertificateList()); return ReturnUtil.success(); } - return ReturnUtil.failed("人员信息新增失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -167,25 +169,20 @@ } @Override + @Transactional public ReturnDTO updateStaffInfo(MeterStaff meterStaff) { int updateFlag = meterStaffMapper.updateById(meterStaff); if(updateFlag>0){ - List ids = new ArrayList<>(); - List equipmentList = new ArrayList<>(); - for (MeterCertificate certificate : meterStaff.getCertificateList()) { - if(null != certificate.getIsDel() && certificate.getIsDel() == 1){ - ids.add(certificate.getId()); - equipmentList.add(certificate); - } - } - meterCertificateMapper.deleteBatchIds(ids); - meterStaff.getCertificateList().removeAll(equipmentList); - boolean saveOrUpdateFlag = meterCertificateService.saveOrUpdateBatch(meterStaff.getCertificateList()); - if(saveOrUpdateFlag){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("staff_id",meterStaff.getId()); + meterStaff.getCertificateList().forEach(bean->{ + bean.setStaffId(String.valueOf(meterStaff.getId())); + }); + if(meterCertificateService.remove(wrapper) && meterCertificateService.saveBatch(meterStaff.getCertificateList())){ return ReturnUtil.success(); - }else{ - return ReturnUtil.failed("人员信息编辑失败"); - } } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index ac5918e..59587af 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -1,20 +1,84 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MonitorCodeEnum; +import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 业务管理-证书报告 服务实现类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Service public class BusinessCertificateReportServiceImpl extends ServiceImpl implements IBusinessCertificateReportService { + + @Autowired + private IBusinessOriginalRecordService originalRecordService; + /** + * 保存证书报告信息 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport) { + + initCertificateReport(certificateReport); + if(this.baseMapper.insert(certificateReport)>0) + return ReturnUtil.success(); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 证书报告详情 + * @param id + * @return + */ + @Override + public BusinessCertificateReport certificateReportDetail(Long id) { + BusinessCertificateReport certificateReport = this.baseMapper.selectById(id); + if(certificateReport.getOriginalRecordId()!=null){ + try { + certificateReport.setBusinessOriginalRecord(originalRecordService.originalDetail(certificateReport.getOriginalRecordId())); + } catch (Exception e) { + e.printStackTrace(); + } + } + return certificateReport; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + + Long maxNo = this.baseMapper.selectMaxCode(); + //生成证书编号 + String certificateReportNo =NumberGeneratorUtil.getContactNo( + MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"),maxNo); + AuthUser authUser = ShiroKit.getUser(); + certificateReport.setCreateUser(authUser.getId()); + certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setCertificateReportCode(certificateReportNo); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java index 219919f..c4ed5f6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.mapper.business.BusinessEnvironmentRecordMapper; import com.casic.missiles.mapper.business.EnvironmentListResponseMapper; import com.casic.missiles.model.business.BusinessEnvironmentRecord; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessEnvironmentRecordService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -94,7 +95,8 @@ QueryWrapper wrapper = listParamWrapper(request); List environmentListResponseList = this.environmentListResponseMapper.selectList(wrapper); try { - iBaseExportService.exportExcel(response, EnvironmentListResponse.class, environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); + iBaseExportService.exportExcel(response, EnvironmentListResponse.class, + environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); } catch (IOException e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } @@ -114,6 +116,9 @@ private QueryWrapper listParamWrapper(EnvironmentListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); + if(!CollectionUtils.isEmpty(request.getIds()) && request.getIds().size()!=0){ + wrapper.in("id", request.getIds()); + } wrapper.like(StringUtils.isNotBlank(request.getEnvironmentCode()), "environment_code", request.getEnvironmentCode()); wrapper.like(StringUtils.isNotBlank(request.getRoomNumber()), "room_number", request.getRoomNumber()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()),//apply方法传入参数名不能为空 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java index 7dda5c3..046e4aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java @@ -113,11 +113,26 @@ @Override public ReturnDTO updateOriginal(BusinessOriginalRecord businessOriginalRecord) { - return null; + if (this.baseMapper.insert(businessOriginalRecord) > 0) { + //加入技术文件绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getFileList()) && businessOriginalRecord.getFileList().size() > 0) { + originalRecordFileRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getFileList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getEquipmentInfoList()) && businessOriginalRecord.getEquipmentInfoList().size() > 0) { + originalRecordEquipmentRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - @Transactional + /** + * @param businessOriginalRecord + * @return + */ @Override + @Transactional public ReturnDTO addOriginal(BusinessOriginalRecord businessOriginalRecord) { initBusinessEnvironmentRecord(businessOriginalRecord); if (baseMapper.insert(businessOriginalRecord) > 0) { @@ -136,11 +151,14 @@ @Override public void originExport(OriginRecordRequest request, HttpServletResponse response) { - - List originExportList = this.baseMapper.originExportList(request); try { + List originExportList = this.baseMapper.originExportList(request); + for (OriginRecordResponse originRecordResponse : originExportList) { + //字典值转换 + DictCodeUtils.convertDictCodeToName(originRecordResponse); + } iBaseExportService.exportExcel(response, OriginRecordResponse.class, originExportList, ExportEnum.ORIGIN_DATA.getSheetName()); - } catch (IOException e) { + } catch (Exception e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java index df07d39..6c31948 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java @@ -1,7 +1,11 @@ package com.casic.missiles.service.Impl.meter; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.util.DateUtils; +import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -9,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.meter.MeterCertificateDto; import com.casic.missiles.dto.ReturnDTO; @@ -22,13 +28,19 @@ import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.mapper.sys.UserInfoMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; import com.casic.missiles.model.meter.MeterStaff; +import com.casic.missiles.model.system.UserInfo; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateExpireMessageService; import com.casic.missiles.service.meter.MeterCertificateService; +import com.casic.missiles.service.workbench.IWorkbenchRemindMessageService; import com.casic.missiles.utils.ExportUtils; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.WebSocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -36,10 +48,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -56,16 +65,16 @@ private MeterStaffMapper meterStaffMapper; @Resource - private MeterCertificateService meterCertificateService; + private WebSocket webSocket; @Resource - private MeterCertificateExpireMessageMapper messageMapper; + private WorkbenchRemindMessageMapper messageMapper; @Resource private AbstractDictService dictService; @Resource - private MeterCertificateExpireMessageService messageService; + private IWorkbenchRemindMessageService messageService; @Resource private MinioUtil minioUtil; @@ -73,6 +82,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +97,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +115,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +144,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Page queryMessageList(Page page, MeterStaffRequest request) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("staff_no",request.getStaffNo()); + public Page queryMessageList(Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("remind_id",user.getId()); return messageMapper.selectPage(page,wrapper); } @Override public ReturnDTO readMessage(IdDTO idDto) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("status", 1); if(messageMapper.update(null, updateWrapper)>0){ return ReturnUtil.success(); @@ -157,42 +172,51 @@ public ReturnDTO expirationReminder(IdDTO idDto) { MeterCertificate meterCertificate = meterCertificateMapper.selectById(idDto.getId()); MeterStaff meterStaff = meterStaffMapper.selectById(meterCertificate.getStaffId()); - MeterCertificateExpireMessage message = new MeterCertificateExpireMessage(null,meterCertificate.getStaffId(),String.valueOf(meterCertificate.getId()),meterStaff.getAccount(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),meterCertificate.getValidDate(),0); - if(messageMapper.insert(message)>0){ - // todo 新增到消息列表后向用户推送消息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",meterStaff.getAccount()); + UserInfo userInfo = userInfoMapper.selectOne(wrapper); + if(ObjectUtil.isEmpty(userInfo)){ + throw new BusinessException(BusinessExceptionEnum.NOT_FOUND_USER_INFO); + } + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),idDto.getId(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override public void regularExpirationReminder() { - List messageList = new ArrayList<>(); + List messageList = new ArrayList<>(); // 获取即将过期的证书列表(过期时间距离过期还差30天) - List list = meterCertificateMapper.queryReminderList(); + List list = meterCertificateMapper.queryReminderList(); if(null != list && list.size()!=0){ - List idList = new ArrayList<>(); - list.forEach(bean -> { - idList.add(bean.getCertificateId()); - }); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("certificate_id"); - wrapper.in("certificate_id", idList); + List idList = new ArrayList<>(); + for (WorkbenchRemindMessage remindMessage : list) { + idList.add(remindMessage.getBusinessId()); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("business_id"); + wrapper.in("business_id", idList); // 通过证书id查询消息表中已经手动发送过得消息 List messageIds = messageMapper.selectObjs(wrapper); // 将证书列表通过证书id分组 - Map> collect = list.parallelStream().collect(Collectors.groupingBy(MeterCertificateExpireMessage::getCertificateId)); - messageIds.forEach(id -> { - // 移除已经发送过消息的证书信息 - collect.remove(id.toString()); - }); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); collect.keySet().forEach(dtoList -> { // 讲需要发送消息的证书整合 messageList.addAll(collect.get(dtoList)); }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); - } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +270,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java index c1b40a2..a95919c 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java @@ -27,6 +27,7 @@ import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -71,10 +72,11 @@ if(meterPriceMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override + @Transactional public ReturnDTO addMeterPrice(MeterPrice meterPrice) { MeterPriceCategory priceCategory = new MeterPriceCategory(null,meterPrice.getCheckType(),meterPrice.getCategoryName()); int categoryFlag = meterPriceCategoryMapper.insert(priceCategory); @@ -103,6 +105,7 @@ } @Override + @Transactional public ReturnDTO updatePriceInfo(MeterPrice meterPrice) { int updateFlag = meterPriceMapper.updateById(meterPrice); MeterPriceCategory priceCategory = new MeterPriceCategory(Long.parseLong(meterPrice.getPriceType()),meterPrice.getCheckType(),meterPrice.getCategoryName()); @@ -112,7 +115,7 @@ if(categoryFlag>0 && itemFlag>0 && updateFlag>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("价格信息编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java index 60f4a31..49852e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java @@ -34,6 +34,7 @@ import com.casic.missiles.utils.NumberGeneratorUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -106,7 +107,7 @@ if(meterStaffMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -123,6 +124,7 @@ } @Override + @Transactional public ReturnDTO addStaffInfo(MeterStaff meterStaff) { QueryWrapper staffWrapper = new QueryWrapper<>(); staffWrapper.eq("account",meterStaff.getAccount()); @@ -142,7 +144,7 @@ meterCertificateService.saveBatch(meterStaff.getCertificateList()); return ReturnUtil.success(); } - return ReturnUtil.failed("人员信息新增失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -167,25 +169,20 @@ } @Override + @Transactional public ReturnDTO updateStaffInfo(MeterStaff meterStaff) { int updateFlag = meterStaffMapper.updateById(meterStaff); if(updateFlag>0){ - List ids = new ArrayList<>(); - List equipmentList = new ArrayList<>(); - for (MeterCertificate certificate : meterStaff.getCertificateList()) { - if(null != certificate.getIsDel() && certificate.getIsDel() == 1){ - ids.add(certificate.getId()); - equipmentList.add(certificate); - } - } - meterCertificateMapper.deleteBatchIds(ids); - meterStaff.getCertificateList().removeAll(equipmentList); - boolean saveOrUpdateFlag = meterCertificateService.saveOrUpdateBatch(meterStaff.getCertificateList()); - if(saveOrUpdateFlag){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("staff_id",meterStaff.getId()); + meterStaff.getCertificateList().forEach(bean->{ + bean.setStaffId(String.valueOf(meterStaff.getId())); + }); + if(meterCertificateService.remove(wrapper) && meterCertificateService.saveBatch(meterStaff.getCertificateList())){ return ReturnUtil.success(); - }else{ - return ReturnUtil.failed("人员信息编辑失败"); - } } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java index d6316d0..e0ed48e 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java @@ -151,14 +151,15 @@ QueryWrapper trainLogWrapper = new QueryWrapper<>(); // 查询考核总人次 Long trainCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setTrainCount(trainCount); - // 查询考核合格人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - Long qualifiedCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setQualifiedCount(qualifiedCount); - result.setQualified(qualifiedCount); - // 考核不合格人次=考核总人次-合格人次 - result.setNotQualified(trainCount-qualifiedCount); + result.setTrainCount(Math.toIntExact(trainCount)); + // 查询考核不合格人次 + trainLogWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + Long notQualified = meterTrainStaffMapper.selectCount(trainLogWrapper); + result.setNotQualified(Math.toIntExact(notQualified)); + // 合格人次=考核总人次-不合格人次 + result.setQualifiedCount(Math.toIntExact(trainCount - notQualified)); + result.setQualified(Math.toIntExact(trainCount - notQualified)); + result.setMeterAdmin(true); }else{ // 当前用户是不是计量部门负责人查询该人员对应的的培训考核信息 QueryWrapper staffWrapper = new QueryWrapper<>(); @@ -167,28 +168,31 @@ MeterStaff meterStaff = meterStaffMapper.selectOne(staffWrapper); if(null == meterStaff){ log.error("该用户不是计量相关人员"); + result.setTrainCount(0); + result.setQualifiedCount(0); + result.setQualified(0); + result.setNotQualified(0); return ReturnUtil.success(result); } QueryWrapper trainLogWrapper = new QueryWrapper<>(); + int trainCount = Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper)); // 查询考核总人次 - result.setTrainCount(meterTrainStaffMapper.selectCount(trainLogWrapper)); - // 查询考核合格总人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - result.setQualifiedCount(meterTrainStaffMapper.selectCount(trainLogWrapper)); - // 查询当前用户对应的考核结果信息 + result.setTrainCount(trainCount); + // 查询考核不合格总人次 + trainLogWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + // 合格总人次=考核总人次-考核不合格总人次 + result.setQualifiedCount(trainCount - Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper))); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("staff_id", meterStaff.getId()); - queryWrapper.select("exam_result as 'result',count(1) AS 'count'") - .groupBy("exam_result"); - List> mapList = meterTrainStaffMapper.selectMaps(queryWrapper); - mapList.forEach(bean->{ - // 将查询到的信息赋值给返回的对象中 - if(bean.get("result").equals(ExamResultEnum.QUALIFIED.getValue())){ - result.setQualified(Long.parseLong(bean.get("count").toString())); - }else{ - result.setNotQualified(Long.parseLong(bean.get("count").toString())); - } - }); + // 查询当前用户考核次数 + int sum = Math.toIntExact(meterTrainStaffMapper.selectCount(queryWrapper)); + // 查询当前用户未合格次数 + queryWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + int notQualified = Math.toIntExact(meterTrainStaffMapper.selectCount(queryWrapper)); + result.setNotQualified(notQualified); + // 当前用户合格=考核总次数-考核不合格次数 + result.setQualified(sum-notQualified); + result.setMeterAdmin(false); } return ReturnUtil.success(result); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index ac5918e..59587af 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -1,20 +1,84 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MonitorCodeEnum; +import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 业务管理-证书报告 服务实现类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Service public class BusinessCertificateReportServiceImpl extends ServiceImpl implements IBusinessCertificateReportService { + + @Autowired + private IBusinessOriginalRecordService originalRecordService; + /** + * 保存证书报告信息 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport) { + + initCertificateReport(certificateReport); + if(this.baseMapper.insert(certificateReport)>0) + return ReturnUtil.success(); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 证书报告详情 + * @param id + * @return + */ + @Override + public BusinessCertificateReport certificateReportDetail(Long id) { + BusinessCertificateReport certificateReport = this.baseMapper.selectById(id); + if(certificateReport.getOriginalRecordId()!=null){ + try { + certificateReport.setBusinessOriginalRecord(originalRecordService.originalDetail(certificateReport.getOriginalRecordId())); + } catch (Exception e) { + e.printStackTrace(); + } + } + return certificateReport; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + + Long maxNo = this.baseMapper.selectMaxCode(); + //生成证书编号 + String certificateReportNo =NumberGeneratorUtil.getContactNo( + MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"),maxNo); + AuthUser authUser = ShiroKit.getUser(); + certificateReport.setCreateUser(authUser.getId()); + certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setCertificateReportCode(certificateReportNo); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java index 219919f..c4ed5f6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.mapper.business.BusinessEnvironmentRecordMapper; import com.casic.missiles.mapper.business.EnvironmentListResponseMapper; import com.casic.missiles.model.business.BusinessEnvironmentRecord; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessEnvironmentRecordService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -94,7 +95,8 @@ QueryWrapper wrapper = listParamWrapper(request); List environmentListResponseList = this.environmentListResponseMapper.selectList(wrapper); try { - iBaseExportService.exportExcel(response, EnvironmentListResponse.class, environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); + iBaseExportService.exportExcel(response, EnvironmentListResponse.class, + environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); } catch (IOException e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } @@ -114,6 +116,9 @@ private QueryWrapper listParamWrapper(EnvironmentListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); + if(!CollectionUtils.isEmpty(request.getIds()) && request.getIds().size()!=0){ + wrapper.in("id", request.getIds()); + } wrapper.like(StringUtils.isNotBlank(request.getEnvironmentCode()), "environment_code", request.getEnvironmentCode()); wrapper.like(StringUtils.isNotBlank(request.getRoomNumber()), "room_number", request.getRoomNumber()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()),//apply方法传入参数名不能为空 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java index 7dda5c3..046e4aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java @@ -113,11 +113,26 @@ @Override public ReturnDTO updateOriginal(BusinessOriginalRecord businessOriginalRecord) { - return null; + if (this.baseMapper.insert(businessOriginalRecord) > 0) { + //加入技术文件绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getFileList()) && businessOriginalRecord.getFileList().size() > 0) { + originalRecordFileRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getFileList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getEquipmentInfoList()) && businessOriginalRecord.getEquipmentInfoList().size() > 0) { + originalRecordEquipmentRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - @Transactional + /** + * @param businessOriginalRecord + * @return + */ @Override + @Transactional public ReturnDTO addOriginal(BusinessOriginalRecord businessOriginalRecord) { initBusinessEnvironmentRecord(businessOriginalRecord); if (baseMapper.insert(businessOriginalRecord) > 0) { @@ -136,11 +151,14 @@ @Override public void originExport(OriginRecordRequest request, HttpServletResponse response) { - - List originExportList = this.baseMapper.originExportList(request); try { + List originExportList = this.baseMapper.originExportList(request); + for (OriginRecordResponse originRecordResponse : originExportList) { + //字典值转换 + DictCodeUtils.convertDictCodeToName(originRecordResponse); + } iBaseExportService.exportExcel(response, OriginRecordResponse.class, originExportList, ExportEnum.ORIGIN_DATA.getSheetName()); - } catch (IOException e) { + } catch (Exception e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java index df07d39..6c31948 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java @@ -1,7 +1,11 @@ package com.casic.missiles.service.Impl.meter; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.util.DateUtils; +import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -9,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.meter.MeterCertificateDto; import com.casic.missiles.dto.ReturnDTO; @@ -22,13 +28,19 @@ import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.mapper.sys.UserInfoMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; import com.casic.missiles.model.meter.MeterStaff; +import com.casic.missiles.model.system.UserInfo; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateExpireMessageService; import com.casic.missiles.service.meter.MeterCertificateService; +import com.casic.missiles.service.workbench.IWorkbenchRemindMessageService; import com.casic.missiles.utils.ExportUtils; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.WebSocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -36,10 +48,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -56,16 +65,16 @@ private MeterStaffMapper meterStaffMapper; @Resource - private MeterCertificateService meterCertificateService; + private WebSocket webSocket; @Resource - private MeterCertificateExpireMessageMapper messageMapper; + private WorkbenchRemindMessageMapper messageMapper; @Resource private AbstractDictService dictService; @Resource - private MeterCertificateExpireMessageService messageService; + private IWorkbenchRemindMessageService messageService; @Resource private MinioUtil minioUtil; @@ -73,6 +82,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +97,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +115,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +144,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Page queryMessageList(Page page, MeterStaffRequest request) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("staff_no",request.getStaffNo()); + public Page queryMessageList(Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("remind_id",user.getId()); return messageMapper.selectPage(page,wrapper); } @Override public ReturnDTO readMessage(IdDTO idDto) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("status", 1); if(messageMapper.update(null, updateWrapper)>0){ return ReturnUtil.success(); @@ -157,42 +172,51 @@ public ReturnDTO expirationReminder(IdDTO idDto) { MeterCertificate meterCertificate = meterCertificateMapper.selectById(idDto.getId()); MeterStaff meterStaff = meterStaffMapper.selectById(meterCertificate.getStaffId()); - MeterCertificateExpireMessage message = new MeterCertificateExpireMessage(null,meterCertificate.getStaffId(),String.valueOf(meterCertificate.getId()),meterStaff.getAccount(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),meterCertificate.getValidDate(),0); - if(messageMapper.insert(message)>0){ - // todo 新增到消息列表后向用户推送消息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",meterStaff.getAccount()); + UserInfo userInfo = userInfoMapper.selectOne(wrapper); + if(ObjectUtil.isEmpty(userInfo)){ + throw new BusinessException(BusinessExceptionEnum.NOT_FOUND_USER_INFO); + } + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),idDto.getId(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override public void regularExpirationReminder() { - List messageList = new ArrayList<>(); + List messageList = new ArrayList<>(); // 获取即将过期的证书列表(过期时间距离过期还差30天) - List list = meterCertificateMapper.queryReminderList(); + List list = meterCertificateMapper.queryReminderList(); if(null != list && list.size()!=0){ - List idList = new ArrayList<>(); - list.forEach(bean -> { - idList.add(bean.getCertificateId()); - }); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("certificate_id"); - wrapper.in("certificate_id", idList); + List idList = new ArrayList<>(); + for (WorkbenchRemindMessage remindMessage : list) { + idList.add(remindMessage.getBusinessId()); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("business_id"); + wrapper.in("business_id", idList); // 通过证书id查询消息表中已经手动发送过得消息 List messageIds = messageMapper.selectObjs(wrapper); // 将证书列表通过证书id分组 - Map> collect = list.parallelStream().collect(Collectors.groupingBy(MeterCertificateExpireMessage::getCertificateId)); - messageIds.forEach(id -> { - // 移除已经发送过消息的证书信息 - collect.remove(id.toString()); - }); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); collect.keySet().forEach(dtoList -> { // 讲需要发送消息的证书整合 messageList.addAll(collect.get(dtoList)); }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); - } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +270,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java index c1b40a2..a95919c 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java @@ -27,6 +27,7 @@ import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -71,10 +72,11 @@ if(meterPriceMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override + @Transactional public ReturnDTO addMeterPrice(MeterPrice meterPrice) { MeterPriceCategory priceCategory = new MeterPriceCategory(null,meterPrice.getCheckType(),meterPrice.getCategoryName()); int categoryFlag = meterPriceCategoryMapper.insert(priceCategory); @@ -103,6 +105,7 @@ } @Override + @Transactional public ReturnDTO updatePriceInfo(MeterPrice meterPrice) { int updateFlag = meterPriceMapper.updateById(meterPrice); MeterPriceCategory priceCategory = new MeterPriceCategory(Long.parseLong(meterPrice.getPriceType()),meterPrice.getCheckType(),meterPrice.getCategoryName()); @@ -112,7 +115,7 @@ if(categoryFlag>0 && itemFlag>0 && updateFlag>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("价格信息编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java index 60f4a31..49852e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java @@ -34,6 +34,7 @@ import com.casic.missiles.utils.NumberGeneratorUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -106,7 +107,7 @@ if(meterStaffMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -123,6 +124,7 @@ } @Override + @Transactional public ReturnDTO addStaffInfo(MeterStaff meterStaff) { QueryWrapper staffWrapper = new QueryWrapper<>(); staffWrapper.eq("account",meterStaff.getAccount()); @@ -142,7 +144,7 @@ meterCertificateService.saveBatch(meterStaff.getCertificateList()); return ReturnUtil.success(); } - return ReturnUtil.failed("人员信息新增失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -167,25 +169,20 @@ } @Override + @Transactional public ReturnDTO updateStaffInfo(MeterStaff meterStaff) { int updateFlag = meterStaffMapper.updateById(meterStaff); if(updateFlag>0){ - List ids = new ArrayList<>(); - List equipmentList = new ArrayList<>(); - for (MeterCertificate certificate : meterStaff.getCertificateList()) { - if(null != certificate.getIsDel() && certificate.getIsDel() == 1){ - ids.add(certificate.getId()); - equipmentList.add(certificate); - } - } - meterCertificateMapper.deleteBatchIds(ids); - meterStaff.getCertificateList().removeAll(equipmentList); - boolean saveOrUpdateFlag = meterCertificateService.saveOrUpdateBatch(meterStaff.getCertificateList()); - if(saveOrUpdateFlag){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("staff_id",meterStaff.getId()); + meterStaff.getCertificateList().forEach(bean->{ + bean.setStaffId(String.valueOf(meterStaff.getId())); + }); + if(meterCertificateService.remove(wrapper) && meterCertificateService.saveBatch(meterStaff.getCertificateList())){ return ReturnUtil.success(); - }else{ - return ReturnUtil.failed("人员信息编辑失败"); - } } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java index d6316d0..e0ed48e 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java @@ -151,14 +151,15 @@ QueryWrapper trainLogWrapper = new QueryWrapper<>(); // 查询考核总人次 Long trainCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setTrainCount(trainCount); - // 查询考核合格人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - Long qualifiedCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setQualifiedCount(qualifiedCount); - result.setQualified(qualifiedCount); - // 考核不合格人次=考核总人次-合格人次 - result.setNotQualified(trainCount-qualifiedCount); + result.setTrainCount(Math.toIntExact(trainCount)); + // 查询考核不合格人次 + trainLogWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + Long notQualified = meterTrainStaffMapper.selectCount(trainLogWrapper); + result.setNotQualified(Math.toIntExact(notQualified)); + // 合格人次=考核总人次-不合格人次 + result.setQualifiedCount(Math.toIntExact(trainCount - notQualified)); + result.setQualified(Math.toIntExact(trainCount - notQualified)); + result.setMeterAdmin(true); }else{ // 当前用户是不是计量部门负责人查询该人员对应的的培训考核信息 QueryWrapper staffWrapper = new QueryWrapper<>(); @@ -167,28 +168,31 @@ MeterStaff meterStaff = meterStaffMapper.selectOne(staffWrapper); if(null == meterStaff){ log.error("该用户不是计量相关人员"); + result.setTrainCount(0); + result.setQualifiedCount(0); + result.setQualified(0); + result.setNotQualified(0); return ReturnUtil.success(result); } QueryWrapper trainLogWrapper = new QueryWrapper<>(); + int trainCount = Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper)); // 查询考核总人次 - result.setTrainCount(meterTrainStaffMapper.selectCount(trainLogWrapper)); - // 查询考核合格总人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - result.setQualifiedCount(meterTrainStaffMapper.selectCount(trainLogWrapper)); - // 查询当前用户对应的考核结果信息 + result.setTrainCount(trainCount); + // 查询考核不合格总人次 + trainLogWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + // 合格总人次=考核总人次-考核不合格总人次 + result.setQualifiedCount(trainCount - Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper))); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("staff_id", meterStaff.getId()); - queryWrapper.select("exam_result as 'result',count(1) AS 'count'") - .groupBy("exam_result"); - List> mapList = meterTrainStaffMapper.selectMaps(queryWrapper); - mapList.forEach(bean->{ - // 将查询到的信息赋值给返回的对象中 - if(bean.get("result").equals(ExamResultEnum.QUALIFIED.getValue())){ - result.setQualified(Long.parseLong(bean.get("count").toString())); - }else{ - result.setNotQualified(Long.parseLong(bean.get("count").toString())); - } - }); + // 查询当前用户考核次数 + int sum = Math.toIntExact(meterTrainStaffMapper.selectCount(queryWrapper)); + // 查询当前用户未合格次数 + queryWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + int notQualified = Math.toIntExact(meterTrainStaffMapper.selectCount(queryWrapper)); + result.setNotQualified(notQualified); + // 当前用户合格=考核总次数-考核不合格次数 + result.setQualified(sum-notQualified); + result.setMeterAdmin(false); } return ReturnUtil.success(result); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificateReportService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificateReportService.java index c881586..33ac64a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificateReportService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificateReportService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service.business; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.model.business.BusinessCertificateReport; /** @@ -8,9 +9,12 @@ * 业务管理-证书报告 服务类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ public interface IBusinessCertificateReportService extends IService { + ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport); + + BusinessCertificateReport certificateReportDetail(Long id); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

* 业务管理-证书报告 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @RestController +@Api(tags = "证书报告模块") @RequestMapping("/business/certificateReport") -public class BusinessCertificateReportController { +public class BusinessCertificateReportController extends ExportController { + @Resource + private IBusinessCertificateReportService certificateReportService; + @Autowired + private IMeterTraceSupplierService traceSupplierService; + @ApiOperation("证书报告列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request))); + } + @ApiOperation("证书报告列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(traceSupplierService.list(request)); + } + + @ApiOperation("证书报告导出") + @PostMapping("/listExport") + @ResponseBody + public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list; + if (!CollectionUtils.isEmpty(request.getIds())) { + list = traceSupplierService.listByIds(request.getIds()); + } else { + list = traceSupplierService.list(request); + } + super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName()); + } + + @ApiOperation("证书报告保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport)); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.draftUpdate(traceSupplier); + } + + @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.submitTraceSupplier(request); + } + + @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") + @PostMapping("/update") + @ResponseBody + public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return traceSupplierService.updateTraceSupplier(traceSupplier); + } + + @ApiOperation("证书报告删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteTraceSupplier(idDTO.getId()); + } + + @ApiOperation("证书报告批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + } + + @ApiOperation("证书报告详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); + } + + @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @PostMapping("/approval/listPage") + @ResponseBody + public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + List responseList = traceSupplierService.approvalListPage(page, request); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ + @ApiOperation("审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.approvalDelete(request); + } + + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return traceSupplierService.failUpdate(traceSupplier); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java index fa5fdee..f126f11 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java @@ -11,7 +11,6 @@ import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.BusinessEnvironmentRecord; import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessOriginalRecordService; @@ -99,10 +98,10 @@ businessOriginalRecordService.originExport(request, response); } - @ApiOperation("获取设备") - @PostMapping("/getEquipments") - public void getEquipments() { -// businessEnvironmentRecordService.environmentExport(request, response); - } +// @ApiOperation("获取设备") +// @PostMapping("/getEquipments") +// public void getEquipments() { +//// businessEnvironmentRecordService.environmentExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java index 15d09ae..b24b193 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java @@ -12,6 +12,7 @@ import com.casic.missiles.listeners.CommonExcelListener; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -107,9 +108,9 @@ @ApiOperation("消息列表查询") @PostMapping("/queryMessageList") @ResponseBody - public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) { - Page page = PageFactory.defaultPage(); - Page list = meterCertificateService.queryMessageList(page,request); + public ReturnDTO queryMessageList() { + Page page = PageFactory.defaultPage(); + Page list = meterCertificateService.queryMessageList(page); return ReturnUtil.success(list); } @@ -133,7 +134,7 @@ return meterCertificateService.expirationReminder(idDto); } - @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0 0 * * ?") private void regularExpirationReminder() { meterCertificateService.regularExpirationReminder(); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 76c1ee7..af43c35 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -38,6 +38,7 @@ DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"), PARAM_INVALID(2500, "参数不合法"), LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"), + NOT_FOUND_USER_INFO(2402, "未找到用户信息"), STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"), STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java index 9152600..c6c36c7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java @@ -7,7 +7,7 @@ public enum ExamResultEnum { QUALIFIED("1", "合格"), - NOT_QUALIFIED("2", "不合格"); + NOT_QUALIFIED("2", "不及格"); private String code; private String value; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java new file mode 100644 index 0000000..f84fb2f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java @@ -0,0 +1,49 @@ +package com.casic.missiles.enums; + +/** + * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀 + * 无线电 + * 光学 + * 时间频率 + * 电磁学 + * 几何量 + * 热学 + * 力学 + * 环境试验 + * 电磁兼容 + * 医疗器械 + * 理化分析 + * 电力系统 + * @Author: zt + * @Date: 2023/2/18 14:40 + */ +public enum MonitorCodeEnum { + WIRELESS("1", "RIM"), + OPTICS("2", "TOE"), + TIME_FREQUENCY("3", "TTF"), + EMC("4", "DMS"), + GEOMETRY("5", "JHL"), + HEAT("6", "RXZ"), + DYNAMICS("7", "LXZ"), + ENVIRONMENT_TEST("8", "TET"), + DCJR("9", "EMC"), + YLQX("10", "DCJ"), + LHFX("11", "LHF"), + DLXT("12", "DLX"); + + private String code; + private String value; + + MonitorCodeEnum(String code, String value) { + this.code = code; + this.value = value; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } +} 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 e63ac86..fc2ae98 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 @@ -55,6 +55,7 @@ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("pro_def_id", processDefinition.getKey()); wrapper.eq("is_del", 0); + // 查出流程定义信息 SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper); String id = execution.getProcessInstanceBusinessKey(); switch (systemFlowForm.getFormId()) { @@ -103,7 +104,6 @@ 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) { @@ -120,6 +120,7 @@ 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); @@ -130,7 +131,6 @@ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - ; // 获取当前申请的信息 EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java index f61a7ff..02cd838 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java @@ -1,5 +1,7 @@ package com.casic.missiles.utils; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -96,4 +98,18 @@ } } + // 向不同用户发送不同消息 + public void sendMessage(List list) { + for (WorkbenchRemindMessage message : list) { + Session session = sessionPool.get(String.valueOf(message.getRemindId())); + if (session != null) { + try { + session.getAsyncRemote().sendText(JSONObject.toJSONString(message)); + } catch (Exception e) { + log.error("【websocket消息】列表消息发送异常"); + e.printStackTrace(); + } + } + } + } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 499ba5c..add1f9e 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import org.apache.ibatis.annotations.Select; /** *

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java index 4c32561..564ad43 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java @@ -8,6 +8,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,7 +19,7 @@ List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest); - List queryReminderList(); + List queryReminderList(); void addCertificateList(@Param("list")List list); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml index 135544e..7aaf965 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -75,17 +75,20 @@ - SELECT - t1.id as certificate_id, - t1.staff_id, - t1.certificate_no, - t1.certificate_name, - t1.valid_date, - t2.account as staff_no + su.ID AS remind_id, + mc.id AS business_id, + mc.certificate_no AS business_code, + mc.certificate_name AS message_content FROM - meter_certificate AS t1 - LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day) + meter_certificate AS mc + LEFT JOIN meter_staff ms ON mc.staff_id = ms.id + LEFT JOIN sys_user su ON ms.account = su.ACCOUNT + WHERE + DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB( + curdate(), + INTERVAL - 30 DAY) diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java index ef67b01..232e467 100644 --- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java +++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java @@ -12,6 +12,9 @@ import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; +/** + * 证书到期提醒 + */ @Slf4j @Component @RequiredArgsConstructor diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java index 5c82398..cf1cde8 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterStaffRequest.java @@ -16,6 +16,12 @@ public class MeterStaffRequest { /** + * 用户id + */ + @ApiModelProperty(value = "用户id", dataType = "String") + private String userId; + + /** * 姓名 */ @ApiModelProperty(value = "人员编号", dataType = "String") diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java index a4b8b88..e54fdc5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/MeterWorkbenchResponse.java @@ -53,26 +53,32 @@ /** * 考核总人次 */ - @ApiModelProperty(value = "考核总人次", dataType = "Long") - private Long trainCount; + @ApiModelProperty(value = "考核总人次", dataType = "Integer") + private Integer trainCount; /** * 合格总人次 */ - @ApiModelProperty(value = "合格总人次", dataType = "Long") - private Long qualifiedCount; + @ApiModelProperty(value = "合格总人次", dataType = "Integer") + private Integer qualifiedCount; /** * 合格 */ - @ApiModelProperty(value = "合格", dataType = "Long") - private Long qualified; + @ApiModelProperty(value = "合格", dataType = "Integer") + private Integer qualified; /** * 不合格 */ - @ApiModelProperty(value = "不合格", dataType = "Long") - private Long notQualified; + @ApiModelProperty(value = "不合格", dataType = "Integer") + private Integer notQualified; + + /** + * 是否是部门负责人 + */ + @ApiModelProperty(value = "是否是部门负责人", dataType = "boolean") + private boolean isMeterAdmin; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -28,111 +29,136 @@ * 证书报告编号 */ @TableField("certificate_report_code") + @ApiModelProperty(value = "证书报告编号", dataType = "String") private String certificateReportCode; /** * 证书报告名称 */ @TableField("certificate_report_name") + @ApiModelProperty(value = "证书报告名称", dataType = "String") private String certificateReportName; /** * 证书类别,多个逗号分割(字典code) */ @TableField("certificate_report_category") + @ApiModelProperty(value = "证书类别,多个逗号分割(字典code)", dataType = "String") private String certificateReportCategory; /** * 委托书id */ @TableField("order_id") + @ApiModelProperty(value = "委托书id", dataType = "Long") private Long orderId; /** * 样品id */ @TableField("sample_id") + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; /** * 检定部门id(可用于获取实验室已完成证书个数) */ @TableField("measure_dept_id") + @ApiModelProperty(value = "检定部门id", dataType = "Long") private Long measureDeptId; /** * 检校专业(字典code) */ @TableField("calibration_major") + @ApiModelProperty(value = "检校专业", dataType = "String") private String calibrationMajor; /** * 出具日期 */ @TableField("issuance_date") + @ApiModelProperty(value = "出具日期", dataType = "String") private String issuanceDate; /** * 证书有效期 */ @TableField("expiration_date") + @ApiModelProperty(value = "证书有效期", dataType = "String") private String expirationDate; /** * 检定结果(字典code) */ @TableField("measure_result") + @ApiModelProperty(value = "检定结果", dataType = "String") private String measureResult; /** * 证书报告模板id */ @TableField("template_id") + @ApiModelProperty(value = "证书报告模板id", dataType = "Long") private Long templateId; /** * 电子签章id(签章表id) */ @TableField("sign_id") + @ApiModelProperty(value = "电子签章id", dataType = "Long") private Long signId; /** * 认可标志专用章id(签章表id) */ @TableField("approval_sign_id") + @ApiModelProperty(value = "认可标志专用章id", dataType = "Long") private Long approvalSignId; /** * 证书报告附件(minio存储文件名) */ @TableField("certificate_report_file") + @ApiModelProperty(value = "证书报告附件", dataType = "String") private String certificateReportFile; /** * 原始记录id */ @TableField("original_record_id") + @ApiModelProperty(value = "原始记录id", dataType = "Long") private Long originalRecordId; /** * 可打印状态(字典code) */ @TableField("print_status") + @ApiModelProperty(value = "可打印状态", dataType = "String") private String printStatus; /** * 打印次数 */ @TableField("print_num") + @ApiModelProperty(value = "打印次数", dataType = "Integer") private Integer printNum; /** + * 检定人员 + */ + @TableField("measure_person_id") + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + /** * 可打印状态(字典code) */ @TableField("approval_status") private String approvalStatus; @TableField("remark") + @ApiModelProperty(value = "备注", dataType = "String") private String remark; @TableField("is_del") @@ -147,4 +173,8 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "原始记录信息", dataType = "Object") + private BusinessOriginalRecord businessOriginalRecord; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java index c918e35..201dc35 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOriginalRecord.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.equipment.EquipmentApplyFile; import com.casic.missiles.model.equipment.EquipmentFixedAssets; @@ -18,7 +20,7 @@ * *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Data @@ -47,9 +49,10 @@ /** * 检校类别(字典code) */ - @TableField("calibration_category") + @TableField("measure_category") @ApiModelProperty(value = "检校类别", dataType = "String") - private String calibrationCategory; + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; /** * 检校时间 @@ -147,4 +150,8 @@ @TableField(exist = false) @ApiModelProperty(value = "技术文件", dataType = "List") private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "检校类别名称", dataType = "String") + private String measureCategoryName; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java index 8f24e19..5e30e4f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchRemindMessage.java @@ -96,5 +96,16 @@ @TableField("update_time") private String updateTime; + public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + this.remindId = remindId; + this.businessId = businessId; + this.businessCode = businessCode; + this.messageContent = messageContent; + this.status = status; + this.createUser = createUser; + this.createUserName = createUserName; + } + public WorkbenchRemindMessage() { + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index ac5918e..59587af 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -1,20 +1,84 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MonitorCodeEnum; +import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOriginalRecord; import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 业务管理-证书报告 服务实现类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ @Service public class BusinessCertificateReportServiceImpl extends ServiceImpl implements IBusinessCertificateReportService { + + @Autowired + private IBusinessOriginalRecordService originalRecordService; + /** + * 保存证书报告信息 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport) { + + initCertificateReport(certificateReport); + if(this.baseMapper.insert(certificateReport)>0) + return ReturnUtil.success(); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 证书报告详情 + * @param id + * @return + */ + @Override + public BusinessCertificateReport certificateReportDetail(Long id) { + BusinessCertificateReport certificateReport = this.baseMapper.selectById(id); + if(certificateReport.getOriginalRecordId()!=null){ + try { + certificateReport.setBusinessOriginalRecord(originalRecordService.originalDetail(certificateReport.getOriginalRecordId())); + } catch (Exception e) { + e.printStackTrace(); + } + } + return certificateReport; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + + Long maxNo = this.baseMapper.selectMaxCode(); + //生成证书编号 + String certificateReportNo =NumberGeneratorUtil.getContactNo( + MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"),maxNo); + AuthUser authUser = ShiroKit.getUser(); + certificateReport.setCreateUser(authUser.getId()); + certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setCertificateReportCode(certificateReportNo); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java index 219919f..c4ed5f6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessEnvironmentRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.mapper.business.BusinessEnvironmentRecordMapper; import com.casic.missiles.mapper.business.EnvironmentListResponseMapper; import com.casic.missiles.model.business.BusinessEnvironmentRecord; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessEnvironmentRecordService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -94,7 +95,8 @@ QueryWrapper wrapper = listParamWrapper(request); List environmentListResponseList = this.environmentListResponseMapper.selectList(wrapper); try { - iBaseExportService.exportExcel(response, EnvironmentListResponse.class, environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); + iBaseExportService.exportExcel(response, EnvironmentListResponse.class, + environmentListResponseList, ExportEnum.ENVIRONMENT_DATA.getSheetName()); } catch (IOException e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } @@ -114,6 +116,9 @@ private QueryWrapper listParamWrapper(EnvironmentListRequest request) { QueryWrapper wrapper = new QueryWrapper<>(); + if(!CollectionUtils.isEmpty(request.getIds()) && request.getIds().size()!=0){ + wrapper.in("id", request.getIds()); + } wrapper.like(StringUtils.isNotBlank(request.getEnvironmentCode()), "environment_code", request.getEnvironmentCode()); wrapper.like(StringUtils.isNotBlank(request.getRoomNumber()), "room_number", request.getRoomNumber()); wrapper.apply(StringUtils.isNotBlank(request.getStartTime()),//apply方法传入参数名不能为空 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java index 7dda5c3..046e4aa 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOriginalRecordServiceImpl.java @@ -113,11 +113,26 @@ @Override public ReturnDTO updateOriginal(BusinessOriginalRecord businessOriginalRecord) { - return null; + if (this.baseMapper.insert(businessOriginalRecord) > 0) { + //加入技术文件绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getFileList()) && businessOriginalRecord.getFileList().size() > 0) { + originalRecordFileRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getFileList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(businessOriginalRecord.getEquipmentInfoList()) && businessOriginalRecord.getEquipmentInfoList().size() > 0) { + originalRecordEquipmentRelationService.saveBatch(businessOriginalRecord.getId(), businessOriginalRecord.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - @Transactional + /** + * @param businessOriginalRecord + * @return + */ @Override + @Transactional public ReturnDTO addOriginal(BusinessOriginalRecord businessOriginalRecord) { initBusinessEnvironmentRecord(businessOriginalRecord); if (baseMapper.insert(businessOriginalRecord) > 0) { @@ -136,11 +151,14 @@ @Override public void originExport(OriginRecordRequest request, HttpServletResponse response) { - - List originExportList = this.baseMapper.originExportList(request); try { + List originExportList = this.baseMapper.originExportList(request); + for (OriginRecordResponse originRecordResponse : originExportList) { + //字典值转换 + DictCodeUtils.convertDictCodeToName(originRecordResponse); + } iBaseExportService.exportExcel(response, OriginRecordResponse.class, originExportList, ExportEnum.ORIGIN_DATA.getSheetName()); - } catch (IOException e) { + } catch (Exception e) { log.error("环境记录单导出出现异常,异常信息为{}", e); } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java index 9edd521..fecbc9a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentApplyServiceImpl.java @@ -304,6 +304,7 @@ // 通过id修改处理结果 updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_BORROWED); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 新增设备使用记录表 this.addEquipmentUseLog(idDto.getId(),EquipmentApplyProcessEnum.BORROWED); return ReturnUtil.success(); } @@ -316,6 +317,7 @@ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("process_result", EquipmentApplyProcessEnum.ALREADY_RETURN); if(equipmentApplyMapper.update(null, updateWrapper)>0){ + // 修改设备使用记录表 this.updateEquipmentUseLog(idDto.getId()); return ReturnUtil.success(); } @@ -329,8 +331,10 @@ updateWrapper.eq("id",request.getId()).set("process_result", request.getProcessResult()); if(equipmentApplyMapper.update(null, updateWrapper)>0){ if(request.getProcessResult().equals(EquipmentApplyProcessEnum.ALREADY_COLLECTING)){ + // 领用新增使用记录 this.addEquipmentUseLog(request.getId(),EquipmentApplyProcessEnum.COLLECT); }else{ + // 退领修改使用记录 this.updateEquipmentUseLog(request.getId()); } return ReturnUtil.success(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java index df07d39..6c31948 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterCertificateServiceImpl.java @@ -1,7 +1,11 @@ package com.casic.missiles.service.Impl.meter; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.util.DateUtils; +import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -9,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.meter.MeterCertificateDto; import com.casic.missiles.dto.ReturnDTO; @@ -22,13 +28,19 @@ import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.mapper.sys.UserInfoMapper; +import com.casic.missiles.mapper.workbench.WorkbenchRemindMessageMapper; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; import com.casic.missiles.model.meter.MeterStaff; +import com.casic.missiles.model.system.UserInfo; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import com.casic.missiles.service.meter.MeterCertificateExpireMessageService; import com.casic.missiles.service.meter.MeterCertificateService; +import com.casic.missiles.service.workbench.IWorkbenchRemindMessageService; import com.casic.missiles.utils.ExportUtils; import com.casic.missiles.utils.MinioUtil; +import com.casic.missiles.utils.WebSocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -36,10 +48,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -56,16 +65,16 @@ private MeterStaffMapper meterStaffMapper; @Resource - private MeterCertificateService meterCertificateService; + private WebSocket webSocket; @Resource - private MeterCertificateExpireMessageMapper messageMapper; + private WorkbenchRemindMessageMapper messageMapper; @Resource private AbstractDictService dictService; @Resource - private MeterCertificateExpireMessageService messageService; + private IWorkbenchRemindMessageService messageService; @Resource private MinioUtil minioUtil; @@ -73,6 +82,9 @@ @Resource private IBaseExportService iBaseExportService; + @Resource + private UserInfoMapper userInfoMapper; + @Override public ReturnDTO queryCertificateList(Page page , MeterStaffRequest meterStaffRequest) { Page meterCertificateDtoPage = meterCertificateMapper.queryCertificateList(page, meterStaffRequest); @@ -85,8 +97,7 @@ if(this.saveBatch(list)){ return ReturnUtil.success(); } - return ReturnUtil.failed("证书新增失败"); - + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -104,7 +115,7 @@ if(meterCertificateMapper.updateById(meterCertificate)>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -133,19 +144,23 @@ if(meterCertificateMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Page queryMessageList(Page page, MeterStaffRequest request) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("staff_no",request.getStaffNo()); + public Page queryMessageList(Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("remind_id",user.getId()); return messageMapper.selectPage(page,wrapper); } @Override public ReturnDTO readMessage(IdDTO idDto) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",idDto.getId()).set("status", 1); if(messageMapper.update(null, updateWrapper)>0){ return ReturnUtil.success(); @@ -157,42 +172,51 @@ public ReturnDTO expirationReminder(IdDTO idDto) { MeterCertificate meterCertificate = meterCertificateMapper.selectById(idDto.getId()); MeterStaff meterStaff = meterStaffMapper.selectById(meterCertificate.getStaffId()); - MeterCertificateExpireMessage message = new MeterCertificateExpireMessage(null,meterCertificate.getStaffId(),String.valueOf(meterCertificate.getId()),meterStaff.getAccount(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),meterCertificate.getValidDate(),0); - if(messageMapper.insert(message)>0){ - // todo 新增到消息列表后向用户推送消息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("account",meterStaff.getAccount()); + UserInfo userInfo = userInfoMapper.selectOne(wrapper); + if(ObjectUtil.isEmpty(userInfo)){ + throw new BusinessException(BusinessExceptionEnum.NOT_FOUND_USER_INFO); + } + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),idDto.getId(),meterCertificate.getCertificateNo(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); + if(messageMapper.insert(remindMessage)>0){ + // 新增到消息列表后向用户推送消息 + webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); return ReturnUtil.success(); } - return ReturnUtil.failed("提醒失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override public void regularExpirationReminder() { - List messageList = new ArrayList<>(); + List messageList = new ArrayList<>(); // 获取即将过期的证书列表(过期时间距离过期还差30天) - List list = meterCertificateMapper.queryReminderList(); + List list = meterCertificateMapper.queryReminderList(); if(null != list && list.size()!=0){ - List idList = new ArrayList<>(); - list.forEach(bean -> { - idList.add(bean.getCertificateId()); - }); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("certificate_id"); - wrapper.in("certificate_id", idList); + List idList = new ArrayList<>(); + for (WorkbenchRemindMessage remindMessage : list) { + idList.add(remindMessage.getBusinessId()); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("business_id"); + wrapper.in("business_id", idList); // 通过证书id查询消息表中已经手动发送过得消息 List messageIds = messageMapper.selectObjs(wrapper); // 将证书列表通过证书id分组 - Map> collect = list.parallelStream().collect(Collectors.groupingBy(MeterCertificateExpireMessage::getCertificateId)); - messageIds.forEach(id -> { - // 移除已经发送过消息的证书信息 - collect.remove(id.toString()); - }); + Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); + // 移除已经发送过消息的证书信息 + messageIds.forEach(collect::remove); collect.keySet().forEach(dtoList -> { // 讲需要发送消息的证书整合 messageList.addAll(collect.get(dtoList)); }); - if(messageList.size()!=0){ - messageService.saveBatch(messageList); - } + log.info("定时任务新增消息表:"+messageList); + messageService.saveBatch(messageList); + webSocket.sendMessage(messageList); } } @Override @@ -246,7 +270,7 @@ meterCertificateDto.setTechnologyJob(dictService.getDictNameByCode(MeterDictEnum.TECHNOLOGY_JOB,meterCertificateDto.getTechnologyJob())); meterCertificateDto.setAdministrationJob(dictService.getDictNameByCode(MeterDictEnum.ADMINISTRATION_JOB,meterCertificateDto.getAdministrationJob())); meterCertificateDto.setEducation(dictService.getDictNameByCode(MeterDictEnum.EDUCATION,meterCertificateDto.getEducation())); - if(format.compareTo(meterCertificateDto.getValidDate()) > 0) { + if(null != meterCertificateDto.getValidDate() && format.compareTo(meterCertificateDto.getValidDate()) > 0) { meterCertificateDto.setCertificateStatus("1"); }else{ meterCertificateDto.setCertificateStatus("0"); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java index c1b40a2..a95919c 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterPriceServiceImpl.java @@ -27,6 +27,7 @@ import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -71,10 +72,11 @@ if(meterPriceMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override + @Transactional public ReturnDTO addMeterPrice(MeterPrice meterPrice) { MeterPriceCategory priceCategory = new MeterPriceCategory(null,meterPrice.getCheckType(),meterPrice.getCategoryName()); int categoryFlag = meterPriceCategoryMapper.insert(priceCategory); @@ -103,6 +105,7 @@ } @Override + @Transactional public ReturnDTO updatePriceInfo(MeterPrice meterPrice) { int updateFlag = meterPriceMapper.updateById(meterPrice); MeterPriceCategory priceCategory = new MeterPriceCategory(Long.parseLong(meterPrice.getPriceType()),meterPrice.getCheckType(),meterPrice.getCategoryName()); @@ -112,7 +115,7 @@ if(categoryFlag>0 && itemFlag>0 && updateFlag>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("价格信息编辑失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java index 60f4a31..49852e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterStaffServiceImpl.java @@ -34,6 +34,7 @@ import com.casic.missiles.utils.NumberGeneratorUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -106,7 +107,7 @@ if(meterStaffMapper.deleteById(idDto.getId())>0){ return ReturnUtil.success(); } - return ReturnUtil.failed("删除失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -123,6 +124,7 @@ } @Override + @Transactional public ReturnDTO addStaffInfo(MeterStaff meterStaff) { QueryWrapper staffWrapper = new QueryWrapper<>(); staffWrapper.eq("account",meterStaff.getAccount()); @@ -142,7 +144,7 @@ meterCertificateService.saveBatch(meterStaff.getCertificateList()); return ReturnUtil.success(); } - return ReturnUtil.failed("人员信息新增失败"); + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override @@ -167,25 +169,20 @@ } @Override + @Transactional public ReturnDTO updateStaffInfo(MeterStaff meterStaff) { int updateFlag = meterStaffMapper.updateById(meterStaff); if(updateFlag>0){ - List ids = new ArrayList<>(); - List equipmentList = new ArrayList<>(); - for (MeterCertificate certificate : meterStaff.getCertificateList()) { - if(null != certificate.getIsDel() && certificate.getIsDel() == 1){ - ids.add(certificate.getId()); - equipmentList.add(certificate); - } - } - meterCertificateMapper.deleteBatchIds(ids); - meterStaff.getCertificateList().removeAll(equipmentList); - boolean saveOrUpdateFlag = meterCertificateService.saveOrUpdateBatch(meterStaff.getCertificateList()); - if(saveOrUpdateFlag){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("staff_id",meterStaff.getId()); + meterStaff.getCertificateList().forEach(bean->{ + bean.setStaffId(String.valueOf(meterStaff.getId())); + }); + if(meterCertificateService.remove(wrapper) && meterCertificateService.saveBatch(meterStaff.getCertificateList())){ return ReturnUtil.success(); - }else{ - return ReturnUtil.failed("人员信息编辑失败"); - } } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java index d6316d0..e0ed48e 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterWorkbenchServiceImpl.java @@ -151,14 +151,15 @@ QueryWrapper trainLogWrapper = new QueryWrapper<>(); // 查询考核总人次 Long trainCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setTrainCount(trainCount); - // 查询考核合格人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - Long qualifiedCount = meterTrainStaffMapper.selectCount(trainLogWrapper); - result.setQualifiedCount(qualifiedCount); - result.setQualified(qualifiedCount); - // 考核不合格人次=考核总人次-合格人次 - result.setNotQualified(trainCount-qualifiedCount); + result.setTrainCount(Math.toIntExact(trainCount)); + // 查询考核不合格人次 + trainLogWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + Long notQualified = meterTrainStaffMapper.selectCount(trainLogWrapper); + result.setNotQualified(Math.toIntExact(notQualified)); + // 合格人次=考核总人次-不合格人次 + result.setQualifiedCount(Math.toIntExact(trainCount - notQualified)); + result.setQualified(Math.toIntExact(trainCount - notQualified)); + result.setMeterAdmin(true); }else{ // 当前用户是不是计量部门负责人查询该人员对应的的培训考核信息 QueryWrapper staffWrapper = new QueryWrapper<>(); @@ -167,28 +168,31 @@ MeterStaff meterStaff = meterStaffMapper.selectOne(staffWrapper); if(null == meterStaff){ log.error("该用户不是计量相关人员"); + result.setTrainCount(0); + result.setQualifiedCount(0); + result.setQualified(0); + result.setNotQualified(0); return ReturnUtil.success(result); } QueryWrapper trainLogWrapper = new QueryWrapper<>(); + int trainCount = Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper)); // 查询考核总人次 - result.setTrainCount(meterTrainStaffMapper.selectCount(trainLogWrapper)); - // 查询考核合格总人次 - trainLogWrapper.eq("exam_result", ExamResultEnum.QUALIFIED.getValue()); - result.setQualifiedCount(meterTrainStaffMapper.selectCount(trainLogWrapper)); - // 查询当前用户对应的考核结果信息 + result.setTrainCount(trainCount); + // 查询考核不合格总人次 + trainLogWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + // 合格总人次=考核总人次-考核不合格总人次 + result.setQualifiedCount(trainCount - Math.toIntExact(meterTrainStaffMapper.selectCount(trainLogWrapper))); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("staff_id", meterStaff.getId()); - queryWrapper.select("exam_result as 'result',count(1) AS 'count'") - .groupBy("exam_result"); - List> mapList = meterTrainStaffMapper.selectMaps(queryWrapper); - mapList.forEach(bean->{ - // 将查询到的信息赋值给返回的对象中 - if(bean.get("result").equals(ExamResultEnum.QUALIFIED.getValue())){ - result.setQualified(Long.parseLong(bean.get("count").toString())); - }else{ - result.setNotQualified(Long.parseLong(bean.get("count").toString())); - } - }); + // 查询当前用户考核次数 + int sum = Math.toIntExact(meterTrainStaffMapper.selectCount(queryWrapper)); + // 查询当前用户未合格次数 + queryWrapper.eq("exam_result", ExamResultEnum.NOT_QUALIFIED.getValue()); + int notQualified = Math.toIntExact(meterTrainStaffMapper.selectCount(queryWrapper)); + result.setNotQualified(notQualified); + // 当前用户合格=考核总次数-考核不合格次数 + result.setQualified(sum-notQualified); + result.setMeterAdmin(false); } return ReturnUtil.success(result); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificateReportService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificateReportService.java index c881586..33ac64a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificateReportService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificateReportService.java @@ -1,6 +1,7 @@ package com.casic.missiles.service.business; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.model.business.BusinessCertificateReport; /** @@ -8,9 +9,12 @@ * 业务管理-证书报告 服务类 *

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ public interface IBusinessCertificateReportService extends IService { + ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport); + + BusinessCertificateReport certificateReportDetail(Long id); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/meter/MeterCertificateService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/meter/MeterCertificateService.java index 5fce202..a62a098 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/meter/MeterCertificateService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/meter/MeterCertificateService.java @@ -9,6 +9,7 @@ import com.casic.missiles.dto.meter.MeterStaffRequest; import com.casic.missiles.model.meter.MeterCertificate; import com.casic.missiles.model.meter.MeterCertificateExpireMessage; +import com.casic.missiles.model.workbench.WorkbenchRemindMessage; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -31,7 +32,7 @@ void regularExpirationReminder(); - Page queryMessageList(Page page, MeterStaffRequest request); + Page queryMessageList(Page page); ReturnDTO readMessage(IdDTO idDto);