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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 95dbb48..39f461c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -112,5 +112,8 @@ String PRINT_STATUS = "printStatus"; //证书类型 String CERTIFICATE_TYPE = "certificateType"; + //证书管理-检校专业 + String CALIBRATION_MAJOR= "calibrationMajor"; + } 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 95dbb48..39f461c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -112,5 +112,8 @@ String PRINT_STATUS = "printStatus"; //证书类型 String CERTIFICATE_TYPE = "certificateType"; + //证书管理-检校专业 + String CALIBRATION_MAJOR= "calibrationMajor"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java new file mode 100644 index 0000000..63be6bd --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java @@ -0,0 +1,54 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 审批请求体 + */ +@Data +@ApiModel +public class CertificateReportApprovalRequest { + + /** + * 审批状态类型,对应ApprovalStatusEnum + */ + @NotEmpty(message = "审批状态类型不能为空") + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + + @ApiModelProperty(hidden = true) + private Long createUserId; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; +} 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 95dbb48..39f461c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -112,5 +112,8 @@ String PRINT_STATUS = "printStatus"; //证书类型 String CERTIFICATE_TYPE = "certificateType"; + //证书管理-检校专业 + String CALIBRATION_MAJOR= "calibrationMajor"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java new file mode 100644 index 0000000..63be6bd --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java @@ -0,0 +1,54 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 审批请求体 + */ +@Data +@ApiModel +public class CertificateReportApprovalRequest { + + /** + * 审批状态类型,对应ApprovalStatusEnum + */ + @NotEmpty(message = "审批状态类型不能为空") + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + + @ApiModelProperty(hidden = true) + private Long createUserId; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java new file mode 100644 index 0000000..ae978e9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java @@ -0,0 +1,36 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class CertificateReportRequest { + + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 95dbb48..39f461c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -112,5 +112,8 @@ String PRINT_STATUS = "printStatus"; //证书类型 String CERTIFICATE_TYPE = "certificateType"; + //证书管理-检校专业 + String CALIBRATION_MAJOR= "calibrationMajor"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java new file mode 100644 index 0000000..63be6bd --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java @@ -0,0 +1,54 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 审批请求体 + */ +@Data +@ApiModel +public class CertificateReportApprovalRequest { + + /** + * 审批状态类型,对应ApprovalStatusEnum + */ + @NotEmpty(message = "审批状态类型不能为空") + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + + @ApiModelProperty(hidden = true) + private Long createUserId; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java new file mode 100644 index 0000000..ae978e9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java @@ -0,0 +1,36 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class CertificateReportRequest { + + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java new file mode 100644 index 0000000..f9f4490 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java @@ -0,0 +1,115 @@ +package com.casic.missiles.dto.business.certificate; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +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 com.casic.missiles.model.customer.CustomerSampleInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class CertificateReportResponse { + + + @ApiModelProperty(value = "证书报告id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "证书报告编号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "证书报告名称", dataType = "String") + private String certificateReportName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) + private String calibrationMajor; + +// @ApiModelProperty(value = "出具日期", dataType = "String") +// private String issuanceDate; +// +// +// @ApiModelProperty(value = "证书有效期", dataType = "String") +// private String expirationDate; +// +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; +// +// +// @ApiModelProperty(value = "原始记录id", dataType = "Long") +// private Long originalRecordId; +// +// +// @ApiModelProperty(value = "可打印状态", dataType = "String") +// private String printStatus; +// +// +// @ApiModelProperty(value = "打印次数", dataType = "Integer") +// private Integer printNum; + + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + private String approvalStatus; + +// @ApiModelProperty(value = "备注", dataType = "String") +// private String remark; +// +// private Long createUser; +// + private String createTime; + + +// @ApiModelProperty(value = "检校专业名称", dataType = "String") +// private String calibrationMajorName; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + /** + * 任务id + */ + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; + +} 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 95dbb48..39f461c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -112,5 +112,8 @@ String PRINT_STATUS = "printStatus"; //证书类型 String CERTIFICATE_TYPE = "certificateType"; + //证书管理-检校专业 + String CALIBRATION_MAJOR= "calibrationMajor"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java new file mode 100644 index 0000000..63be6bd --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java @@ -0,0 +1,54 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 审批请求体 + */ +@Data +@ApiModel +public class CertificateReportApprovalRequest { + + /** + * 审批状态类型,对应ApprovalStatusEnum + */ + @NotEmpty(message = "审批状态类型不能为空") + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + + @ApiModelProperty(hidden = true) + private Long createUserId; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java new file mode 100644 index 0000000..ae978e9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java @@ -0,0 +1,36 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class CertificateReportRequest { + + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java new file mode 100644 index 0000000..f9f4490 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java @@ -0,0 +1,115 @@ +package com.casic.missiles.dto.business.certificate; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +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 com.casic.missiles.model.customer.CustomerSampleInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class CertificateReportResponse { + + + @ApiModelProperty(value = "证书报告id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "证书报告编号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "证书报告名称", dataType = "String") + private String certificateReportName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) + private String calibrationMajor; + +// @ApiModelProperty(value = "出具日期", dataType = "String") +// private String issuanceDate; +// +// +// @ApiModelProperty(value = "证书有效期", dataType = "String") +// private String expirationDate; +// +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; +// +// +// @ApiModelProperty(value = "原始记录id", dataType = "Long") +// private Long originalRecordId; +// +// +// @ApiModelProperty(value = "可打印状态", dataType = "String") +// private String printStatus; +// +// +// @ApiModelProperty(value = "打印次数", dataType = "Integer") +// private Integer printNum; + + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + private String approvalStatus; + +// @ApiModelProperty(value = "备注", dataType = "String") +// private String remark; +// +// private Long createUser; +// + private String createTime; + + +// @ApiModelProperty(value = "检校专业名称", dataType = "String") +// private String calibrationMajorName; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + /** + * 任务id + */ + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; + +} 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 1e0c46f..d879286 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 @@ -1,8 +1,11 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelProperty; 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 io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -72,6 +75,7 @@ */ @TableField("calibration_major") @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) private String calibrationMajor; /** @@ -152,15 +156,24 @@ private String measurePersonId; /** - * 可打印状态(字典code) + * 审批状态(字典code) */ @TableField("approval_status") + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) private String approvalStatus; @TableField("remark") @ApiModelProperty(value = "备注", dataType = "String") private String remark; + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @TableField("process_id") + private String processId; + @TableField("is_del") private Boolean isDel; @@ -177,4 +190,11 @@ @ApiModelProperty(value = "原始记录信息", dataType = "Object") private BusinessOriginalRecord businessOriginalRecord; + @TableField(exist = false) + @ApiModelProperty(value = "检校专业名称", dataType = "String") + private String calibrationMajorName; + + @TableField(exist = false) + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; } 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 95dbb48..39f461c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -112,5 +112,8 @@ String PRINT_STATUS = "printStatus"; //证书类型 String CERTIFICATE_TYPE = "certificateType"; + //证书管理-检校专业 + String CALIBRATION_MAJOR= "calibrationMajor"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java new file mode 100644 index 0000000..63be6bd --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java @@ -0,0 +1,54 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 审批请求体 + */ +@Data +@ApiModel +public class CertificateReportApprovalRequest { + + /** + * 审批状态类型,对应ApprovalStatusEnum + */ + @NotEmpty(message = "审批状态类型不能为空") + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + + @ApiModelProperty(hidden = true) + private Long createUserId; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java new file mode 100644 index 0000000..ae978e9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java @@ -0,0 +1,36 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class CertificateReportRequest { + + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java new file mode 100644 index 0000000..f9f4490 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java @@ -0,0 +1,115 @@ +package com.casic.missiles.dto.business.certificate; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +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 com.casic.missiles.model.customer.CustomerSampleInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class CertificateReportResponse { + + + @ApiModelProperty(value = "证书报告id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "证书报告编号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "证书报告名称", dataType = "String") + private String certificateReportName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) + private String calibrationMajor; + +// @ApiModelProperty(value = "出具日期", dataType = "String") +// private String issuanceDate; +// +// +// @ApiModelProperty(value = "证书有效期", dataType = "String") +// private String expirationDate; +// +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; +// +// +// @ApiModelProperty(value = "原始记录id", dataType = "Long") +// private Long originalRecordId; +// +// +// @ApiModelProperty(value = "可打印状态", dataType = "String") +// private String printStatus; +// +// +// @ApiModelProperty(value = "打印次数", dataType = "Integer") +// private Integer printNum; + + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + private String approvalStatus; + +// @ApiModelProperty(value = "备注", dataType = "String") +// private String remark; +// +// private Long createUser; +// + private String createTime; + + +// @ApiModelProperty(value = "检校专业名称", dataType = "String") +// private String calibrationMajorName; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + /** + * 任务id + */ + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; + +} 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 1e0c46f..d879286 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 @@ -1,8 +1,11 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelProperty; 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 io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -72,6 +75,7 @@ */ @TableField("calibration_major") @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) private String calibrationMajor; /** @@ -152,15 +156,24 @@ private String measurePersonId; /** - * 可打印状态(字典code) + * 审批状态(字典code) */ @TableField("approval_status") + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) private String approvalStatus; @TableField("remark") @ApiModelProperty(value = "备注", dataType = "String") private String remark; + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @TableField("process_id") + private String processId; + @TableField("is_del") private Boolean isDel; @@ -177,4 +190,11 @@ @ApiModelProperty(value = "原始记录信息", dataType = "Object") private BusinessOriginalRecord businessOriginalRecord; + @TableField(exist = false) + @ApiModelProperty(value = "检校专业名称", dataType = "String") + private String calibrationMajorName; + + @TableField(exist = false) + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; } 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 5e30e4f..11942ff 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,10 +96,13 @@ @TableField("update_time") private String updateTime; - public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; + this.remindDeptId = remindDeptId; this.businessId = businessId; this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; this.messageContent = messageContent; this.status = status; this.createUser = createUser; 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 95dbb48..39f461c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -112,5 +112,8 @@ String PRINT_STATUS = "printStatus"; //证书类型 String CERTIFICATE_TYPE = "certificateType"; + //证书管理-检校专业 + String CALIBRATION_MAJOR= "calibrationMajor"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java new file mode 100644 index 0000000..63be6bd --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java @@ -0,0 +1,54 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 审批请求体 + */ +@Data +@ApiModel +public class CertificateReportApprovalRequest { + + /** + * 审批状态类型,对应ApprovalStatusEnum + */ + @NotEmpty(message = "审批状态类型不能为空") + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + + @ApiModelProperty(hidden = true) + private Long createUserId; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java new file mode 100644 index 0000000..ae978e9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java @@ -0,0 +1,36 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class CertificateReportRequest { + + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java new file mode 100644 index 0000000..f9f4490 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java @@ -0,0 +1,115 @@ +package com.casic.missiles.dto.business.certificate; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +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 com.casic.missiles.model.customer.CustomerSampleInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class CertificateReportResponse { + + + @ApiModelProperty(value = "证书报告id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "证书报告编号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "证书报告名称", dataType = "String") + private String certificateReportName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) + private String calibrationMajor; + +// @ApiModelProperty(value = "出具日期", dataType = "String") +// private String issuanceDate; +// +// +// @ApiModelProperty(value = "证书有效期", dataType = "String") +// private String expirationDate; +// +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; +// +// +// @ApiModelProperty(value = "原始记录id", dataType = "Long") +// private Long originalRecordId; +// +// +// @ApiModelProperty(value = "可打印状态", dataType = "String") +// private String printStatus; +// +// +// @ApiModelProperty(value = "打印次数", dataType = "Integer") +// private Integer printNum; + + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + private String approvalStatus; + +// @ApiModelProperty(value = "备注", dataType = "String") +// private String remark; +// +// private Long createUser; +// + private String createTime; + + +// @ApiModelProperty(value = "检校专业名称", dataType = "String") +// private String calibrationMajorName; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + /** + * 任务id + */ + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; + +} 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 1e0c46f..d879286 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 @@ -1,8 +1,11 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelProperty; 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 io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -72,6 +75,7 @@ */ @TableField("calibration_major") @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) private String calibrationMajor; /** @@ -152,15 +156,24 @@ private String measurePersonId; /** - * 可打印状态(字典code) + * 审批状态(字典code) */ @TableField("approval_status") + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) private String approvalStatus; @TableField("remark") @ApiModelProperty(value = "备注", dataType = "String") private String remark; + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @TableField("process_id") + private String processId; + @TableField("is_del") private Boolean isDel; @@ -177,4 +190,11 @@ @ApiModelProperty(value = "原始记录信息", dataType = "Object") private BusinessOriginalRecord businessOriginalRecord; + @TableField(exist = false) + @ApiModelProperty(value = "检校专业名称", dataType = "String") + private String calibrationMajorName; + + @TableField(exist = false) + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; } 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 5e30e4f..11942ff 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,10 +96,13 @@ @TableField("update_time") private String updateTime; - public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; + this.remindDeptId = remindDeptId; this.businessId = businessId; this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; this.messageContent = messageContent; this.status = status; this.createUser = createUser; 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 59587af..c43341f 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,27 +1,46 @@ 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 cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.BaseApprovalSubmitRequest; 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.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; +import com.casic.missiles.dto.business.originRecord.OriginRecordResponse; +import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.*; 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.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessCertificateReportService; import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.flowable.ApprovalOperateService; +import com.casic.missiles.utils.ConvertUtils; +import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; -import java.util.Date; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -37,6 +56,18 @@ @Autowired private IBusinessOriginalRecordService originalRecordService; + @Resource + private AbstractDictService dictService; + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Resource + private TaskService taskService; + @Resource + private RuntimeService runtimeService; + @Resource + private IBaseExportService iBaseExportService; /** * 保存证书报告信息 * @param certificateReport @@ -51,6 +82,43 @@ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /*** + * 审批操作-删除,包括删流程和数据库记录 + * @param request + * @return + */ + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if(ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()){ + //删除数据库记录 + if(this.baseMapper.deleteById(request.getId()) > 0){ + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO draftUpdate(BusinessCertificateReport certificateReport) { + if(this.baseMapper.updateById(certificateReport)>0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 批量删除 + * @param ids + * @return + */ + @Override + public ReturnDTO deleteBatchTraceSupplier(List ids) { + + return baseMapper.deleteBatchIds(ids) > 0?ReturnUtil.success(): + ReturnUtil.failed("删除失败"); + } + /** * 证书报告详情 * @param id @@ -69,16 +137,199 @@ return certificateReport; } - private void initCertificateReport(BusinessCertificateReport certificateReport) { + /** + * 提交证书报告 + * @param request + * @return + */ + @Override + public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { + //1.根据表单id获取流程定义id + String formId = request.getFormId(); + //2.根据流程定义id启动流程实例 + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if(ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()){ + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance)returnDTO.getData(); + BusinessCertificateReport certificateReport = new BusinessCertificateReport(); + certificateReport.setId(request.getId()); + certificateReport.setApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + certificateReport.setProcessId(processInstance.getId()); + int row = this.baseMapper.updateById(certificateReport); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.CERTIFICATE_REPORT_SUBMIT_FAILED.getCode(), BusinessExceptionEnum.CERTIFICATE_REPORT_SUBMIT_FAILED.getMessage()); + } + return ReturnUtil.success(); + } - Long maxNo = this.baseMapper.selectMaxCode(); + /** + * 审批状态列表查询 + * @param page + * @param request + * @return + */ + @Override + public List approvalListPage(Page page, CertificateReportApprovalRequest request) { + //登录用户 + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + return handleApprovalStatus(page, request); + } + + /** + * 驳回后更新 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO failUpdate(BusinessCertificateReport certificateReport) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (this.baseMapper.updateById(certificateReport) > 0) { + //发起人审批通过 + Task task = taskService.createTaskQuery() + .processInstanceId(certificateReport.getProcessId()) + .active() + .singleResult(); + taskService.complete(task.getId()); + //更新状态为审批中 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public void originExport(CertificateReportApprovalRequest request, HttpServletResponse response) { + try { + //toDo: +// List certificateReportResponses = this.certificateReport(request); +// for (OriginRecordResponse originRecordResponse : originExportList) { +// //字典值转换 +// DictCodeUtils.convertDictCodeToName(originRecordResponse); +// } +// iBaseExportService.exportExcel(response, CertificateReportResponse.class, originExportList, ExportEnum.CERTIFICATE_REPORT.getSheetName()); + } catch (Exception e) { + log.error("证书报告导出出现异常,异常信息为{}", e); + } + } + + private List handleApprovalStatus(Page page, CertificateReportApprovalRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + approvalList = handleApprovalListResponse(this.baseMapper.selectDraftListForApproval(page, request), ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if(!CollectionUtils.isEmpty(toBeApprovedList)){ + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if(String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())){ + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse( this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(rejectBusinessKey)){ + rejectApprovalList = handleApprovalListResponse( this.baseMapper.selectBatchForApproval(page, request, rejectBusinessKey), ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消(直接删除实例),该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if(!CollectionUtils.isEmpty(AllApproveList)){ + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleAllApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), AllApproveList); + } + break; + } + return approvalList; + } + + private List handleAllApprovalListResponse(List approvalList, List allApproveList) { + Map taskMap = new HashMap<>(); + allApproveList.forEach(allApprove -> {taskMap.put(allApprove.getBusinessKey(),allApprove.getStatus());}); + //状态补全 + approvalList.forEach(approval -> { + approval.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(CertificateReportResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } + + private List handleApprovalListResponse(List approvalList, String status){ + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + String prefix = MonitorCodeEnum.getByCode(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"); + Long maxNo = this.baseMapper.selectMaxCode(prefix); //生成证书编号 - String certificateReportNo =NumberGeneratorUtil.getContactNo( - MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() - +DateUtil.format(new Date(),"YYYYMM"),maxNo); + String certificateReportNo =NumberGeneratorUtil.getCode( + MonitorCodeEnum.getByCode(certificateReport.getCalibrationMajor()).getValue(),maxNo); AuthUser authUser = ShiroKit.getUser(); certificateReport.setCreateUser(authUser.getId()); certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setMeasureDeptId(authUser.getDeptId()); 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 95dbb48..39f461c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -112,5 +112,8 @@ String PRINT_STATUS = "printStatus"; //证书类型 String CERTIFICATE_TYPE = "certificateType"; + //证书管理-检校专业 + String CALIBRATION_MAJOR= "calibrationMajor"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java new file mode 100644 index 0000000..63be6bd --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java @@ -0,0 +1,54 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 审批请求体 + */ +@Data +@ApiModel +public class CertificateReportApprovalRequest { + + /** + * 审批状态类型,对应ApprovalStatusEnum + */ + @NotEmpty(message = "审批状态类型不能为空") + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + + @ApiModelProperty(hidden = true) + private Long createUserId; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java new file mode 100644 index 0000000..ae978e9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java @@ -0,0 +1,36 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class CertificateReportRequest { + + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java new file mode 100644 index 0000000..f9f4490 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java @@ -0,0 +1,115 @@ +package com.casic.missiles.dto.business.certificate; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +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 com.casic.missiles.model.customer.CustomerSampleInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class CertificateReportResponse { + + + @ApiModelProperty(value = "证书报告id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "证书报告编号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "证书报告名称", dataType = "String") + private String certificateReportName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) + private String calibrationMajor; + +// @ApiModelProperty(value = "出具日期", dataType = "String") +// private String issuanceDate; +// +// +// @ApiModelProperty(value = "证书有效期", dataType = "String") +// private String expirationDate; +// +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; +// +// +// @ApiModelProperty(value = "原始记录id", dataType = "Long") +// private Long originalRecordId; +// +// +// @ApiModelProperty(value = "可打印状态", dataType = "String") +// private String printStatus; +// +// +// @ApiModelProperty(value = "打印次数", dataType = "Integer") +// private Integer printNum; + + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + private String approvalStatus; + +// @ApiModelProperty(value = "备注", dataType = "String") +// private String remark; +// +// private Long createUser; +// + private String createTime; + + +// @ApiModelProperty(value = "检校专业名称", dataType = "String") +// private String calibrationMajorName; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + /** + * 任务id + */ + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; + +} 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 1e0c46f..d879286 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 @@ -1,8 +1,11 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelProperty; 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 io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -72,6 +75,7 @@ */ @TableField("calibration_major") @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) private String calibrationMajor; /** @@ -152,15 +156,24 @@ private String measurePersonId; /** - * 可打印状态(字典code) + * 审批状态(字典code) */ @TableField("approval_status") + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) private String approvalStatus; @TableField("remark") @ApiModelProperty(value = "备注", dataType = "String") private String remark; + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @TableField("process_id") + private String processId; + @TableField("is_del") private Boolean isDel; @@ -177,4 +190,11 @@ @ApiModelProperty(value = "原始记录信息", dataType = "Object") private BusinessOriginalRecord businessOriginalRecord; + @TableField(exist = false) + @ApiModelProperty(value = "检校专业名称", dataType = "String") + private String calibrationMajorName; + + @TableField(exist = false) + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; } 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 5e30e4f..11942ff 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,10 +96,13 @@ @TableField("update_time") private String updateTime; - public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; + this.remindDeptId = remindDeptId; this.businessId = businessId; this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; this.messageContent = messageContent; this.status = status; this.createUser = createUser; 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 59587af..c43341f 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,27 +1,46 @@ 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 cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.BaseApprovalSubmitRequest; 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.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; +import com.casic.missiles.dto.business.originRecord.OriginRecordResponse; +import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.*; 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.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessCertificateReportService; import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.flowable.ApprovalOperateService; +import com.casic.missiles.utils.ConvertUtils; +import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; -import java.util.Date; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -37,6 +56,18 @@ @Autowired private IBusinessOriginalRecordService originalRecordService; + @Resource + private AbstractDictService dictService; + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Resource + private TaskService taskService; + @Resource + private RuntimeService runtimeService; + @Resource + private IBaseExportService iBaseExportService; /** * 保存证书报告信息 * @param certificateReport @@ -51,6 +82,43 @@ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /*** + * 审批操作-删除,包括删流程和数据库记录 + * @param request + * @return + */ + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if(ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()){ + //删除数据库记录 + if(this.baseMapper.deleteById(request.getId()) > 0){ + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO draftUpdate(BusinessCertificateReport certificateReport) { + if(this.baseMapper.updateById(certificateReport)>0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 批量删除 + * @param ids + * @return + */ + @Override + public ReturnDTO deleteBatchTraceSupplier(List ids) { + + return baseMapper.deleteBatchIds(ids) > 0?ReturnUtil.success(): + ReturnUtil.failed("删除失败"); + } + /** * 证书报告详情 * @param id @@ -69,16 +137,199 @@ return certificateReport; } - private void initCertificateReport(BusinessCertificateReport certificateReport) { + /** + * 提交证书报告 + * @param request + * @return + */ + @Override + public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { + //1.根据表单id获取流程定义id + String formId = request.getFormId(); + //2.根据流程定义id启动流程实例 + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if(ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()){ + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance)returnDTO.getData(); + BusinessCertificateReport certificateReport = new BusinessCertificateReport(); + certificateReport.setId(request.getId()); + certificateReport.setApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + certificateReport.setProcessId(processInstance.getId()); + int row = this.baseMapper.updateById(certificateReport); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.CERTIFICATE_REPORT_SUBMIT_FAILED.getCode(), BusinessExceptionEnum.CERTIFICATE_REPORT_SUBMIT_FAILED.getMessage()); + } + return ReturnUtil.success(); + } - Long maxNo = this.baseMapper.selectMaxCode(); + /** + * 审批状态列表查询 + * @param page + * @param request + * @return + */ + @Override + public List approvalListPage(Page page, CertificateReportApprovalRequest request) { + //登录用户 + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + return handleApprovalStatus(page, request); + } + + /** + * 驳回后更新 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO failUpdate(BusinessCertificateReport certificateReport) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (this.baseMapper.updateById(certificateReport) > 0) { + //发起人审批通过 + Task task = taskService.createTaskQuery() + .processInstanceId(certificateReport.getProcessId()) + .active() + .singleResult(); + taskService.complete(task.getId()); + //更新状态为审批中 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public void originExport(CertificateReportApprovalRequest request, HttpServletResponse response) { + try { + //toDo: +// List certificateReportResponses = this.certificateReport(request); +// for (OriginRecordResponse originRecordResponse : originExportList) { +// //字典值转换 +// DictCodeUtils.convertDictCodeToName(originRecordResponse); +// } +// iBaseExportService.exportExcel(response, CertificateReportResponse.class, originExportList, ExportEnum.CERTIFICATE_REPORT.getSheetName()); + } catch (Exception e) { + log.error("证书报告导出出现异常,异常信息为{}", e); + } + } + + private List handleApprovalStatus(Page page, CertificateReportApprovalRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + approvalList = handleApprovalListResponse(this.baseMapper.selectDraftListForApproval(page, request), ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if(!CollectionUtils.isEmpty(toBeApprovedList)){ + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if(String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())){ + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse( this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(rejectBusinessKey)){ + rejectApprovalList = handleApprovalListResponse( this.baseMapper.selectBatchForApproval(page, request, rejectBusinessKey), ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消(直接删除实例),该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if(!CollectionUtils.isEmpty(AllApproveList)){ + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleAllApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), AllApproveList); + } + break; + } + return approvalList; + } + + private List handleAllApprovalListResponse(List approvalList, List allApproveList) { + Map taskMap = new HashMap<>(); + allApproveList.forEach(allApprove -> {taskMap.put(allApprove.getBusinessKey(),allApprove.getStatus());}); + //状态补全 + approvalList.forEach(approval -> { + approval.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(CertificateReportResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } + + private List handleApprovalListResponse(List approvalList, String status){ + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + String prefix = MonitorCodeEnum.getByCode(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"); + Long maxNo = this.baseMapper.selectMaxCode(prefix); //生成证书编号 - String certificateReportNo =NumberGeneratorUtil.getContactNo( - MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() - +DateUtil.format(new Date(),"YYYYMM"),maxNo); + String certificateReportNo =NumberGeneratorUtil.getCode( + MonitorCodeEnum.getByCode(certificateReport.getCalibrationMajor()).getValue(),maxNo); AuthUser authUser = ShiroKit.getUser(); certificateReport.setCreateUser(authUser.getId()); certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setMeasureDeptId(authUser.getDeptId()); certificateReport.setCertificateReportCode(certificateReportNo); } } 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 6c31948..ce076b0 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 @@ -21,9 +21,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.meter.MeterCertificateImport; import com.casic.missiles.dto.meter.MeterStaffRequest; -import com.casic.missiles.enums.BusinessExceptionEnum; -import com.casic.missiles.enums.ExportEnum; -import com.casic.missiles.enums.MeterDictEnum; +import com.casic.missiles.enums.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; @@ -182,7 +180,7 @@ 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()); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),Long.parseLong(userInfo.getDeptId()),idDto.getId(),meterCertificate.getCertificateNo(), MessageTypeEnum.METER_CERTIFICATE.getCode(),MessageTypeEnum.METER_CERTIFICATE.getValue(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); if(messageMapper.insert(remindMessage)>0){ // 新增到消息列表后向用户推送消息 webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); @@ -210,10 +208,18 @@ Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); // 移除已经发送过消息的证书信息 messageIds.forEach(collect::remove); - collect.keySet().forEach(dtoList -> { - // 讲需要发送消息的证书整合 - messageList.addAll(collect.get(dtoList)); - }); + // 讲需要发送消息的证书整合 + for (Long id : collect.keySet()) { + messageList.addAll(collect.get(id)); + } + // 补充业务数据 + for (WorkbenchRemindMessage message : messageList) { + message.setMessageType(MessageTypeEnum.METER_CERTIFICATE.getCode()); + message.setMessageTitle(MessageTypeEnum.METER_CERTIFICATE.getValue()); + message.setStatus(0); + message.setCreateUser(Long.valueOf(MeterRoleTypeEnum.ADMIN.getCode())); + message.setCreateUserName(MeterRoleTypeEnum.ADMIN.getValue()); + } log.info("定时任务新增消息表:"+messageList); messageService.saveBatch(messageList); webSocket.sendMessage(messageList); 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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 95dbb48..39f461c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -112,5 +112,8 @@ String PRINT_STATUS = "printStatus"; //证书类型 String CERTIFICATE_TYPE = "certificateType"; + //证书管理-检校专业 + String CALIBRATION_MAJOR= "calibrationMajor"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java new file mode 100644 index 0000000..63be6bd --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java @@ -0,0 +1,54 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 审批请求体 + */ +@Data +@ApiModel +public class CertificateReportApprovalRequest { + + /** + * 审批状态类型,对应ApprovalStatusEnum + */ + @NotEmpty(message = "审批状态类型不能为空") + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + + @ApiModelProperty(hidden = true) + private Long createUserId; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java new file mode 100644 index 0000000..ae978e9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java @@ -0,0 +1,36 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class CertificateReportRequest { + + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java new file mode 100644 index 0000000..f9f4490 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java @@ -0,0 +1,115 @@ +package com.casic.missiles.dto.business.certificate; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +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 com.casic.missiles.model.customer.CustomerSampleInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class CertificateReportResponse { + + + @ApiModelProperty(value = "证书报告id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "证书报告编号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "证书报告名称", dataType = "String") + private String certificateReportName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) + private String calibrationMajor; + +// @ApiModelProperty(value = "出具日期", dataType = "String") +// private String issuanceDate; +// +// +// @ApiModelProperty(value = "证书有效期", dataType = "String") +// private String expirationDate; +// +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; +// +// +// @ApiModelProperty(value = "原始记录id", dataType = "Long") +// private Long originalRecordId; +// +// +// @ApiModelProperty(value = "可打印状态", dataType = "String") +// private String printStatus; +// +// +// @ApiModelProperty(value = "打印次数", dataType = "Integer") +// private Integer printNum; + + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + private String approvalStatus; + +// @ApiModelProperty(value = "备注", dataType = "String") +// private String remark; +// +// private Long createUser; +// + private String createTime; + + +// @ApiModelProperty(value = "检校专业名称", dataType = "String") +// private String calibrationMajorName; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + /** + * 任务id + */ + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; + +} 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 1e0c46f..d879286 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 @@ -1,8 +1,11 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelProperty; 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 io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -72,6 +75,7 @@ */ @TableField("calibration_major") @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) private String calibrationMajor; /** @@ -152,15 +156,24 @@ private String measurePersonId; /** - * 可打印状态(字典code) + * 审批状态(字典code) */ @TableField("approval_status") + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) private String approvalStatus; @TableField("remark") @ApiModelProperty(value = "备注", dataType = "String") private String remark; + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @TableField("process_id") + private String processId; + @TableField("is_del") private Boolean isDel; @@ -177,4 +190,11 @@ @ApiModelProperty(value = "原始记录信息", dataType = "Object") private BusinessOriginalRecord businessOriginalRecord; + @TableField(exist = false) + @ApiModelProperty(value = "检校专业名称", dataType = "String") + private String calibrationMajorName; + + @TableField(exist = false) + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; } 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 5e30e4f..11942ff 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,10 +96,13 @@ @TableField("update_time") private String updateTime; - public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; + this.remindDeptId = remindDeptId; this.businessId = businessId; this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; this.messageContent = messageContent; this.status = status; this.createUser = createUser; 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 59587af..c43341f 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,27 +1,46 @@ 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 cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.BaseApprovalSubmitRequest; 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.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; +import com.casic.missiles.dto.business.originRecord.OriginRecordResponse; +import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.*; 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.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessCertificateReportService; import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.flowable.ApprovalOperateService; +import com.casic.missiles.utils.ConvertUtils; +import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; -import java.util.Date; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -37,6 +56,18 @@ @Autowired private IBusinessOriginalRecordService originalRecordService; + @Resource + private AbstractDictService dictService; + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Resource + private TaskService taskService; + @Resource + private RuntimeService runtimeService; + @Resource + private IBaseExportService iBaseExportService; /** * 保存证书报告信息 * @param certificateReport @@ -51,6 +82,43 @@ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /*** + * 审批操作-删除,包括删流程和数据库记录 + * @param request + * @return + */ + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if(ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()){ + //删除数据库记录 + if(this.baseMapper.deleteById(request.getId()) > 0){ + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO draftUpdate(BusinessCertificateReport certificateReport) { + if(this.baseMapper.updateById(certificateReport)>0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 批量删除 + * @param ids + * @return + */ + @Override + public ReturnDTO deleteBatchTraceSupplier(List ids) { + + return baseMapper.deleteBatchIds(ids) > 0?ReturnUtil.success(): + ReturnUtil.failed("删除失败"); + } + /** * 证书报告详情 * @param id @@ -69,16 +137,199 @@ return certificateReport; } - private void initCertificateReport(BusinessCertificateReport certificateReport) { + /** + * 提交证书报告 + * @param request + * @return + */ + @Override + public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { + //1.根据表单id获取流程定义id + String formId = request.getFormId(); + //2.根据流程定义id启动流程实例 + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if(ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()){ + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance)returnDTO.getData(); + BusinessCertificateReport certificateReport = new BusinessCertificateReport(); + certificateReport.setId(request.getId()); + certificateReport.setApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + certificateReport.setProcessId(processInstance.getId()); + int row = this.baseMapper.updateById(certificateReport); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.CERTIFICATE_REPORT_SUBMIT_FAILED.getCode(), BusinessExceptionEnum.CERTIFICATE_REPORT_SUBMIT_FAILED.getMessage()); + } + return ReturnUtil.success(); + } - Long maxNo = this.baseMapper.selectMaxCode(); + /** + * 审批状态列表查询 + * @param page + * @param request + * @return + */ + @Override + public List approvalListPage(Page page, CertificateReportApprovalRequest request) { + //登录用户 + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + return handleApprovalStatus(page, request); + } + + /** + * 驳回后更新 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO failUpdate(BusinessCertificateReport certificateReport) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (this.baseMapper.updateById(certificateReport) > 0) { + //发起人审批通过 + Task task = taskService.createTaskQuery() + .processInstanceId(certificateReport.getProcessId()) + .active() + .singleResult(); + taskService.complete(task.getId()); + //更新状态为审批中 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public void originExport(CertificateReportApprovalRequest request, HttpServletResponse response) { + try { + //toDo: +// List certificateReportResponses = this.certificateReport(request); +// for (OriginRecordResponse originRecordResponse : originExportList) { +// //字典值转换 +// DictCodeUtils.convertDictCodeToName(originRecordResponse); +// } +// iBaseExportService.exportExcel(response, CertificateReportResponse.class, originExportList, ExportEnum.CERTIFICATE_REPORT.getSheetName()); + } catch (Exception e) { + log.error("证书报告导出出现异常,异常信息为{}", e); + } + } + + private List handleApprovalStatus(Page page, CertificateReportApprovalRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + approvalList = handleApprovalListResponse(this.baseMapper.selectDraftListForApproval(page, request), ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if(!CollectionUtils.isEmpty(toBeApprovedList)){ + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if(String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())){ + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse( this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(rejectBusinessKey)){ + rejectApprovalList = handleApprovalListResponse( this.baseMapper.selectBatchForApproval(page, request, rejectBusinessKey), ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消(直接删除实例),该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if(!CollectionUtils.isEmpty(AllApproveList)){ + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleAllApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), AllApproveList); + } + break; + } + return approvalList; + } + + private List handleAllApprovalListResponse(List approvalList, List allApproveList) { + Map taskMap = new HashMap<>(); + allApproveList.forEach(allApprove -> {taskMap.put(allApprove.getBusinessKey(),allApprove.getStatus());}); + //状态补全 + approvalList.forEach(approval -> { + approval.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(CertificateReportResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } + + private List handleApprovalListResponse(List approvalList, String status){ + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + String prefix = MonitorCodeEnum.getByCode(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"); + Long maxNo = this.baseMapper.selectMaxCode(prefix); //生成证书编号 - String certificateReportNo =NumberGeneratorUtil.getContactNo( - MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() - +DateUtil.format(new Date(),"YYYYMM"),maxNo); + String certificateReportNo =NumberGeneratorUtil.getCode( + MonitorCodeEnum.getByCode(certificateReport.getCalibrationMajor()).getValue(),maxNo); AuthUser authUser = ShiroKit.getUser(); certificateReport.setCreateUser(authUser.getId()); certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setMeasureDeptId(authUser.getDeptId()); certificateReport.setCertificateReportCode(certificateReportNo); } } 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 6c31948..ce076b0 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 @@ -21,9 +21,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.meter.MeterCertificateImport; import com.casic.missiles.dto.meter.MeterStaffRequest; -import com.casic.missiles.enums.BusinessExceptionEnum; -import com.casic.missiles.enums.ExportEnum; -import com.casic.missiles.enums.MeterDictEnum; +import com.casic.missiles.enums.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; @@ -182,7 +180,7 @@ 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()); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),Long.parseLong(userInfo.getDeptId()),idDto.getId(),meterCertificate.getCertificateNo(), MessageTypeEnum.METER_CERTIFICATE.getCode(),MessageTypeEnum.METER_CERTIFICATE.getValue(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); if(messageMapper.insert(remindMessage)>0){ // 新增到消息列表后向用户推送消息 webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); @@ -210,10 +208,18 @@ Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); // 移除已经发送过消息的证书信息 messageIds.forEach(collect::remove); - collect.keySet().forEach(dtoList -> { - // 讲需要发送消息的证书整合 - messageList.addAll(collect.get(dtoList)); - }); + // 讲需要发送消息的证书整合 + for (Long id : collect.keySet()) { + messageList.addAll(collect.get(id)); + } + // 补充业务数据 + for (WorkbenchRemindMessage message : messageList) { + message.setMessageType(MessageTypeEnum.METER_CERTIFICATE.getCode()); + message.setMessageTitle(MessageTypeEnum.METER_CERTIFICATE.getValue()); + message.setStatus(0); + message.setCreateUser(Long.valueOf(MeterRoleTypeEnum.ADMIN.getCode())); + message.setCreateUserName(MeterRoleTypeEnum.ADMIN.getValue()); + } log.info("定时任务新增消息表:"+messageList); messageService.saveBatch(messageList); webSocket.sendMessage(messageList); 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 e0ed48e..663d024 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 @@ -68,6 +68,7 @@ certificateList.forEach(bean->{ MeterWorkbenchResponse certificateResponse = new MeterWorkbenchResponse(); BeanUtils.copyProperties(bean, certificateResponse); + certificateResponse.setMeterAdmin(true); resList.add(certificateResponse); }); }else{ @@ -86,6 +87,7 @@ certificateList.forEach(bean->{ MeterWorkbenchResponse certificateResponse = new MeterWorkbenchResponse(); BeanUtils.copyProperties(bean, certificateResponse); + certificateResponse.setMeterAdmin(false); // 判断证书过期时间于当前时间差多少天 int days = (int) ((DateUtil.parseDate(bean.getValidDate()).getTime() - DateUtil.parseDate(DateUtil.formatDate(new Date())).getTime()) / (1000*3600*24)); if(days>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 4b19dcd..c440253 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 @@ -6,10 +6,11 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.*; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; -import com.casic.missiles.dto.meter.*; +import com.casic.missiles.dto.meter.TraceSupplierListRequest; 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; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -66,20 +68,12 @@ return ReturnUtil.success(traceSupplierService.list(request)); } - @ApiOperation("证书报告导出") + @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()); + public void export(@RequestBody @Valid CertificateReportApprovalRequest request , HttpServletResponse response) throws IOException { + + certificateReportService.originExport(request, response); } @ApiOperation("证书报告保存(保存至草稿箱)") @@ -98,24 +92,25 @@ @ApiOperation("草稿箱文件更新") @PostMapping("/draftUpdate") @ResponseBody - public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.draftUpdate(traceSupplier); + return certificateReportService.draftUpdate(certificateReport); + } - @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @ApiOperation("证书报告提交") @PostMapping("/submit") @ResponseBody - public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + public ReturnDTO certificateReportSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.submitTraceSupplier(request); + return certificateReportService.submitCertificateReport(request); } @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)") @@ -131,16 +126,6 @@ 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 @@ -148,7 +133,7 @@ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds()); + return certificateReportService.deleteBatchTraceSupplier(idsDTO.getIds()); } @ApiOperation("证书报告详情") @@ -161,15 +146,15 @@ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId())); } - @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口") + @ApiOperation("证书报告审批列表及详情中基础信息(分页)") @PostMapping("/approval/listPage") @ResponseBody - public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) { + public ReturnDTO> approvalListPage(@RequestBody @Valid CertificateReportApprovalRequest 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 page = PageFactory.defaultPage(); + List responseList = certificateReportService.approvalListPage(page, request); page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } @@ -185,7 +170,7 @@ if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.approvalDelete(request); + return certificateReportService.approvalDelete(request); } /** @@ -195,13 +180,13 @@ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)") @PostMapping("/failUpdate") @ResponseBody - public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { - Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> { + public ReturnDTO failUpdate(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(certificateReport.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } - return traceSupplierService.failUpdate(traceSupplier); + return certificateReportService.failUpdate(certificateReport); } } 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 af43c35..ad850a4 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 @@ -58,8 +58,8 @@ CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), - LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"); - + LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index a43d9c9..8511d63 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,6 +36,7 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), + CERTIFICATE_REPORT("certificateReport", "certificateReport", "证书报告"), ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java new file mode 100644 index 0000000..8d3da10 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MessageTypeEnum.java @@ -0,0 +1,24 @@ +package com.casic.missiles.enums; + +public enum MessageTypeEnum { + + METER_CERTIFICATE("1", "计量人员证书到期提醒"), + MEASURING_EQUIPMENT("2", "测量设备到期提醒"), + STANDARD_EQUIPMENT("3", "标准装置到期提醒"); + + private String code; + private String value; + + MessageTypeEnum(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/enums/MeterRoleTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java index 9cd0c0d..c6b26c3 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeterRoleTypeEnum.java @@ -2,6 +2,7 @@ public enum MeterRoleTypeEnum { + ADMIN("1", "管理员"), METER_DEPT_ADMIN("1586711737844137956", "计量部门负责人"); private String code; 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 index f84fb2f..7b32914 100644 --- 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 @@ -39,6 +39,19 @@ this.value = value; } + + public static MonitorCodeEnum getByCode(String code) { + try { + for (MonitorCodeEnum temp : values()) { + if (temp.code .equals(code)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + public String getCode() { return code; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java index 0918d8c..f198957 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/NumberGeneratorUtil.java @@ -44,7 +44,43 @@ // 组合 builder.append(prefix); builder.append(num); - return builder.toString(); } + + /** + * 证书报告编号生成 + * @param prefix + * @param nowNum + * @return + */ + + public static synchronized String getCode(String prefix, long nowNum) { + StringBuilder builder = new StringBuilder(); + StringBuilder num = new StringBuilder(); + AtomicLong count = new AtomicLong(nowNum); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); + String datePrefix = format.format(new Date()); + + if(nowNum == 0){ + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + }else{ + String s = String.valueOf(nowNum); + String substring = s.substring(0, s.length() - 3); + //不是当前日期,从0计算后4位 + if (Long.valueOf(datePrefix) > Long.valueOf(substring)) { + count = new AtomicLong(0); + num.append(datePrefix).append("00").append(count.incrementAndGet()); + } else { + num.append(count.incrementAndGet()); + } + } + + // 组合 + builder.append(prefix); + builder.append(num); + return builder.toString(); + } + } 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 add1f9e..38873c7 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 @@ -2,9 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; import com.casic.missiles.dto.business.print.CertificateListRequest; import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,9 +27,12 @@ List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + List selectDraftListForApproval(Page page, @Param("request") CertificateReportApprovalRequest request); + + List selectBatchForApproval(Page page, @Param("request") CertificateReportApprovalRequest request, @Param("businessKey") List businessKey); - @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") - Long selectMaxCode(); + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 9)), 0) from business_certificate_report where certificate_report_code like CONCAT(#{prefix},'%')") + Long selectMaxCode(String prefix); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 718e628..1458b94 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -87,4 +87,80 @@ ) csi ON csi.id=bcr.sampleId + + + + + 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 7aaf965..69c225f 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml @@ -49,6 +49,9 @@ LEFT JOIN sys_dept t3 on t2.dept_id = t3.id and t1.is_del = 0 + + and t2.account = #{request.userId} + and t2.staff_no like CONCAT('%',#{request.staffNo},'%') @@ -77,18 +80,19 @@ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 95dbb48..39f461c 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -112,5 +112,8 @@ String PRINT_STATUS = "printStatus"; //证书类型 String CERTIFICATE_TYPE = "certificateType"; + //证书管理-检校专业 + String CALIBRATION_MAJOR= "calibrationMajor"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java new file mode 100644 index 0000000..63be6bd --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportApprovalRequest.java @@ -0,0 +1,54 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 审批请求体 + */ +@Data +@ApiModel +public class CertificateReportApprovalRequest { + + /** + * 审批状态类型,对应ApprovalStatusEnum + */ + @NotEmpty(message = "审批状态类型不能为空") + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + + @ApiModelProperty(hidden = true) + private Long createUserId; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java new file mode 100644 index 0000000..ae978e9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportRequest.java @@ -0,0 +1,36 @@ +package com.casic.missiles.dto.business.certificate; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class CertificateReportRequest { + + + @ApiModelProperty(value = "证书号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = " 检校类别", dataType = "String") + private String measureCategory; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java new file mode 100644 index 0000000..f9f4490 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/certificate/CertificateReportResponse.java @@ -0,0 +1,115 @@ +package com.casic.missiles.dto.business.certificate; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +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 com.casic.missiles.model.customer.CustomerSampleInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class CertificateReportResponse { + + + @ApiModelProperty(value = "证书报告id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "证书报告编号", dataType = "String") + private String certificateReportCode; + + + @ApiModelProperty(value = "证书报告名称", dataType = "String") + private String certificateReportName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) + private String calibrationMajor; + +// @ApiModelProperty(value = "出具日期", dataType = "String") +// private String issuanceDate; +// +// +// @ApiModelProperty(value = "证书有效期", dataType = "String") +// private String expirationDate; +// +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; +// +// +// @ApiModelProperty(value = "原始记录id", dataType = "Long") +// private Long originalRecordId; +// +// +// @ApiModelProperty(value = "可打印状态", dataType = "String") +// private String printStatus; +// +// +// @ApiModelProperty(value = "打印次数", dataType = "Integer") +// private Integer printNum; + + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + private String approvalStatus; + +// @ApiModelProperty(value = "备注", dataType = "String") +// private String remark; +// +// private Long createUser; +// + private String createTime; + + +// @ApiModelProperty(value = "检校专业名称", dataType = "String") +// private String calibrationMajorName; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + /** + * 任务id + */ + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; + +} 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 1e0c46f..d879286 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 @@ -1,8 +1,11 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelProperty; 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 io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -72,6 +75,7 @@ */ @TableField("calibration_major") @ApiModelProperty(value = "检校专业", dataType = "String") + @DictCodeField(message = "检校专业不合法", cacheName = MeterDictCode.CALIBRATION_MAJOR) private String calibrationMajor; /** @@ -152,15 +156,24 @@ private String measurePersonId; /** - * 可打印状态(字典code) + * 审批状态(字典code) */ @TableField("approval_status") + @ApiModelProperty(value = "审批状态", dataType = "String") + @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS) private String approvalStatus; @TableField("remark") @ApiModelProperty(value = "备注", dataType = "String") private String remark; + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @TableField("process_id") + private String processId; + @TableField("is_del") private Boolean isDel; @@ -177,4 +190,11 @@ @ApiModelProperty(value = "原始记录信息", dataType = "Object") private BusinessOriginalRecord businessOriginalRecord; + @TableField(exist = false) + @ApiModelProperty(value = "检校专业名称", dataType = "String") + private String calibrationMajorName; + + @TableField(exist = false) + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; } 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 5e30e4f..11942ff 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,10 +96,13 @@ @TableField("update_time") private String updateTime; - public WorkbenchRemindMessage(Long remindId, Long businessId, String businessCode, String messageContent, Integer status, Long createUser, String createUserName) { + public WorkbenchRemindMessage(Long remindId, Long remindDeptId, Long businessId, String businessCode, String messageType, String messageTitle, String messageContent, Integer status, Long createUser, String createUserName) { this.remindId = remindId; + this.remindDeptId = remindDeptId; this.businessId = businessId; this.businessCode = businessCode; + this.messageType = messageType; + this.messageTitle = messageTitle; this.messageContent = messageContent; this.status = status; this.createUser = createUser; 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 59587af..c43341f 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,27 +1,46 @@ 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 cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.BaseApprovalSubmitRequest; 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.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; +import com.casic.missiles.dto.business.originRecord.OriginRecordResponse; +import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.*; 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.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessCertificateReportService; import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.flowable.ApprovalOperateService; +import com.casic.missiles.utils.ConvertUtils; +import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; -import java.util.Date; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -37,6 +56,18 @@ @Autowired private IBusinessOriginalRecordService originalRecordService; + @Resource + private AbstractDictService dictService; + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Resource + private TaskService taskService; + @Resource + private RuntimeService runtimeService; + @Resource + private IBaseExportService iBaseExportService; /** * 保存证书报告信息 * @param certificateReport @@ -51,6 +82,43 @@ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /*** + * 审批操作-删除,包括删流程和数据库记录 + * @param request + * @return + */ + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if(ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()){ + //删除数据库记录 + if(this.baseMapper.deleteById(request.getId()) > 0){ + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO draftUpdate(BusinessCertificateReport certificateReport) { + if(this.baseMapper.updateById(certificateReport)>0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 批量删除 + * @param ids + * @return + */ + @Override + public ReturnDTO deleteBatchTraceSupplier(List ids) { + + return baseMapper.deleteBatchIds(ids) > 0?ReturnUtil.success(): + ReturnUtil.failed("删除失败"); + } + /** * 证书报告详情 * @param id @@ -69,16 +137,199 @@ return certificateReport; } - private void initCertificateReport(BusinessCertificateReport certificateReport) { + /** + * 提交证书报告 + * @param request + * @return + */ + @Override + public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { + //1.根据表单id获取流程定义id + String formId = request.getFormId(); + //2.根据流程定义id启动流程实例 + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if(ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()){ + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance)returnDTO.getData(); + BusinessCertificateReport certificateReport = new BusinessCertificateReport(); + certificateReport.setId(request.getId()); + certificateReport.setApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + certificateReport.setProcessId(processInstance.getId()); + int row = this.baseMapper.updateById(certificateReport); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.CERTIFICATE_REPORT_SUBMIT_FAILED.getCode(), BusinessExceptionEnum.CERTIFICATE_REPORT_SUBMIT_FAILED.getMessage()); + } + return ReturnUtil.success(); + } - Long maxNo = this.baseMapper.selectMaxCode(); + /** + * 审批状态列表查询 + * @param page + * @param request + * @return + */ + @Override + public List approvalListPage(Page page, CertificateReportApprovalRequest request) { + //登录用户 + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + return handleApprovalStatus(page, request); + } + + /** + * 驳回后更新 + * @param certificateReport + * @return + */ + @Override + public ReturnDTO failUpdate(BusinessCertificateReport certificateReport) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (this.baseMapper.updateById(certificateReport) > 0) { + //发起人审批通过 + Task task = taskService.createTaskQuery() + .processInstanceId(certificateReport.getProcessId()) + .active() + .singleResult(); + taskService.complete(task.getId()); + //更新状态为审批中 + runtimeService.updateBusinessStatus(task.getProcessInstanceId(), ApprovalStatusEnum.IN_APPROVED); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public void originExport(CertificateReportApprovalRequest request, HttpServletResponse response) { + try { + //toDo: +// List certificateReportResponses = this.certificateReport(request); +// for (OriginRecordResponse originRecordResponse : originExportList) { +// //字典值转换 +// DictCodeUtils.convertDictCodeToName(originRecordResponse); +// } +// iBaseExportService.exportExcel(response, CertificateReportResponse.class, originExportList, ExportEnum.CERTIFICATE_REPORT.getSheetName()); + } catch (Exception e) { + log.error("证书报告导出出现异常,异常信息为{}", e); + } + } + + private List handleApprovalStatus(Page page, CertificateReportApprovalRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + approvalList = handleApprovalListResponse(this.baseMapper.selectDraftListForApproval(page, request), ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if(!CollectionUtils.isEmpty(toBeApprovedList)){ + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if(String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())){ + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse( this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(rejectBusinessKey)){ + rejectApprovalList = handleApprovalListResponse( this.baseMapper.selectBatchForApproval(page, request, rejectBusinessKey), ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消(直接删除实例),该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if(!CollectionUtils.isEmpty(AllApproveList)){ + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if(!CollectionUtils.isEmpty(businessKeys)){ + approvalList = handleAllApprovalListResponse(this.baseMapper.selectBatchForApproval(page, request, businessKeys), AllApproveList); + } + break; + } + return approvalList; + } + + private List handleAllApprovalListResponse(List approvalList, List allApproveList) { + Map taskMap = new HashMap<>(); + allApproveList.forEach(allApprove -> {taskMap.put(allApprove.getBusinessKey(),allApprove.getStatus());}); + //状态补全 + approvalList.forEach(approval -> { + approval.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(CertificateReportResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } + + private List handleApprovalListResponse(List approvalList, String status){ + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + } + + private void initCertificateReport(BusinessCertificateReport certificateReport) { + String prefix = MonitorCodeEnum.getByCode(certificateReport.getCalibrationMajor()).getValue() + +DateUtil.format(new Date(),"YYYYMM"); + Long maxNo = this.baseMapper.selectMaxCode(prefix); //生成证书编号 - String certificateReportNo =NumberGeneratorUtil.getContactNo( - MonitorCodeEnum.valueOf(certificateReport.getCalibrationMajor()).getValue() - +DateUtil.format(new Date(),"YYYYMM"),maxNo); + String certificateReportNo =NumberGeneratorUtil.getCode( + MonitorCodeEnum.getByCode(certificateReport.getCalibrationMajor()).getValue(),maxNo); AuthUser authUser = ShiroKit.getUser(); certificateReport.setCreateUser(authUser.getId()); certificateReport.setMeasurePersonId(authUser.getId()+""); + certificateReport.setMeasureDeptId(authUser.getDeptId()); certificateReport.setCertificateReportCode(certificateReportNo); } } 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 6c31948..ce076b0 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 @@ -21,9 +21,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.meter.MeterCertificateImport; import com.casic.missiles.dto.meter.MeterStaffRequest; -import com.casic.missiles.enums.BusinessExceptionEnum; -import com.casic.missiles.enums.ExportEnum; -import com.casic.missiles.enums.MeterDictEnum; +import com.casic.missiles.enums.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.meter.MeterCertificateExpireMessageMapper; import com.casic.missiles.mapper.meter.MeterCertificateMapper; @@ -182,7 +180,7 @@ 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()); + WorkbenchRemindMessage remindMessage = new WorkbenchRemindMessage(userInfo.getId(),Long.parseLong(userInfo.getDeptId()),idDto.getId(),meterCertificate.getCertificateNo(), MessageTypeEnum.METER_CERTIFICATE.getCode(),MessageTypeEnum.METER_CERTIFICATE.getValue(),meterCertificate.getCertificateName(),0,user.getId(),user.getName()); if(messageMapper.insert(remindMessage)>0){ // 新增到消息列表后向用户推送消息 webSocket.sendOneMessage(String.valueOf(userInfo.getId()),JSONObject.toJSONString(remindMessage)); @@ -210,10 +208,18 @@ Map> collect = list.parallelStream().collect(Collectors.groupingBy(WorkbenchRemindMessage::getBusinessId)); // 移除已经发送过消息的证书信息 messageIds.forEach(collect::remove); - collect.keySet().forEach(dtoList -> { - // 讲需要发送消息的证书整合 - messageList.addAll(collect.get(dtoList)); - }); + // 讲需要发送消息的证书整合 + for (Long id : collect.keySet()) { + messageList.addAll(collect.get(id)); + } + // 补充业务数据 + for (WorkbenchRemindMessage message : messageList) { + message.setMessageType(MessageTypeEnum.METER_CERTIFICATE.getCode()); + message.setMessageTitle(MessageTypeEnum.METER_CERTIFICATE.getValue()); + message.setStatus(0); + message.setCreateUser(Long.valueOf(MeterRoleTypeEnum.ADMIN.getCode())); + message.setCreateUserName(MeterRoleTypeEnum.ADMIN.getValue()); + } log.info("定时任务新增消息表:"+messageList); messageService.saveBatch(messageList); webSocket.sendMessage(messageList); 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 e0ed48e..663d024 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 @@ -68,6 +68,7 @@ certificateList.forEach(bean->{ MeterWorkbenchResponse certificateResponse = new MeterWorkbenchResponse(); BeanUtils.copyProperties(bean, certificateResponse); + certificateResponse.setMeterAdmin(true); resList.add(certificateResponse); }); }else{ @@ -86,6 +87,7 @@ certificateList.forEach(bean->{ MeterWorkbenchResponse certificateResponse = new MeterWorkbenchResponse(); BeanUtils.copyProperties(bean, certificateResponse); + certificateResponse.setMeterAdmin(false); // 判断证书过期时间于当前时间差多少天 int days = (int) ((DateUtil.parseDate(bean.getValidDate()).getTime() - DateUtil.parseDate(DateUtil.formatDate(new Date())).getTime()) / (1000*3600*24)); if(days>0){ 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 33ac64a..89787de 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,9 +1,18 @@ package com.casic.missiles.service.business; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.BaseApprovalSubmitRequest; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; +import com.casic.missiles.dto.business.certificate.CertificateReportResponse; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; import com.casic.missiles.model.business.BusinessCertificateReport; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 业务管理-证书报告 服务类 @@ -17,4 +26,19 @@ ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport); BusinessCertificateReport certificateReportDetail(Long id); + + List approvalListPage(Page page, CertificateReportApprovalRequest request); + + ReturnDTO approvalDelete(ApprovalDeleteRequest request); + + ReturnDTO deleteBatchTraceSupplier(List ids); + + ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request); + + ReturnDTO failUpdate(BusinessCertificateReport certificateReport); + + ReturnDTO draftUpdate(BusinessCertificateReport certificateReport); + + void originExport(CertificateReportApprovalRequest request, HttpServletResponse response); + }