diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java index f7f348b..a75b8ad 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java @@ -25,7 +25,6 @@ return null; } else { T targetObject = null; - try { targetObject = target.newInstance(); BeanUtil.copyProperties(source, targetObject); @@ -42,10 +41,8 @@ return null; } else { ArrayList targetList = new ArrayList(sourceList.size()); - try { Iterator var3 = sourceList.iterator(); - while(var3.hasNext()) { Object source = var3.next(); T targetObject = target.newInstance(); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java index f7f348b..a75b8ad 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java @@ -25,7 +25,6 @@ return null; } else { T targetObject = null; - try { targetObject = target.newInstance(); BeanUtil.copyProperties(source, targetObject); @@ -42,10 +41,8 @@ return null; } else { ArrayList targetList = new ArrayList(sourceList.size()); - try { Iterator var3 = sourceList.iterator(); - while(var3.hasNext()) { Object source = var3.next(); T targetObject = target.newInstance(); 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 17206ce..fc9330e 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 @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,8 @@ */ public interface BusinessCertificateReportMapper extends BaseMapper { + List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + + + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java index f7f348b..a75b8ad 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java @@ -25,7 +25,6 @@ return null; } else { T targetObject = null; - try { targetObject = target.newInstance(); BeanUtil.copyProperties(source, targetObject); @@ -42,10 +41,8 @@ return null; } else { ArrayList targetList = new ArrayList(sourceList.size()); - try { Iterator var3 = sourceList.iterator(); - while(var3.hasNext()) { Object source = var3.next(); T targetObject = target.newInstance(); 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 17206ce..fc9330e 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 @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,8 @@ */ public interface BusinessCertificateReportMapper extends BaseMapper { + List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + + + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 1fc6133..13456e6 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -4,27 +4,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -32,4 +32,45 @@ id, certificate_report_code, certificate_report_name, certificate_report_category, calibration_major, issuance_date, expiration_date, template_id, sign_id, approval_sign_id, certificate_report_file, original_record_id, print_status, print_num, remark, is_del, create_user, create_time, update_time + + diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java index f7f348b..a75b8ad 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java @@ -25,7 +25,6 @@ return null; } else { T targetObject = null; - try { targetObject = target.newInstance(); BeanUtil.copyProperties(source, targetObject); @@ -42,10 +41,8 @@ return null; } else { ArrayList targetList = new ArrayList(sourceList.size()); - try { Iterator var3 = sourceList.iterator(); - while(var3.hasNext()) { Object source = var3.next(); T targetObject = target.newInstance(); 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 17206ce..fc9330e 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 @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,8 @@ */ public interface BusinessCertificateReportMapper extends BaseMapper { + List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + + + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 1fc6133..13456e6 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -4,27 +4,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -32,4 +32,45 @@ id, certificate_report_code, certificate_report_name, certificate_report_category, calibration_major, issuance_date, expiration_date, template_id, sign_id, approval_sign_id, certificate_report_file, original_record_id, print_status, print_num, remark, is_del, create_user, create_time, update_time + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 82b22fd..95dbb48 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -108,4 +108,9 @@ String ORDER_STATUS = "orderStatus"; //检测状态 String MEASURE_STATUS = "measureStatus"; + //打印状态 + String PRINT_STATUS = "printStatus"; + //证书类型 + String CERTIFICATE_TYPE = "certificateType"; + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java index f7f348b..a75b8ad 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java @@ -25,7 +25,6 @@ return null; } else { T targetObject = null; - try { targetObject = target.newInstance(); BeanUtil.copyProperties(source, targetObject); @@ -42,10 +41,8 @@ return null; } else { ArrayList targetList = new ArrayList(sourceList.size()); - try { Iterator var3 = sourceList.iterator(); - while(var3.hasNext()) { Object source = var3.next(); T targetObject = target.newInstance(); 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 17206ce..fc9330e 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 @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,8 @@ */ public interface BusinessCertificateReportMapper extends BaseMapper { + List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + + + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 1fc6133..13456e6 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -4,27 +4,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -32,4 +32,45 @@ id, certificate_report_code, certificate_report_name, certificate_report_category, calibration_major, issuance_date, expiration_date, template_id, sign_id, approval_sign_id, certificate_report_file, original_record_id, print_status, print_num, remark, is_del, create_user, create_time, update_time + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 82b22fd..95dbb48 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -108,4 +108,9 @@ String ORDER_STATUS = "orderStatus"; //检测状态 String MEASURE_STATUS = "measureStatus"; + //打印状态 + String PRINT_STATUS = "printStatus"; + //证书类型 + String CERTIFICATE_TYPE = "certificateType"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java index fabeb12..fff240e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java @@ -16,6 +16,7 @@ @Data @ApiModel public class SampleHandOutDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java index f7f348b..a75b8ad 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java @@ -25,7 +25,6 @@ return null; } else { T targetObject = null; - try { targetObject = target.newInstance(); BeanUtil.copyProperties(source, targetObject); @@ -42,10 +41,8 @@ return null; } else { ArrayList targetList = new ArrayList(sourceList.size()); - try { Iterator var3 = sourceList.iterator(); - while(var3.hasNext()) { Object source = var3.next(); T targetObject = target.newInstance(); 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 17206ce..fc9330e 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 @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,8 @@ */ public interface BusinessCertificateReportMapper extends BaseMapper { + List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + + + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 1fc6133..13456e6 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -4,27 +4,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -32,4 +32,45 @@ id, certificate_report_code, certificate_report_name, certificate_report_category, calibration_major, issuance_date, expiration_date, template_id, sign_id, approval_sign_id, certificate_report_file, original_record_id, print_status, print_num, remark, is_del, create_user, create_time, update_time + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 82b22fd..95dbb48 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -108,4 +108,9 @@ String ORDER_STATUS = "orderStatus"; //检测状态 String MEASURE_STATUS = "measureStatus"; + //打印状态 + String PRINT_STATUS = "printStatus"; + //证书类型 + String CERTIFICATE_TYPE = "certificateType"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java index fabeb12..fff240e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java @@ -16,6 +16,7 @@ @Data @ApiModel public class SampleHandOutDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java new file mode 100644 index 0000000..7f3be53 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java @@ -0,0 +1,46 @@ +package com.casic.missiles.dto.business.print; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("设备接收") +public class CertificateListRequest { + + @ApiModelProperty(value = "表单id(前端自定义)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "证书编号", dataType = "String") + private String certificateNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String cutomerName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "证书类型(非类别)", dataType = "String") + private String certificateClass; + + @ApiModelProperty(value = "未打印(传0,否则不传)", dataType = "String") + private String printSatus; + + @ApiModelProperty(value = "审批状态", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "创建人id(前端不需要传)", dataType = "String") + private Long createUserId; + + @ApiModelProperty(value = "导出ids", dataType = "List") + private List ids; + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java index f7f348b..a75b8ad 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java @@ -25,7 +25,6 @@ return null; } else { T targetObject = null; - try { targetObject = target.newInstance(); BeanUtil.copyProperties(source, targetObject); @@ -42,10 +41,8 @@ return null; } else { ArrayList targetList = new ArrayList(sourceList.size()); - try { Iterator var3 = sourceList.iterator(); - while(var3.hasNext()) { Object source = var3.next(); T targetObject = target.newInstance(); 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 17206ce..fc9330e 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 @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,8 @@ */ public interface BusinessCertificateReportMapper extends BaseMapper { + List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + + + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 1fc6133..13456e6 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -4,27 +4,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -32,4 +32,45 @@ id, certificate_report_code, certificate_report_name, certificate_report_category, calibration_major, issuance_date, expiration_date, template_id, sign_id, approval_sign_id, certificate_report_file, original_record_id, print_status, print_num, remark, is_del, create_user, create_time, update_time + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 82b22fd..95dbb48 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -108,4 +108,9 @@ String ORDER_STATUS = "orderStatus"; //检测状态 String MEASURE_STATUS = "measureStatus"; + //打印状态 + String PRINT_STATUS = "printStatus"; + //证书类型 + String CERTIFICATE_TYPE = "certificateType"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java index fabeb12..fff240e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java @@ -16,6 +16,7 @@ @Data @ApiModel public class SampleHandOutDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java new file mode 100644 index 0000000..7f3be53 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java @@ -0,0 +1,46 @@ +package com.casic.missiles.dto.business.print; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("设备接收") +public class CertificateListRequest { + + @ApiModelProperty(value = "表单id(前端自定义)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "证书编号", dataType = "String") + private String certificateNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String cutomerName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "证书类型(非类别)", dataType = "String") + private String certificateClass; + + @ApiModelProperty(value = "未打印(传0,否则不传)", dataType = "String") + private String printSatus; + + @ApiModelProperty(value = "审批状态", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "创建人id(前端不需要传)", dataType = "String") + private Long createUserId; + + @ApiModelProperty(value = "导出ids", dataType = "List") + private List ids; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java new file mode 100644 index 0000000..e8c437c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java @@ -0,0 +1,78 @@ +package com.casic.missiles.dto.business.print; + +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; + +@Data +@ApiModel("证书打印返回列表") +public class CertificateListResponse { + + private Long id; + + @ApiModelProperty(value = "证书编号", dataType = "String") + private String certificateNo; + + @ApiModelProperty(value = "证书名称", dataType = "String") + private String certificateName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "校验类别", dataType = "String") + private String measureType; + + @ApiModelProperty(value = "校验类别", dataType = "String") + @DictCodeField(message = "校验类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureTypeName; + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + @ApiModelProperty(value = "证书类型", dataType = "String") + @DictCodeField(message = "证书类型不合法", cacheName = MeterDictCode.CERTIFICATE_TYPE) + private String certificateType; + + @ApiModelProperty(value = "证书类型名称", dataType = "String") + private String certificateTypeName; + + @ApiModelProperty(value = "打印状况", dataType = "String") + @DictCodeField(message = "打印状况不合法", cacheName = MeterDictCode.PRINT_STATUS) + private String printStatus; + + @ApiModelProperty(value = "打印状态", dataType = "String") + private String printStatusName; + + @ApiModelProperty(value = "打印次数", dataType = "String") + private String printNum; + + @ApiModelProperty(value = "生成时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "审批状态", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "任务id", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "审批状态", dataType = "Integer") + private Integer decisionItem; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java index f7f348b..a75b8ad 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java @@ -25,7 +25,6 @@ return null; } else { T targetObject = null; - try { targetObject = target.newInstance(); BeanUtil.copyProperties(source, targetObject); @@ -42,10 +41,8 @@ return null; } else { ArrayList targetList = new ArrayList(sourceList.size()); - try { Iterator var3 = sourceList.iterator(); - while(var3.hasNext()) { Object source = var3.next(); T targetObject = target.newInstance(); 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 17206ce..fc9330e 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 @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,8 @@ */ public interface BusinessCertificateReportMapper extends BaseMapper { + List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + + + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 1fc6133..13456e6 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -4,27 +4,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -32,4 +32,45 @@ id, certificate_report_code, certificate_report_name, certificate_report_category, calibration_major, issuance_date, expiration_date, template_id, sign_id, approval_sign_id, certificate_report_file, original_record_id, print_status, print_num, remark, is_del, create_user, create_time, update_time + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 82b22fd..95dbb48 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -108,4 +108,9 @@ String ORDER_STATUS = "orderStatus"; //检测状态 String MEASURE_STATUS = "measureStatus"; + //打印状态 + String PRINT_STATUS = "printStatus"; + //证书类型 + String CERTIFICATE_TYPE = "certificateType"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java index fabeb12..fff240e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java @@ -16,6 +16,7 @@ @Data @ApiModel public class SampleHandOutDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java new file mode 100644 index 0000000..7f3be53 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java @@ -0,0 +1,46 @@ +package com.casic.missiles.dto.business.print; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("设备接收") +public class CertificateListRequest { + + @ApiModelProperty(value = "表单id(前端自定义)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "证书编号", dataType = "String") + private String certificateNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String cutomerName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "证书类型(非类别)", dataType = "String") + private String certificateClass; + + @ApiModelProperty(value = "未打印(传0,否则不传)", dataType = "String") + private String printSatus; + + @ApiModelProperty(value = "审批状态", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "创建人id(前端不需要传)", dataType = "String") + private Long createUserId; + + @ApiModelProperty(value = "导出ids", dataType = "List") + private List ids; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java new file mode 100644 index 0000000..e8c437c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java @@ -0,0 +1,78 @@ +package com.casic.missiles.dto.business.print; + +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; + +@Data +@ApiModel("证书打印返回列表") +public class CertificateListResponse { + + private Long id; + + @ApiModelProperty(value = "证书编号", dataType = "String") + private String certificateNo; + + @ApiModelProperty(value = "证书名称", dataType = "String") + private String certificateName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "校验类别", dataType = "String") + private String measureType; + + @ApiModelProperty(value = "校验类别", dataType = "String") + @DictCodeField(message = "校验类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureTypeName; + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + @ApiModelProperty(value = "证书类型", dataType = "String") + @DictCodeField(message = "证书类型不合法", cacheName = MeterDictCode.CERTIFICATE_TYPE) + private String certificateType; + + @ApiModelProperty(value = "证书类型名称", dataType = "String") + private String certificateTypeName; + + @ApiModelProperty(value = "打印状况", dataType = "String") + @DictCodeField(message = "打印状况不合法", cacheName = MeterDictCode.PRINT_STATUS) + private String printStatus; + + @ApiModelProperty(value = "打印状态", dataType = "String") + private String printStatusName; + + @ApiModelProperty(value = "打印次数", dataType = "String") + private String printNum; + + @ApiModelProperty(value = "生成时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "审批状态", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "任务id", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "审批状态", dataType = "Integer") + private Integer decisionItem; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificatePrintServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificatePrintServiceImpl.java new file mode 100644 index 0000000..79ed0bf --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificatePrintServiceImpl.java @@ -0,0 +1,147 @@ +package com.casic.missiles.service.Impl.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MeterDictEnum; +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.meter.MeterTraceSupplier; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import com.casic.missiles.utils.ConvertUtils; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.*; +import java.util.stream.Collectors; + +@Service +@AllArgsConstructor +public class BusinessCertificatePrintServiceImpl extends ServiceImpl implements IBusinessCertificatePrintService { + + private final IBaseApprovalService baseApprovalService; + private final AbstractDictService dictService; + + @Override + public Page CertificatePrintlistPage(CertificateListRequest request, Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + return handleApprovalStatus(page, request); + } + + private Page handleApprovalStatus(Page page, CertificateListRequest request) { + Page approvalList = PageFactory.defaultPage(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.getRecords().forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; +// //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } +// break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + Page rejectApprovalList = PageFactory.defaultPage(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = this.baseMapper.selectBatchForApprovalList(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.getRecords().addAll(rejectApprovalList.getRecords()); + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + } + + private Page handleAllApprovalListResponse(Page approvalList, List list, List allApproveList) { + + Map taskMap = allApproveList.stream().collect(Collectors.toMap(AllApproveDTO::getBusinessKey,AllApproveDTO::getStatus)); + approvalList.setRecords(ConvertUtils.sourceToTarget(list, CertificateListResponse.class)); + //状态补全 + approvalList.getRecords().forEach(approval -> { + approval.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + approvalList.setRecords(approvalList.getRecords().stream().sorted(Comparator.comparing(CertificateListResponse::getCreateTime).reversed()).collect(Collectors.toList())); + return approvalList; + } + + private Page handleApprovalListResponse(Page approvalList, List list, String status) { + approvalList.setRecords(ConvertUtils.sourceToTarget(list, CertificateListResponse.class)); + approvalList.getRecords().stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + } + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java index f7f348b..a75b8ad 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java @@ -25,7 +25,6 @@ return null; } else { T targetObject = null; - try { targetObject = target.newInstance(); BeanUtil.copyProperties(source, targetObject); @@ -42,10 +41,8 @@ return null; } else { ArrayList targetList = new ArrayList(sourceList.size()); - try { Iterator var3 = sourceList.iterator(); - while(var3.hasNext()) { Object source = var3.next(); T targetObject = target.newInstance(); 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 17206ce..fc9330e 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 @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,8 @@ */ public interface BusinessCertificateReportMapper extends BaseMapper { + List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + + + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 1fc6133..13456e6 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -4,27 +4,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -32,4 +32,45 @@ id, certificate_report_code, certificate_report_name, certificate_report_category, calibration_major, issuance_date, expiration_date, template_id, sign_id, approval_sign_id, certificate_report_file, original_record_id, print_status, print_num, remark, is_del, create_user, create_time, update_time + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 82b22fd..95dbb48 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -108,4 +108,9 @@ String ORDER_STATUS = "orderStatus"; //检测状态 String MEASURE_STATUS = "measureStatus"; + //打印状态 + String PRINT_STATUS = "printStatus"; + //证书类型 + String CERTIFICATE_TYPE = "certificateType"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java index fabeb12..fff240e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java @@ -16,6 +16,7 @@ @Data @ApiModel public class SampleHandOutDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java new file mode 100644 index 0000000..7f3be53 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java @@ -0,0 +1,46 @@ +package com.casic.missiles.dto.business.print; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("设备接收") +public class CertificateListRequest { + + @ApiModelProperty(value = "表单id(前端自定义)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "证书编号", dataType = "String") + private String certificateNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String cutomerName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "证书类型(非类别)", dataType = "String") + private String certificateClass; + + @ApiModelProperty(value = "未打印(传0,否则不传)", dataType = "String") + private String printSatus; + + @ApiModelProperty(value = "审批状态", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "创建人id(前端不需要传)", dataType = "String") + private Long createUserId; + + @ApiModelProperty(value = "导出ids", dataType = "List") + private List ids; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java new file mode 100644 index 0000000..e8c437c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java @@ -0,0 +1,78 @@ +package com.casic.missiles.dto.business.print; + +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; + +@Data +@ApiModel("证书打印返回列表") +public class CertificateListResponse { + + private Long id; + + @ApiModelProperty(value = "证书编号", dataType = "String") + private String certificateNo; + + @ApiModelProperty(value = "证书名称", dataType = "String") + private String certificateName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "校验类别", dataType = "String") + private String measureType; + + @ApiModelProperty(value = "校验类别", dataType = "String") + @DictCodeField(message = "校验类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureTypeName; + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + @ApiModelProperty(value = "证书类型", dataType = "String") + @DictCodeField(message = "证书类型不合法", cacheName = MeterDictCode.CERTIFICATE_TYPE) + private String certificateType; + + @ApiModelProperty(value = "证书类型名称", dataType = "String") + private String certificateTypeName; + + @ApiModelProperty(value = "打印状况", dataType = "String") + @DictCodeField(message = "打印状况不合法", cacheName = MeterDictCode.PRINT_STATUS) + private String printStatus; + + @ApiModelProperty(value = "打印状态", dataType = "String") + private String printStatusName; + + @ApiModelProperty(value = "打印次数", dataType = "String") + private String printNum; + + @ApiModelProperty(value = "生成时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "审批状态", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "任务id", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "审批状态", dataType = "Integer") + private Integer decisionItem; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificatePrintServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificatePrintServiceImpl.java new file mode 100644 index 0000000..79ed0bf --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificatePrintServiceImpl.java @@ -0,0 +1,147 @@ +package com.casic.missiles.service.Impl.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MeterDictEnum; +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.meter.MeterTraceSupplier; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import com.casic.missiles.utils.ConvertUtils; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.*; +import java.util.stream.Collectors; + +@Service +@AllArgsConstructor +public class BusinessCertificatePrintServiceImpl extends ServiceImpl implements IBusinessCertificatePrintService { + + private final IBaseApprovalService baseApprovalService; + private final AbstractDictService dictService; + + @Override + public Page CertificatePrintlistPage(CertificateListRequest request, Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + return handleApprovalStatus(page, request); + } + + private Page handleApprovalStatus(Page page, CertificateListRequest request) { + Page approvalList = PageFactory.defaultPage(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.getRecords().forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; +// //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } +// break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + Page rejectApprovalList = PageFactory.defaultPage(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = this.baseMapper.selectBatchForApprovalList(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.getRecords().addAll(rejectApprovalList.getRecords()); + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + } + + private Page handleAllApprovalListResponse(Page approvalList, List list, List allApproveList) { + + Map taskMap = allApproveList.stream().collect(Collectors.toMap(AllApproveDTO::getBusinessKey,AllApproveDTO::getStatus)); + approvalList.setRecords(ConvertUtils.sourceToTarget(list, CertificateListResponse.class)); + //状态补全 + approvalList.getRecords().forEach(approval -> { + approval.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + approvalList.setRecords(approvalList.getRecords().stream().sorted(Comparator.comparing(CertificateListResponse::getCreateTime).reversed()).collect(Collectors.toList())); + return approvalList; + } + + private Page handleApprovalListResponse(Page approvalList, List list, String status) { + approvalList.setRecords(ConvertUtils.sourceToTarget(list, CertificateListResponse.class)); + approvalList.getRecords().stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessDispatchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessDispatchServiceImpl.java index 9e7a6db..5eb0a4b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessDispatchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessDispatchServiceImpl.java @@ -130,7 +130,7 @@ @Override public ReturnDTO statusChange(DeviceStatusChangeDTO deviceStatusChangeDTO) { - Integer updateFalg = this.statusChangeUpdator(deviceStatusChangeDTO); + Integer updateFalg = this.statusChangeUpdator(deviceStatusChangeDTO,false); if (updateFalg > 0) { return ReturnUtil.success(); } @@ -141,7 +141,7 @@ @Override @Transactional public ReturnDTO forcedTerminate(DeviceStatusChangeDTO deviceStatusChangeDTO) { - Integer updateFlag = this.statusChangeUpdator(deviceStatusChangeDTO); + Integer updateFlag = this.statusChangeUpdator(deviceStatusChangeDTO,true); //实验室状态数据的更新 Integer updateReasonFlag = reasonPopulation(deviceStatusChangeDTO); if (updateFlag > 0 && updateReasonFlag > 0) { @@ -193,13 +193,13 @@ } //更新检测完成后,执行当前正在进行数据 - private Integer statusChangeUpdator(DeviceStatusChangeDTO statusChangeDTO) { + private Integer statusChangeUpdator(DeviceStatusChangeDTO statusChangeDTO,Boolean terminateFlag ) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("order_id", statusChangeDTO.getOrderId()); queryWrapper.eq("sample_id", statusChangeDTO.getSampleId()); - queryWrapper.eq("measure_status", "2") - .or().eq("measure_status", "3") - .or().eq("measure_status", "4"); + if(terminateFlag){ + queryWrapper.eq("sample_status", "2").or().eq("sample_status", "3").or().eq("sample_status", "4"); + } BusinessOrderSampleRelation businessOrderSampleRelation = new BusinessOrderSampleRelation(); businessOrderSampleRelation.setSampleStatus(statusChangeDTO.getStatus()); return this.orderSampleRelationMapper.update(businessOrderSampleRelation, queryWrapper); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java new file mode 100644 index 0000000..97c39e6 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificatePrintController.java @@ -0,0 +1,56 @@ +package com.casic.missiles.controller.business; + + +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.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + *

+ * 业务调度-证书打印 + * 1、证书打印模块是对样品检验完成生成的证书进行管理 + * 2、另,并通过工作流审批的方式严格控制证书打印次数 + *

+ * + * @author cz + * @since 2023-02-20 + */ +@RestController +@RequestMapping("/business/certificatePrint") +public class BusinessCertificatePrintController extends ExportController { + + private IBusinessCertificatePrintService certificatePrintService; + + /** + * 证书打印列表,除了基本的列表的信息,需要判断证书打印审批中的状态,进而达到权限的控制 + */ + @ApiOperation("设备列表-分页") + @PostMapping("/listPage") + public ReturnDTO> CertificatePrintlistPage(@RequestBody @Valid CertificateListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(certificatePrintService.CertificatePrintlistPage(request,page))); + } + //同意 拒绝 请求审批 + + + +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java index f7f348b..a75b8ad 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/ConvertUtils.java @@ -25,7 +25,6 @@ return null; } else { T targetObject = null; - try { targetObject = target.newInstance(); BeanUtil.copyProperties(source, targetObject); @@ -42,10 +41,8 @@ return null; } else { ArrayList targetList = new ArrayList(sourceList.size()); - try { Iterator var3 = sourceList.iterator(); - while(var3.hasNext()) { Object source = var3.next(); T targetObject = target.newInstance(); 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 17206ce..fc9330e 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 @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,8 @@ */ public interface BusinessCertificateReportMapper extends BaseMapper { + List selectBatchForApprovalList(Page page, @Param("request") CertificateListRequest request, @Param("businessKey") List businessKey); + + + } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 1fc6133..13456e6 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -4,27 +4,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -32,4 +32,45 @@ id, certificate_report_code, certificate_report_name, certificate_report_category, calibration_major, issuance_date, expiration_date, template_id, sign_id, approval_sign_id, certificate_report_file, original_record_id, print_status, print_num, remark, is_del, create_user, create_time, update_time + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index 82b22fd..95dbb48 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -108,4 +108,9 @@ String ORDER_STATUS = "orderStatus"; //检测状态 String MEASURE_STATUS = "measureStatus"; + //打印状态 + String PRINT_STATUS = "printStatus"; + //证书类型 + String CERTIFICATE_TYPE = "certificateType"; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java index fabeb12..fff240e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutDetailResponse.java @@ -16,6 +16,7 @@ @Data @ApiModel public class SampleHandOutDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java new file mode 100644 index 0000000..7f3be53 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListRequest.java @@ -0,0 +1,46 @@ +package com.casic.missiles.dto.business.print; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("设备接收") +public class CertificateListRequest { + + @ApiModelProperty(value = "表单id(前端自定义)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "证书编号", dataType = "String") + private String certificateNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String cutomerName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "证书类型(非类别)", dataType = "String") + private String certificateClass; + + @ApiModelProperty(value = "未打印(传0,否则不传)", dataType = "String") + private String printSatus; + + @ApiModelProperty(value = "审批状态", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "创建人id(前端不需要传)", dataType = "String") + private Long createUserId; + + @ApiModelProperty(value = "导出ids", dataType = "List") + private List ids; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java new file mode 100644 index 0000000..e8c437c --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/print/CertificateListResponse.java @@ -0,0 +1,78 @@ +package com.casic.missiles.dto.business.print; + +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; + +@Data +@ApiModel("证书打印返回列表") +public class CertificateListResponse { + + private Long id; + + @ApiModelProperty(value = "证书编号", dataType = "String") + private String certificateNo; + + @ApiModelProperty(value = "证书名称", dataType = "String") + private String certificateName; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "校验类别", dataType = "String") + private String measureType; + + @ApiModelProperty(value = "校验类别", dataType = "String") + @DictCodeField(message = "校验类别不合法", cacheName = MeterDictCode.MEASURE_CATEGORY) + private String measureTypeName; + + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePersonId; + + @ApiModelProperty(value = "证书类型", dataType = "String") + @DictCodeField(message = "证书类型不合法", cacheName = MeterDictCode.CERTIFICATE_TYPE) + private String certificateType; + + @ApiModelProperty(value = "证书类型名称", dataType = "String") + private String certificateTypeName; + + @ApiModelProperty(value = "打印状况", dataType = "String") + @DictCodeField(message = "打印状况不合法", cacheName = MeterDictCode.PRINT_STATUS) + private String printStatus; + + @ApiModelProperty(value = "打印状态", dataType = "String") + private String printStatusName; + + @ApiModelProperty(value = "打印次数", dataType = "String") + private String printNum; + + @ApiModelProperty(value = "生成时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "审批状态", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "任务id", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "审批状态", dataType = "Integer") + private Integer decisionItem; + + @ApiModelProperty(value = "审批状态名称", dataType = "String") + private String approvalStatusName; + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificatePrintServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificatePrintServiceImpl.java new file mode 100644 index 0000000..79ed0bf --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificatePrintServiceImpl.java @@ -0,0 +1,147 @@ +package com.casic.missiles.service.Impl.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; +import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.MeterDictEnum; +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.meter.MeterTraceSupplier; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.business.IBusinessCertificatePrintService; +import com.casic.missiles.utils.ConvertUtils; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.*; +import java.util.stream.Collectors; + +@Service +@AllArgsConstructor +public class BusinessCertificatePrintServiceImpl extends ServiceImpl implements IBusinessCertificatePrintService { + + private final IBaseApprovalService baseApprovalService; + private final AbstractDictService dictService; + + @Override + public Page CertificatePrintlistPage(CertificateListRequest request, Page page) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + return handleApprovalStatus(page, request); + } + + private Page handleApprovalStatus(Page page, CertificateListRequest request) { + Page approvalList = PageFactory.defaultPage(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.getRecords().forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; +// //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } +// break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + Page rejectApprovalList = PageFactory.defaultPage(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = this.baseMapper.selectBatchForApprovalList(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.getRecords().addAll(rejectApprovalList.getRecords()); + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = this.baseMapper.selectBatchForApprovalList(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + } + + private Page handleAllApprovalListResponse(Page approvalList, List list, List allApproveList) { + + Map taskMap = allApproveList.stream().collect(Collectors.toMap(AllApproveDTO::getBusinessKey,AllApproveDTO::getStatus)); + approvalList.setRecords(ConvertUtils.sourceToTarget(list, CertificateListResponse.class)); + //状态补全 + approvalList.getRecords().forEach(approval -> { + approval.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + approvalList.setRecords(approvalList.getRecords().stream().sorted(Comparator.comparing(CertificateListResponse::getCreateTime).reversed()).collect(Collectors.toList())); + return approvalList; + } + + private Page handleApprovalListResponse(Page approvalList, List list, String status) { + approvalList.setRecords(ConvertUtils.sourceToTarget(list, CertificateListResponse.class)); + approvalList.getRecords().stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessDispatchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessDispatchServiceImpl.java index 9e7a6db..5eb0a4b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessDispatchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessDispatchServiceImpl.java @@ -130,7 +130,7 @@ @Override public ReturnDTO statusChange(DeviceStatusChangeDTO deviceStatusChangeDTO) { - Integer updateFalg = this.statusChangeUpdator(deviceStatusChangeDTO); + Integer updateFalg = this.statusChangeUpdator(deviceStatusChangeDTO,false); if (updateFalg > 0) { return ReturnUtil.success(); } @@ -141,7 +141,7 @@ @Override @Transactional public ReturnDTO forcedTerminate(DeviceStatusChangeDTO deviceStatusChangeDTO) { - Integer updateFlag = this.statusChangeUpdator(deviceStatusChangeDTO); + Integer updateFlag = this.statusChangeUpdator(deviceStatusChangeDTO,true); //实验室状态数据的更新 Integer updateReasonFlag = reasonPopulation(deviceStatusChangeDTO); if (updateFlag > 0 && updateReasonFlag > 0) { @@ -193,13 +193,13 @@ } //更新检测完成后,执行当前正在进行数据 - private Integer statusChangeUpdator(DeviceStatusChangeDTO statusChangeDTO) { + private Integer statusChangeUpdator(DeviceStatusChangeDTO statusChangeDTO,Boolean terminateFlag ) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("order_id", statusChangeDTO.getOrderId()); queryWrapper.eq("sample_id", statusChangeDTO.getSampleId()); - queryWrapper.eq("measure_status", "2") - .or().eq("measure_status", "3") - .or().eq("measure_status", "4"); + if(terminateFlag){ + queryWrapper.eq("sample_status", "2").or().eq("sample_status", "3").or().eq("sample_status", "4"); + } BusinessOrderSampleRelation businessOrderSampleRelation = new BusinessOrderSampleRelation(); businessOrderSampleRelation.setSampleStatus(statusChangeDTO.getStatus()); return this.orderSampleRelationMapper.update(businessOrderSampleRelation, queryWrapper); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificatePrintService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificatePrintService.java new file mode 100644 index 0000000..26a3142 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessCertificatePrintService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.service.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.print.CertificateListRequest; +import com.casic.missiles.dto.business.print.CertificateListResponse; + +public interface IBusinessCertificatePrintService { + + Page CertificatePrintlistPage(CertificateListRequest request, Page responsePage); + + +}