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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

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

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

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

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

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

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java index e2a7f92..4b19dcd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java @@ -1,18 +1,207 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.*; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.dto.meter.*; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.ExportEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.service.business.IBusinessCertificateReportService; +import com.casic.missiles.service.meter.IMeterTraceSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** *

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

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

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

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

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

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

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

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

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

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

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

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

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

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

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

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

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

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

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

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

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

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

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

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

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

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

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

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

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

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

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

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

@@ -23,4 +24,7 @@ + @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report") + Long selectMaxCode(); + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml index 3f2b326..b4d8744 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml @@ -7,7 +7,7 @@ - + @@ -24,13 +24,13 @@ - + bor.* SELECT - , - cs.sample_no AS sampleNo, - cs.sample_name AS sampleName, - cs.sample_model AS samplemModel, - cs.manufacturing_no AS manufacturingNo + , + cs.sample_no AS sampleNo, + cs.sample_name AS sampleName, + cs.sample_model AS sampleModel, + cs.manufacturing_no AS manufacturingNo, + su.name AS createUserName FROM business_original_record bor LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id + LEFT JOIN sys_user su ON su.id = bor.create_user WHERE bor.is_del =0 and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%') @@ -84,12 +86,19 @@ and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%') - - and bor.measure_category = #{request.calibrationCategory} + + and bor.measure_category = #{request.measureCategory} and bor.create_user = #{request.createUser} + + + AND bor.id IN + + #{item} + + ORDER BY bor.create_time DESC diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java index 6b7ddc9..db821a7 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class EnvironmentListRequest { @@ -19,4 +21,8 @@ @ApiModelProperty(value = "结束时间", dataType = "String") private String endTime; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java index cc0dac1..01759aa 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel public class OriginRecordRequest { @@ -24,8 +26,11 @@ private String manufacturingNo; @ApiModelProperty(value = "校验类别", dataType = "String") - private String calibrationCategory; + private String measureCategory; @ApiModelProperty(value = "创建人", dataType = "String") private String createUser; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java index 4c0521d..2dd8e21 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/originRecord/OriginRecordResponse.java @@ -7,6 +7,8 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,8 +50,12 @@ private String manufacturingNo; @ApiModelProperty(value = "检校类别", dataType = "String") + @DictCodeField(message = "检校类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureCategory; + + @ApiModelProperty(value = "检校类别", dataType = "String") @ExcelProperty(value = "检校类别", order = 6) - private String calibrationCategory; + private String measureCategoryName; @ApiModelProperty(value = "检校时间", dataType = "String") private String calibrationTime; @@ -84,7 +90,7 @@ @ApiModelProperty(value = "创建人", dataType = "String") @ExcelProperty(value = "创建人", order = 7) - private String createUser; + private String createUserName; @ApiModelProperty(value = "创建时间", dataType = "String") @ExcelProperty(value = "创建时间", order = 8) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index 122382c..1e0c46f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -12,7 +13,7 @@ * 业务管理-证书报告 *

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

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

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

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

* - * @author wangpeng + * @author zt * @since 2023-02-02 */ public interface IBusinessCertificateReportService extends IService { + ReturnDTO saveCertificateReport(BusinessCertificateReport certificateReport); + + BusinessCertificateReport certificateReportDetail(Long id); }