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 76c1ee7..1749064 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 @@ -57,8 +57,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 76c1ee7..1749064 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 @@ -57,8 +57,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 76c1ee7..1749064 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 @@ -57,8 +57,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/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 76c1ee7..1749064 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 @@ -57,8 +57,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/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 76c1ee7..1749064 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 @@ -57,8 +57,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/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 76c1ee7..1749064 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 @@ -57,8 +57,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/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 76c1ee7..1749064 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 @@ -57,8 +57,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/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-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 76c1ee7..1749064 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 @@ -57,8 +57,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/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-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 76c1ee7..1749064 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 @@ -57,8 +57,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/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-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 76c1ee7..1749064 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 @@ -57,8 +57,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/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-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 76c1ee7..1749064 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 @@ -57,8 +57,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/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-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 76c1ee7..1749064 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 @@ -57,8 +57,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/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-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-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 76c1ee7..1749064 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 @@ -57,8 +57,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/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-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-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/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); + }