diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT - bcr.*, - csi.sample_no AS sampleNo, - csi.sample_name AS sampleName, - csi.sample_model AS sampleModel, - csi.manufacturing_no AS manufacturingNo, - bo.order_code AS orderCode, - su.name AS measurePersonName, - csi.measure_category AS measureCategory + bcr.*, + csi.sample_no AS sampleNo, + csi.sample_name AS sampleName, + csi.sample_model AS sampleModel, + csi.manufacturing_no AS manufacturingNo, + bo.order_code AS orderCode, + su.name AS measurePersonName, + csi.measure_category AS measureCategory FROM business_certificate_report bcr - LEFT JOIN business_order bo - ON bcr.order_id=bo.id - LEFT JOIN customer_sample_info csi - ON bcr.sample_id=csi.id - LEFT JOIN sys_user su - ON bcr.measure_person_id=su.id + LEFT JOIN business_order bo + ON bcr.order_id=bo.id + LEFT JOIN customer_sample_info csi + ON bcr.sample_id=csi.id + LEFT JOIN sys_user su + ON bcr.measure_person_id=su.id WHERE bcr.is_del = 0 - - and bcr.certificate_report_code like concat('%',#{request.certificateReportCode},'%') - - - and bo.order_code like concat('%',#{request.orderCode},'%') - - - and bo.customer_name like concat('%',#{request.customerName},'%') - - - and csi.sample_no like concat('%',#{request.sampleNo},'%') - - - and csi.sample_name like concat('%',#{request.sampleName},'%') - - - and csi.measure_category like concat('%',#{request.measureCategory},'%') - + + and bcr.certificate_report_code like concat('%',#{request.certificateReportCode},'%') + + + and bo.order_code like concat('%',#{request.orderCode},'%') + + + and bo.customer_name like concat('%',#{request.customerName},'%') + + + and csi.sample_no like concat('%',#{request.sampleNo},'%') + + + and csi.sample_name like concat('%',#{request.sampleName},'%') + + + and csi.measure_category like concat('%',#{request.measureCategory},'%') + - + - - and bcr.id in - - #{id} - - + + and bcr.id in + + #{id} + + - - and bcr.id in - - #{id} - - - + + and bcr.id in + + #{id} + + + @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT - bcr.*, - csi.sample_no AS sampleNo, - csi.sample_name AS sampleName, - csi.sample_model AS sampleModel, - csi.manufacturing_no AS manufacturingNo, - bo.order_code AS orderCode, - su.name AS measurePersonName, - csi.measure_category AS measureCategory + bcr.*, + csi.sample_no AS sampleNo, + csi.sample_name AS sampleName, + csi.sample_model AS sampleModel, + csi.manufacturing_no AS manufacturingNo, + bo.order_code AS orderCode, + su.name AS measurePersonName, + csi.measure_category AS measureCategory FROM business_certificate_report bcr - LEFT JOIN business_order bo - ON bcr.order_id=bo.id - LEFT JOIN customer_sample_info csi - ON bcr.sample_id=csi.id - LEFT JOIN sys_user su - ON bcr.measure_person_id=su.id + LEFT JOIN business_order bo + ON bcr.order_id=bo.id + LEFT JOIN customer_sample_info csi + ON bcr.sample_id=csi.id + LEFT JOIN sys_user su + ON bcr.measure_person_id=su.id WHERE bcr.is_del = 0 - - and bcr.certificate_report_code like concat('%',#{request.certificateReportCode},'%') - - - and bo.order_code like concat('%',#{request.orderCode},'%') - - - and bo.customer_name like concat('%',#{request.customerName},'%') - - - and csi.sample_no like concat('%',#{request.sampleNo},'%') - - - and csi.sample_name like concat('%',#{request.sampleName},'%') - - - and csi.measure_category like concat('%',#{request.measureCategory},'%') - + + and bcr.certificate_report_code like concat('%',#{request.certificateReportCode},'%') + + + and bo.order_code like concat('%',#{request.orderCode},'%') + + + and bo.customer_name like concat('%',#{request.customerName},'%') + + + and csi.sample_no like concat('%',#{request.sampleNo},'%') + + + and csi.sample_name like concat('%',#{request.sampleName},'%') + + + and csi.measure_category like concat('%',#{request.measureCategory},'%') + - + - - and bcr.id in - - #{id} - - + + and bcr.id in + + #{id} + + - - and bcr.id in - - #{id} - - - + + and bcr.id in + + #{id} + + + @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index c25d236..0af5ea3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -18,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -425,59 +426,69 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "D:\\tmp\\1640635147069263874"; - String localPathUrl = "D:\\tmp\\1640635147069263874"; - -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); -// BufferedImage bii = convertLayout(bi, alpha); -// //生成透明背景图片 -// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +// String pathUrl = "D:\\tmp\\1640635147069263874"; +// String localPathUrl = "D:\\tmp\\1640635147069263874"; // -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); -// BufferedImage b0 = convertLayout(b, alpha); -// //生成透明背景图片 -// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - - // 目标文件地址 - String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; - // 添加电子印章后文件存放地址 - String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; - //WORD转PDF存放位置 - String pdfNewUrl = localPathUrl + "\\tem.pdf"; - //电子印章图片地址 - String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; - //电子签名图片地址 - String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; - // word文档内容关键字 - String keyWord = "批准人"; - FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); - List electronicSealList = new ArrayList(11); - int count = 0; - ElectronicImage electronicImage = defaultElectronicSignName("批准人"); - electronicImage.setElectronicSealImageUrl(stampNameImgUr); - electronicSealList.add(electronicImage); - addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); - // 将新word转化为pdf文件 - electronicImage = defaultElectronicSignSeal("", 0); - electronicImage.setElectronicSealImageUrl(stampSealImgUrl); - electronicSealList.add(electronicImage); - addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - -// electronicImage=defaultElectronicSignSeal("",120f); +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +//// BufferedImage bii = convertLayout(bi, alpha); +//// //生成透明背景图片 +//// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +//// +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +//// BufferedImage b0 = convertLayout(b, alpha); +//// //生成透明背景图片 +//// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); +// +// +// // 目标文件地址 +// String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; +// // 添加电子印章后文件存放地址 +// String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; +// // word文档内容关键字 +// String keyWord = "批准人"; +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// int count = 0; +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// // 将新word转化为pdf文件 +// electronicImage = defaultElectronicSignSeal("", 0); // electronicImage.setElectronicSealImageUrl(stampSealImgUrl); // electronicSealList.add(electronicImage); // addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); -// electronicImage=defaultElectronicSignSeal("",240f); -// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); -// electronicSealList.add(electronicImage); -// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - // 将新word转化为pdf文件 - addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// +//// electronicImage=defaultElectronicSignSeal("",120f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +//// electronicImage=defaultElectronicSignSeal("",240f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +// // 将新word转化为pdf文件 +// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("name", "2334"); + equipmentFixedAssetsMap.put("assetNo", "no1"); + equipmentFixedAssetsMap.put("assetModel", "机甲"); + equipmentFixedAssetsMap.put("validDate", "2023-04-19"); + assetList.add(equipmentFixedAssetsMap); + params.put("assetList", assetList); + exportWord("D:\\casic\\tmp\\检定审批单_1681870127973.docx", "D:\\casic\\tmp\\", "12315.docx", params); } protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index c25d236..0af5ea3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -18,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -425,59 +426,69 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "D:\\tmp\\1640635147069263874"; - String localPathUrl = "D:\\tmp\\1640635147069263874"; - -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); -// BufferedImage bii = convertLayout(bi, alpha); -// //生成透明背景图片 -// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +// String pathUrl = "D:\\tmp\\1640635147069263874"; +// String localPathUrl = "D:\\tmp\\1640635147069263874"; // -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); -// BufferedImage b0 = convertLayout(b, alpha); -// //生成透明背景图片 -// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - - // 目标文件地址 - String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; - // 添加电子印章后文件存放地址 - String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; - //WORD转PDF存放位置 - String pdfNewUrl = localPathUrl + "\\tem.pdf"; - //电子印章图片地址 - String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; - //电子签名图片地址 - String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; - // word文档内容关键字 - String keyWord = "批准人"; - FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); - List electronicSealList = new ArrayList(11); - int count = 0; - ElectronicImage electronicImage = defaultElectronicSignName("批准人"); - electronicImage.setElectronicSealImageUrl(stampNameImgUr); - electronicSealList.add(electronicImage); - addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); - // 将新word转化为pdf文件 - electronicImage = defaultElectronicSignSeal("", 0); - electronicImage.setElectronicSealImageUrl(stampSealImgUrl); - electronicSealList.add(electronicImage); - addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - -// electronicImage=defaultElectronicSignSeal("",120f); +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +//// BufferedImage bii = convertLayout(bi, alpha); +//// //生成透明背景图片 +//// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +//// +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +//// BufferedImage b0 = convertLayout(b, alpha); +//// //生成透明背景图片 +//// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); +// +// +// // 目标文件地址 +// String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; +// // 添加电子印章后文件存放地址 +// String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; +// // word文档内容关键字 +// String keyWord = "批准人"; +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// int count = 0; +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// // 将新word转化为pdf文件 +// electronicImage = defaultElectronicSignSeal("", 0); // electronicImage.setElectronicSealImageUrl(stampSealImgUrl); // electronicSealList.add(electronicImage); // addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); -// electronicImage=defaultElectronicSignSeal("",240f); -// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); -// electronicSealList.add(electronicImage); -// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - // 将新word转化为pdf文件 - addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// +//// electronicImage=defaultElectronicSignSeal("",120f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +//// electronicImage=defaultElectronicSignSeal("",240f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +// // 将新word转化为pdf文件 +// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("name", "2334"); + equipmentFixedAssetsMap.put("assetNo", "no1"); + equipmentFixedAssetsMap.put("assetModel", "机甲"); + equipmentFixedAssetsMap.put("validDate", "2023-04-19"); + assetList.add(equipmentFixedAssetsMap); + params.put("assetList", assetList); + exportWord("D:\\casic\\tmp\\检定审批单_1681870127973.docx", "D:\\casic\\tmp\\", "12315.docx", params); } protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index c6db37e..46a633f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -137,7 +137,7 @@ List nameList = null; try { input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "APPLICATION_OCTET_STREAM", IOUtils.toByteArray(input)); MultipartFile[] multipartFiles = new MultipartFile[1]; multipartFiles[0] = multipartFile; nameList = minioUtil.upload(multipartFiles); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index c25d236..0af5ea3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -18,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -425,59 +426,69 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "D:\\tmp\\1640635147069263874"; - String localPathUrl = "D:\\tmp\\1640635147069263874"; - -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); -// BufferedImage bii = convertLayout(bi, alpha); -// //生成透明背景图片 -// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +// String pathUrl = "D:\\tmp\\1640635147069263874"; +// String localPathUrl = "D:\\tmp\\1640635147069263874"; // -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); -// BufferedImage b0 = convertLayout(b, alpha); -// //生成透明背景图片 -// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - - // 目标文件地址 - String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; - // 添加电子印章后文件存放地址 - String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; - //WORD转PDF存放位置 - String pdfNewUrl = localPathUrl + "\\tem.pdf"; - //电子印章图片地址 - String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; - //电子签名图片地址 - String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; - // word文档内容关键字 - String keyWord = "批准人"; - FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); - List electronicSealList = new ArrayList(11); - int count = 0; - ElectronicImage electronicImage = defaultElectronicSignName("批准人"); - electronicImage.setElectronicSealImageUrl(stampNameImgUr); - electronicSealList.add(electronicImage); - addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); - // 将新word转化为pdf文件 - electronicImage = defaultElectronicSignSeal("", 0); - electronicImage.setElectronicSealImageUrl(stampSealImgUrl); - electronicSealList.add(electronicImage); - addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - -// electronicImage=defaultElectronicSignSeal("",120f); +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +//// BufferedImage bii = convertLayout(bi, alpha); +//// //生成透明背景图片 +//// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +//// +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +//// BufferedImage b0 = convertLayout(b, alpha); +//// //生成透明背景图片 +//// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); +// +// +// // 目标文件地址 +// String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; +// // 添加电子印章后文件存放地址 +// String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; +// // word文档内容关键字 +// String keyWord = "批准人"; +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// int count = 0; +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// // 将新word转化为pdf文件 +// electronicImage = defaultElectronicSignSeal("", 0); // electronicImage.setElectronicSealImageUrl(stampSealImgUrl); // electronicSealList.add(electronicImage); // addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); -// electronicImage=defaultElectronicSignSeal("",240f); -// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); -// electronicSealList.add(electronicImage); -// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - // 将新word转化为pdf文件 - addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// +//// electronicImage=defaultElectronicSignSeal("",120f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +//// electronicImage=defaultElectronicSignSeal("",240f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +// // 将新word转化为pdf文件 +// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("name", "2334"); + equipmentFixedAssetsMap.put("assetNo", "no1"); + equipmentFixedAssetsMap.put("assetModel", "机甲"); + equipmentFixedAssetsMap.put("validDate", "2023-04-19"); + assetList.add(equipmentFixedAssetsMap); + params.put("assetList", assetList); + exportWord("D:\\casic\\tmp\\检定审批单_1681870127973.docx", "D:\\casic\\tmp\\", "12315.docx", params); } protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index c6db37e..46a633f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -137,7 +137,7 @@ List nameList = null; try { input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "APPLICATION_OCTET_STREAM", IOUtils.toByteArray(input)); MultipartFile[] multipartFiles = new MultipartFile[1]; multipartFiles[0] = multipartFile; nameList = minioUtil.upload(multipartFiles); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java deleted file mode 100644 index b0a2c83..0000000 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.casic.missiles.service.listeners.register.data; - -import com.casic.missiles.dto.business.certificate.ElectronicImage; -import com.casic.missiles.dto.business.certificate.FilePrintRegister; -import com.casic.missiles.dto.flowable.ApprovalLogResponse; -import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.customer.CustomerSampleInfo; -import com.casic.missiles.service.business.IBusinessOrderService; -import com.casic.missiles.service.customer.CustomerSampleService; -import com.casic.missiles.service.flowable.ApprovalOperateService; -import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; -import java.io.File; -import java.util.*; - -/** - * 文件构建数据 spi - * - * @author cz - * @date 2023-03-10 - */ -public class CertificateFileDataSupport extends FileImageTemplateProvider { - - @Autowired - protected ApprovalOperateService approvalOperateService; - @Autowired - protected IBusinessOrderService businessOrderService; - @Autowired - protected CustomerSampleService customerSampleService; - @Resource - protected PrintFileRegisterMapper fileRegisterMapper; - - /** - * 初始化文件数据注册信息 - * 1、获取证书模板 - * 2、设置临时处理空间路径、文件名称、文件资源路径 - * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 - */ - protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { - templateFileDir = templateFileDir + certificateReport.getId() + File.separator; - String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); - filePrintRegister.setFileName(fileName); - filePrintRegister.setTemDir(templateFileDir); - filePrintRegister.setTemplatePath(templateFileDir + fileName); - filePrintRegister.setFileNameId(certificateReport.getId()); - List fileNames = new ArrayList<>(); - fileNames.add(fileName); - filePrintRegister.setBeDownloadedFileNames(fileNames); - } - - - /** - * 电子签名创建器 - */ - protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { - List electronicImageList = new ArrayList<>(); - for (int i = 0; i < keyParamList.size(); i++) { - if (!approvalLogMap.containsKey(keyParamList.get(i))) { - continue; - } - final String customizedSignName = customizedSignNames.get(i); - List approvalLogList = approvalLogMap.get(keyParamList.get(i)); - if (CollectionUtils.isNotEmpty(approvalLogList)) { - approvalLogList.forEach( - approvalLog -> { - ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); - String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(signFileName); - electronicImageList.add(electronicImage); - } - ); - } - } - return electronicImageList; - } - - /** - * 电子签章获取 - * - * @param electronicSealId 证书报告文件数据 - * @param electronicImage 关键字 - * @return - */ - protected ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { - String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); - return electronicImage; - } - - /** - * 参数在模板中起替换作用 - * 基本所包含的参数替换 - * @param metaData - * @return - */ - protected Map certificateFilePopulateParamCreator(BusinessCertificateReport metaData) { - Calendar now = Calendar.getInstance(); - BusinessOrder businessOrder = businessOrderService.orderDetail(metaData.getOrderId()); - CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(metaData.getSampleId()); - Map params = new HashMap<>(); - params.put("customerName", businessOrder.getCustomerName()); - params.put("customerAddress", businessOrder.getCustomerAddress()); - params.put("sampleModel", customerSampleInfo.getSampleModel()); - params.put("sampleNo", customerSampleInfo.getSampleNo()); - params.put("sampleName", customerSampleInfo.getSampleName()); - params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); - params.put("y", now.get(Calendar.YEAR)); - params.put("m", (now.get(Calendar.MONTH) + 1)); - params.put("d", now.get(Calendar.DAY_OF_MONTH)); - return params; - } - -} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index c25d236..0af5ea3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -18,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -425,59 +426,69 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "D:\\tmp\\1640635147069263874"; - String localPathUrl = "D:\\tmp\\1640635147069263874"; - -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); -// BufferedImage bii = convertLayout(bi, alpha); -// //生成透明背景图片 -// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +// String pathUrl = "D:\\tmp\\1640635147069263874"; +// String localPathUrl = "D:\\tmp\\1640635147069263874"; // -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); -// BufferedImage b0 = convertLayout(b, alpha); -// //生成透明背景图片 -// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - - // 目标文件地址 - String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; - // 添加电子印章后文件存放地址 - String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; - //WORD转PDF存放位置 - String pdfNewUrl = localPathUrl + "\\tem.pdf"; - //电子印章图片地址 - String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; - //电子签名图片地址 - String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; - // word文档内容关键字 - String keyWord = "批准人"; - FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); - List electronicSealList = new ArrayList(11); - int count = 0; - ElectronicImage electronicImage = defaultElectronicSignName("批准人"); - electronicImage.setElectronicSealImageUrl(stampNameImgUr); - electronicSealList.add(electronicImage); - addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); - // 将新word转化为pdf文件 - electronicImage = defaultElectronicSignSeal("", 0); - electronicImage.setElectronicSealImageUrl(stampSealImgUrl); - electronicSealList.add(electronicImage); - addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - -// electronicImage=defaultElectronicSignSeal("",120f); +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +//// BufferedImage bii = convertLayout(bi, alpha); +//// //生成透明背景图片 +//// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +//// +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +//// BufferedImage b0 = convertLayout(b, alpha); +//// //生成透明背景图片 +//// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); +// +// +// // 目标文件地址 +// String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; +// // 添加电子印章后文件存放地址 +// String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; +// // word文档内容关键字 +// String keyWord = "批准人"; +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// int count = 0; +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// // 将新word转化为pdf文件 +// electronicImage = defaultElectronicSignSeal("", 0); // electronicImage.setElectronicSealImageUrl(stampSealImgUrl); // electronicSealList.add(electronicImage); // addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); -// electronicImage=defaultElectronicSignSeal("",240f); -// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); -// electronicSealList.add(electronicImage); -// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - // 将新word转化为pdf文件 - addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// +//// electronicImage=defaultElectronicSignSeal("",120f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +//// electronicImage=defaultElectronicSignSeal("",240f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +// // 将新word转化为pdf文件 +// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("name", "2334"); + equipmentFixedAssetsMap.put("assetNo", "no1"); + equipmentFixedAssetsMap.put("assetModel", "机甲"); + equipmentFixedAssetsMap.put("validDate", "2023-04-19"); + assetList.add(equipmentFixedAssetsMap); + params.put("assetList", assetList); + exportWord("D:\\casic\\tmp\\检定审批单_1681870127973.docx", "D:\\casic\\tmp\\", "12315.docx", params); } protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index c6db37e..46a633f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -137,7 +137,7 @@ List nameList = null; try { input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "APPLICATION_OCTET_STREAM", IOUtils.toByteArray(input)); MultipartFile[] multipartFiles = new MultipartFile[1]; multipartFiles[0] = multipartFile; nameList = minioUtil.upload(multipartFiles); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java deleted file mode 100644 index b0a2c83..0000000 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.casic.missiles.service.listeners.register.data; - -import com.casic.missiles.dto.business.certificate.ElectronicImage; -import com.casic.missiles.dto.business.certificate.FilePrintRegister; -import com.casic.missiles.dto.flowable.ApprovalLogResponse; -import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.customer.CustomerSampleInfo; -import com.casic.missiles.service.business.IBusinessOrderService; -import com.casic.missiles.service.customer.CustomerSampleService; -import com.casic.missiles.service.flowable.ApprovalOperateService; -import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; -import java.io.File; -import java.util.*; - -/** - * 文件构建数据 spi - * - * @author cz - * @date 2023-03-10 - */ -public class CertificateFileDataSupport extends FileImageTemplateProvider { - - @Autowired - protected ApprovalOperateService approvalOperateService; - @Autowired - protected IBusinessOrderService businessOrderService; - @Autowired - protected CustomerSampleService customerSampleService; - @Resource - protected PrintFileRegisterMapper fileRegisterMapper; - - /** - * 初始化文件数据注册信息 - * 1、获取证书模板 - * 2、设置临时处理空间路径、文件名称、文件资源路径 - * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 - */ - protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { - templateFileDir = templateFileDir + certificateReport.getId() + File.separator; - String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); - filePrintRegister.setFileName(fileName); - filePrintRegister.setTemDir(templateFileDir); - filePrintRegister.setTemplatePath(templateFileDir + fileName); - filePrintRegister.setFileNameId(certificateReport.getId()); - List fileNames = new ArrayList<>(); - fileNames.add(fileName); - filePrintRegister.setBeDownloadedFileNames(fileNames); - } - - - /** - * 电子签名创建器 - */ - protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { - List electronicImageList = new ArrayList<>(); - for (int i = 0; i < keyParamList.size(); i++) { - if (!approvalLogMap.containsKey(keyParamList.get(i))) { - continue; - } - final String customizedSignName = customizedSignNames.get(i); - List approvalLogList = approvalLogMap.get(keyParamList.get(i)); - if (CollectionUtils.isNotEmpty(approvalLogList)) { - approvalLogList.forEach( - approvalLog -> { - ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); - String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(signFileName); - electronicImageList.add(electronicImage); - } - ); - } - } - return electronicImageList; - } - - /** - * 电子签章获取 - * - * @param electronicSealId 证书报告文件数据 - * @param electronicImage 关键字 - * @return - */ - protected ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { - String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); - return electronicImage; - } - - /** - * 参数在模板中起替换作用 - * 基本所包含的参数替换 - * @param metaData - * @return - */ - protected Map certificateFilePopulateParamCreator(BusinessCertificateReport metaData) { - Calendar now = Calendar.getInstance(); - BusinessOrder businessOrder = businessOrderService.orderDetail(metaData.getOrderId()); - CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(metaData.getSampleId()); - Map params = new HashMap<>(); - params.put("customerName", businessOrder.getCustomerName()); - params.put("customerAddress", businessOrder.getCustomerAddress()); - params.put("sampleModel", customerSampleInfo.getSampleModel()); - params.put("sampleNo", customerSampleInfo.getSampleNo()); - params.put("sampleName", customerSampleInfo.getSampleName()); - params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); - params.put("y", now.get(Calendar.YEAR)); - params.put("m", (now.get(Calendar.MONTH) + 1)); - params.put("d", now.get(Calendar.DAY_OF_MONTH)); - return params; - } - -} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java new file mode 100644 index 0000000..dae0927 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java @@ -0,0 +1,115 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.customer.CustomerService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * 参数填充创建类 + */ +@Component +@Slf4j +public class FileParamDataCreator { + @Autowired + private IBusinessOrderService businessOrderService; + @Autowired + private CustomerService customerService; + @Autowired + private CustomerSampleService customerSampleService; + @Autowired + private IBusinessSiteExecutiveInfoEquipmentRelationService equipmentRelationInfoService; + private BusinessOrder businessOrder; + private Map fileParamData; + + FileParamDataCreator builder() { + fileParamData = new HashMap<>(); + return this; + } + + /** + * 基本年月日信息 + */ + FileParamDataCreator loadTime() { + Calendar now = Calendar.getInstance(); + now.setTime(new Date()); + fileParamData.put("y", now.get(Calendar.YEAR)); + fileParamData.put("m", now.get(Calendar.MONTH) + 1); + fileParamData.put("d", now.get(Calendar.DAY_OF_MONTH)); + return this; + } + + /** + * 委托书信息 + */ + FileParamDataCreator businessOrder(Long orderId) { + businessOrder = businessOrderService.orderDetail(orderId); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + return this; + } + + /** + * 样品信息 + */ + FileParamDataCreator customerSample(Long sampleId) { + CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(sampleId); + fileParamData.put("customerSampleName", customerSampleInfo.getSampleName()); + fileParamData.put("customerSampleNo", customerSampleInfo.getSampleNo()); + fileParamData.put("customerAddress", customerSampleInfo.getCustomerAddress()); + fileParamData.put("deliverer", customerSampleInfo.getDeliverer()); + fileParamData.put("delivererTel", customerSampleInfo.getDelivererTel()); + return this; + } + + /** + * 客户信息 + */ + FileParamDataCreator customerInfo() { + CustomerInfo customerInfo = customerService.customerDetail(businessOrder.getCustomerId()); + fileParamData.put("director", customerInfo.getCustomerName()); + fileParamData.put("customerPhone", customerInfo.getPhone()); + fileParamData.put("customerName", customerInfo.getCustomerName()); + fileParamData.put("customerNo", customerInfo.getCustomerNo()); + return this; + } + /** + * 外场检定查询测量设备 + */ + FileParamDataCreator equipmentFixedAssets(Long siteExecutiveLogId) { + try { + List equipmentFixedAssetList = equipmentRelationInfoService.getEquipmentsByExecutiveInfoId(siteExecutiveLogId); + List> assetList = new ArrayList<>(); + equipmentFixedAssetList.forEach( + equipmentFixedAsset -> { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("assetName", equipmentFixedAsset.getEquipmentName()); + equipmentFixedAssetsMap.put("assetNo", equipmentFixedAsset.getEquipmentNo()); + equipmentFixedAssetsMap.put("assetModel", equipmentFixedAsset.getModelNo()); + equipmentFixedAssetsMap.put("validDate", equipmentFixedAsset.getValidDate()); + assetList.add(equipmentFixedAssetsMap); + } + ); + fileParamData.put("assetList", assetList); + } catch (Exception ex) { + log.error("query EquipmentFixedAssets table is fail,the id is {},the message is {}", siteExecutiveLogId, ex); + } + return this; + } + + Map build() { + return this.fileParamData; + } + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index c25d236..0af5ea3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -18,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -425,59 +426,69 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "D:\\tmp\\1640635147069263874"; - String localPathUrl = "D:\\tmp\\1640635147069263874"; - -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); -// BufferedImage bii = convertLayout(bi, alpha); -// //生成透明背景图片 -// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +// String pathUrl = "D:\\tmp\\1640635147069263874"; +// String localPathUrl = "D:\\tmp\\1640635147069263874"; // -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); -// BufferedImage b0 = convertLayout(b, alpha); -// //生成透明背景图片 -// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - - // 目标文件地址 - String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; - // 添加电子印章后文件存放地址 - String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; - //WORD转PDF存放位置 - String pdfNewUrl = localPathUrl + "\\tem.pdf"; - //电子印章图片地址 - String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; - //电子签名图片地址 - String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; - // word文档内容关键字 - String keyWord = "批准人"; - FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); - List electronicSealList = new ArrayList(11); - int count = 0; - ElectronicImage electronicImage = defaultElectronicSignName("批准人"); - electronicImage.setElectronicSealImageUrl(stampNameImgUr); - electronicSealList.add(electronicImage); - addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); - // 将新word转化为pdf文件 - electronicImage = defaultElectronicSignSeal("", 0); - electronicImage.setElectronicSealImageUrl(stampSealImgUrl); - electronicSealList.add(electronicImage); - addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - -// electronicImage=defaultElectronicSignSeal("",120f); +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +//// BufferedImage bii = convertLayout(bi, alpha); +//// //生成透明背景图片 +//// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +//// +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +//// BufferedImage b0 = convertLayout(b, alpha); +//// //生成透明背景图片 +//// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); +// +// +// // 目标文件地址 +// String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; +// // 添加电子印章后文件存放地址 +// String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; +// // word文档内容关键字 +// String keyWord = "批准人"; +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// int count = 0; +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// // 将新word转化为pdf文件 +// electronicImage = defaultElectronicSignSeal("", 0); // electronicImage.setElectronicSealImageUrl(stampSealImgUrl); // electronicSealList.add(electronicImage); // addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); -// electronicImage=defaultElectronicSignSeal("",240f); -// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); -// electronicSealList.add(electronicImage); -// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - // 将新word转化为pdf文件 - addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// +//// electronicImage=defaultElectronicSignSeal("",120f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +//// electronicImage=defaultElectronicSignSeal("",240f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +// // 将新word转化为pdf文件 +// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("name", "2334"); + equipmentFixedAssetsMap.put("assetNo", "no1"); + equipmentFixedAssetsMap.put("assetModel", "机甲"); + equipmentFixedAssetsMap.put("validDate", "2023-04-19"); + assetList.add(equipmentFixedAssetsMap); + params.put("assetList", assetList); + exportWord("D:\\casic\\tmp\\检定审批单_1681870127973.docx", "D:\\casic\\tmp\\", "12315.docx", params); } protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index c6db37e..46a633f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -137,7 +137,7 @@ List nameList = null; try { input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "APPLICATION_OCTET_STREAM", IOUtils.toByteArray(input)); MultipartFile[] multipartFiles = new MultipartFile[1]; multipartFiles[0] = multipartFile; nameList = minioUtil.upload(multipartFiles); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java deleted file mode 100644 index b0a2c83..0000000 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.casic.missiles.service.listeners.register.data; - -import com.casic.missiles.dto.business.certificate.ElectronicImage; -import com.casic.missiles.dto.business.certificate.FilePrintRegister; -import com.casic.missiles.dto.flowable.ApprovalLogResponse; -import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.customer.CustomerSampleInfo; -import com.casic.missiles.service.business.IBusinessOrderService; -import com.casic.missiles.service.customer.CustomerSampleService; -import com.casic.missiles.service.flowable.ApprovalOperateService; -import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; -import java.io.File; -import java.util.*; - -/** - * 文件构建数据 spi - * - * @author cz - * @date 2023-03-10 - */ -public class CertificateFileDataSupport extends FileImageTemplateProvider { - - @Autowired - protected ApprovalOperateService approvalOperateService; - @Autowired - protected IBusinessOrderService businessOrderService; - @Autowired - protected CustomerSampleService customerSampleService; - @Resource - protected PrintFileRegisterMapper fileRegisterMapper; - - /** - * 初始化文件数据注册信息 - * 1、获取证书模板 - * 2、设置临时处理空间路径、文件名称、文件资源路径 - * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 - */ - protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { - templateFileDir = templateFileDir + certificateReport.getId() + File.separator; - String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); - filePrintRegister.setFileName(fileName); - filePrintRegister.setTemDir(templateFileDir); - filePrintRegister.setTemplatePath(templateFileDir + fileName); - filePrintRegister.setFileNameId(certificateReport.getId()); - List fileNames = new ArrayList<>(); - fileNames.add(fileName); - filePrintRegister.setBeDownloadedFileNames(fileNames); - } - - - /** - * 电子签名创建器 - */ - protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { - List electronicImageList = new ArrayList<>(); - for (int i = 0; i < keyParamList.size(); i++) { - if (!approvalLogMap.containsKey(keyParamList.get(i))) { - continue; - } - final String customizedSignName = customizedSignNames.get(i); - List approvalLogList = approvalLogMap.get(keyParamList.get(i)); - if (CollectionUtils.isNotEmpty(approvalLogList)) { - approvalLogList.forEach( - approvalLog -> { - ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); - String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(signFileName); - electronicImageList.add(electronicImage); - } - ); - } - } - return electronicImageList; - } - - /** - * 电子签章获取 - * - * @param electronicSealId 证书报告文件数据 - * @param electronicImage 关键字 - * @return - */ - protected ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { - String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); - return electronicImage; - } - - /** - * 参数在模板中起替换作用 - * 基本所包含的参数替换 - * @param metaData - * @return - */ - protected Map certificateFilePopulateParamCreator(BusinessCertificateReport metaData) { - Calendar now = Calendar.getInstance(); - BusinessOrder businessOrder = businessOrderService.orderDetail(metaData.getOrderId()); - CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(metaData.getSampleId()); - Map params = new HashMap<>(); - params.put("customerName", businessOrder.getCustomerName()); - params.put("customerAddress", businessOrder.getCustomerAddress()); - params.put("sampleModel", customerSampleInfo.getSampleModel()); - params.put("sampleNo", customerSampleInfo.getSampleNo()); - params.put("sampleName", customerSampleInfo.getSampleName()); - params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); - params.put("y", now.get(Calendar.YEAR)); - params.put("m", (now.get(Calendar.MONTH) + 1)); - params.put("d", now.get(Calendar.DAY_OF_MONTH)); - return params; - } - -} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java new file mode 100644 index 0000000..dae0927 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java @@ -0,0 +1,115 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.customer.CustomerService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * 参数填充创建类 + */ +@Component +@Slf4j +public class FileParamDataCreator { + @Autowired + private IBusinessOrderService businessOrderService; + @Autowired + private CustomerService customerService; + @Autowired + private CustomerSampleService customerSampleService; + @Autowired + private IBusinessSiteExecutiveInfoEquipmentRelationService equipmentRelationInfoService; + private BusinessOrder businessOrder; + private Map fileParamData; + + FileParamDataCreator builder() { + fileParamData = new HashMap<>(); + return this; + } + + /** + * 基本年月日信息 + */ + FileParamDataCreator loadTime() { + Calendar now = Calendar.getInstance(); + now.setTime(new Date()); + fileParamData.put("y", now.get(Calendar.YEAR)); + fileParamData.put("m", now.get(Calendar.MONTH) + 1); + fileParamData.put("d", now.get(Calendar.DAY_OF_MONTH)); + return this; + } + + /** + * 委托书信息 + */ + FileParamDataCreator businessOrder(Long orderId) { + businessOrder = businessOrderService.orderDetail(orderId); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + return this; + } + + /** + * 样品信息 + */ + FileParamDataCreator customerSample(Long sampleId) { + CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(sampleId); + fileParamData.put("customerSampleName", customerSampleInfo.getSampleName()); + fileParamData.put("customerSampleNo", customerSampleInfo.getSampleNo()); + fileParamData.put("customerAddress", customerSampleInfo.getCustomerAddress()); + fileParamData.put("deliverer", customerSampleInfo.getDeliverer()); + fileParamData.put("delivererTel", customerSampleInfo.getDelivererTel()); + return this; + } + + /** + * 客户信息 + */ + FileParamDataCreator customerInfo() { + CustomerInfo customerInfo = customerService.customerDetail(businessOrder.getCustomerId()); + fileParamData.put("director", customerInfo.getCustomerName()); + fileParamData.put("customerPhone", customerInfo.getPhone()); + fileParamData.put("customerName", customerInfo.getCustomerName()); + fileParamData.put("customerNo", customerInfo.getCustomerNo()); + return this; + } + /** + * 外场检定查询测量设备 + */ + FileParamDataCreator equipmentFixedAssets(Long siteExecutiveLogId) { + try { + List equipmentFixedAssetList = equipmentRelationInfoService.getEquipmentsByExecutiveInfoId(siteExecutiveLogId); + List> assetList = new ArrayList<>(); + equipmentFixedAssetList.forEach( + equipmentFixedAsset -> { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("assetName", equipmentFixedAsset.getEquipmentName()); + equipmentFixedAssetsMap.put("assetNo", equipmentFixedAsset.getEquipmentNo()); + equipmentFixedAssetsMap.put("assetModel", equipmentFixedAsset.getModelNo()); + equipmentFixedAssetsMap.put("validDate", equipmentFixedAsset.getValidDate()); + assetList.add(equipmentFixedAssetsMap); + } + ); + fileParamData.put("assetList", assetList); + } catch (Exception ex) { + log.error("query EquipmentFixedAssets table is fail,the id is {},the message is {}", siteExecutiveLogId, ex); + } + return this; + } + + Map build() { + return this.fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java new file mode 100644 index 0000000..a5e780b --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java @@ -0,0 +1,155 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.business.certificate.ElectronicImage; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.flowable.ApprovalOperateService; +import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.annotation.Resource; +import java.io.File; +import java.util.*; + +/** + * 文件构建数据 spi + * + * @author cz + * @date 2023-03-10 + */ +public class PrintFileDataSupport extends FileImageTemplateProvider { + + @Autowired + protected ApprovalOperateService approvalOperateService; + @Resource + protected PrintFileRegisterMapper fileRegisterMapper; + + @Resource + private FileParamDataCreator fileParamDataCreator; + + /** + * 初始化文件数据注册信息 + * 1、获取证书模板 + * 2、设置临时处理空间路径、文件名称、文件资源路径 + * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 + */ + protected final FilePrintRegister initialization(String templateFileDir, + Long id, String fileName) { + FilePrintRegister filePrintRegister = new FilePrintRegister(); + templateFileDir = templateFileDir + id + File.separator; + filePrintRegister.setFileName(fileName); + filePrintRegister.setTemDir(templateFileDir); + filePrintRegister.setTemplatePath(templateFileDir + fileName); + filePrintRegister.setFileNameId(id); + List fileNames = new ArrayList<>(); + fileNames.add(fileName); + filePrintRegister.setBeDownloadedFileNames(fileNames); + return filePrintRegister; + } + + public String getTemplateName(T templateIdOrName) { + String fileName = ""; + if (templateIdOrName instanceof Long) { + fileName = fileRegisterMapper.getSignFileSealById((Long) templateIdOrName, "system_template"); + } + if (templateIdOrName instanceof String) { + fileName = fileRegisterMapper.getFileNameByName((String) templateIdOrName, "system_template"); + } + return fileName; + } + + + /** + * 电子签名创建器 + */ + protected final List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { + List electronicImageList = new ArrayList<>(); + for (int i = 0; i < keyParamList.size(); i++) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { + continue; + } + final String customizedSignName = customizedSignNames.get(i); + List approvalLogList = approvalLogMap.get(keyParamList.get(i)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + approvalLogList.forEach( + approvalLog -> { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + return; + } + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + ); + } + } + return electronicImageList; + } + + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + protected final ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + /** + * 证书参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @param sampleId + * @return + */ + protected Map certificateFileParamCreator(Long orderId, Long sampleId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerSample(sampleId) + .customerInfo() + .build(); + return fileParamData; + } + + /** + * 外检环境参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @return + */ + protected Map siteFileParamCreator(Long orderId, Long siteId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerInfo() + .equipmentFixedAssets(siteId) + .build(); + return fileParamData; + } + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index c25d236..0af5ea3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -18,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -425,59 +426,69 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "D:\\tmp\\1640635147069263874"; - String localPathUrl = "D:\\tmp\\1640635147069263874"; - -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); -// BufferedImage bii = convertLayout(bi, alpha); -// //生成透明背景图片 -// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +// String pathUrl = "D:\\tmp\\1640635147069263874"; +// String localPathUrl = "D:\\tmp\\1640635147069263874"; // -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); -// BufferedImage b0 = convertLayout(b, alpha); -// //生成透明背景图片 -// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - - // 目标文件地址 - String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; - // 添加电子印章后文件存放地址 - String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; - //WORD转PDF存放位置 - String pdfNewUrl = localPathUrl + "\\tem.pdf"; - //电子印章图片地址 - String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; - //电子签名图片地址 - String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; - // word文档内容关键字 - String keyWord = "批准人"; - FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); - List electronicSealList = new ArrayList(11); - int count = 0; - ElectronicImage electronicImage = defaultElectronicSignName("批准人"); - electronicImage.setElectronicSealImageUrl(stampNameImgUr); - electronicSealList.add(electronicImage); - addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); - // 将新word转化为pdf文件 - electronicImage = defaultElectronicSignSeal("", 0); - electronicImage.setElectronicSealImageUrl(stampSealImgUrl); - electronicSealList.add(electronicImage); - addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - -// electronicImage=defaultElectronicSignSeal("",120f); +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +//// BufferedImage bii = convertLayout(bi, alpha); +//// //生成透明背景图片 +//// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +//// +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +//// BufferedImage b0 = convertLayout(b, alpha); +//// //生成透明背景图片 +//// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); +// +// +// // 目标文件地址 +// String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; +// // 添加电子印章后文件存放地址 +// String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; +// // word文档内容关键字 +// String keyWord = "批准人"; +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// int count = 0; +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// // 将新word转化为pdf文件 +// electronicImage = defaultElectronicSignSeal("", 0); // electronicImage.setElectronicSealImageUrl(stampSealImgUrl); // electronicSealList.add(electronicImage); // addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); -// electronicImage=defaultElectronicSignSeal("",240f); -// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); -// electronicSealList.add(electronicImage); -// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - // 将新word转化为pdf文件 - addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// +//// electronicImage=defaultElectronicSignSeal("",120f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +//// electronicImage=defaultElectronicSignSeal("",240f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +// // 将新word转化为pdf文件 +// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("name", "2334"); + equipmentFixedAssetsMap.put("assetNo", "no1"); + equipmentFixedAssetsMap.put("assetModel", "机甲"); + equipmentFixedAssetsMap.put("validDate", "2023-04-19"); + assetList.add(equipmentFixedAssetsMap); + params.put("assetList", assetList); + exportWord("D:\\casic\\tmp\\检定审批单_1681870127973.docx", "D:\\casic\\tmp\\", "12315.docx", params); } protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index c6db37e..46a633f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -137,7 +137,7 @@ List nameList = null; try { input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "APPLICATION_OCTET_STREAM", IOUtils.toByteArray(input)); MultipartFile[] multipartFiles = new MultipartFile[1]; multipartFiles[0] = multipartFile; nameList = minioUtil.upload(multipartFiles); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java deleted file mode 100644 index b0a2c83..0000000 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.casic.missiles.service.listeners.register.data; - -import com.casic.missiles.dto.business.certificate.ElectronicImage; -import com.casic.missiles.dto.business.certificate.FilePrintRegister; -import com.casic.missiles.dto.flowable.ApprovalLogResponse; -import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.customer.CustomerSampleInfo; -import com.casic.missiles.service.business.IBusinessOrderService; -import com.casic.missiles.service.customer.CustomerSampleService; -import com.casic.missiles.service.flowable.ApprovalOperateService; -import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; -import java.io.File; -import java.util.*; - -/** - * 文件构建数据 spi - * - * @author cz - * @date 2023-03-10 - */ -public class CertificateFileDataSupport extends FileImageTemplateProvider { - - @Autowired - protected ApprovalOperateService approvalOperateService; - @Autowired - protected IBusinessOrderService businessOrderService; - @Autowired - protected CustomerSampleService customerSampleService; - @Resource - protected PrintFileRegisterMapper fileRegisterMapper; - - /** - * 初始化文件数据注册信息 - * 1、获取证书模板 - * 2、设置临时处理空间路径、文件名称、文件资源路径 - * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 - */ - protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { - templateFileDir = templateFileDir + certificateReport.getId() + File.separator; - String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); - filePrintRegister.setFileName(fileName); - filePrintRegister.setTemDir(templateFileDir); - filePrintRegister.setTemplatePath(templateFileDir + fileName); - filePrintRegister.setFileNameId(certificateReport.getId()); - List fileNames = new ArrayList<>(); - fileNames.add(fileName); - filePrintRegister.setBeDownloadedFileNames(fileNames); - } - - - /** - * 电子签名创建器 - */ - protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { - List electronicImageList = new ArrayList<>(); - for (int i = 0; i < keyParamList.size(); i++) { - if (!approvalLogMap.containsKey(keyParamList.get(i))) { - continue; - } - final String customizedSignName = customizedSignNames.get(i); - List approvalLogList = approvalLogMap.get(keyParamList.get(i)); - if (CollectionUtils.isNotEmpty(approvalLogList)) { - approvalLogList.forEach( - approvalLog -> { - ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); - String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(signFileName); - electronicImageList.add(electronicImage); - } - ); - } - } - return electronicImageList; - } - - /** - * 电子签章获取 - * - * @param electronicSealId 证书报告文件数据 - * @param electronicImage 关键字 - * @return - */ - protected ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { - String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); - return electronicImage; - } - - /** - * 参数在模板中起替换作用 - * 基本所包含的参数替换 - * @param metaData - * @return - */ - protected Map certificateFilePopulateParamCreator(BusinessCertificateReport metaData) { - Calendar now = Calendar.getInstance(); - BusinessOrder businessOrder = businessOrderService.orderDetail(metaData.getOrderId()); - CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(metaData.getSampleId()); - Map params = new HashMap<>(); - params.put("customerName", businessOrder.getCustomerName()); - params.put("customerAddress", businessOrder.getCustomerAddress()); - params.put("sampleModel", customerSampleInfo.getSampleModel()); - params.put("sampleNo", customerSampleInfo.getSampleNo()); - params.put("sampleName", customerSampleInfo.getSampleName()); - params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); - params.put("y", now.get(Calendar.YEAR)); - params.put("m", (now.get(Calendar.MONTH) + 1)); - params.put("d", now.get(Calendar.DAY_OF_MONTH)); - return params; - } - -} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java new file mode 100644 index 0000000..dae0927 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java @@ -0,0 +1,115 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.customer.CustomerService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * 参数填充创建类 + */ +@Component +@Slf4j +public class FileParamDataCreator { + @Autowired + private IBusinessOrderService businessOrderService; + @Autowired + private CustomerService customerService; + @Autowired + private CustomerSampleService customerSampleService; + @Autowired + private IBusinessSiteExecutiveInfoEquipmentRelationService equipmentRelationInfoService; + private BusinessOrder businessOrder; + private Map fileParamData; + + FileParamDataCreator builder() { + fileParamData = new HashMap<>(); + return this; + } + + /** + * 基本年月日信息 + */ + FileParamDataCreator loadTime() { + Calendar now = Calendar.getInstance(); + now.setTime(new Date()); + fileParamData.put("y", now.get(Calendar.YEAR)); + fileParamData.put("m", now.get(Calendar.MONTH) + 1); + fileParamData.put("d", now.get(Calendar.DAY_OF_MONTH)); + return this; + } + + /** + * 委托书信息 + */ + FileParamDataCreator businessOrder(Long orderId) { + businessOrder = businessOrderService.orderDetail(orderId); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + return this; + } + + /** + * 样品信息 + */ + FileParamDataCreator customerSample(Long sampleId) { + CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(sampleId); + fileParamData.put("customerSampleName", customerSampleInfo.getSampleName()); + fileParamData.put("customerSampleNo", customerSampleInfo.getSampleNo()); + fileParamData.put("customerAddress", customerSampleInfo.getCustomerAddress()); + fileParamData.put("deliverer", customerSampleInfo.getDeliverer()); + fileParamData.put("delivererTel", customerSampleInfo.getDelivererTel()); + return this; + } + + /** + * 客户信息 + */ + FileParamDataCreator customerInfo() { + CustomerInfo customerInfo = customerService.customerDetail(businessOrder.getCustomerId()); + fileParamData.put("director", customerInfo.getCustomerName()); + fileParamData.put("customerPhone", customerInfo.getPhone()); + fileParamData.put("customerName", customerInfo.getCustomerName()); + fileParamData.put("customerNo", customerInfo.getCustomerNo()); + return this; + } + /** + * 外场检定查询测量设备 + */ + FileParamDataCreator equipmentFixedAssets(Long siteExecutiveLogId) { + try { + List equipmentFixedAssetList = equipmentRelationInfoService.getEquipmentsByExecutiveInfoId(siteExecutiveLogId); + List> assetList = new ArrayList<>(); + equipmentFixedAssetList.forEach( + equipmentFixedAsset -> { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("assetName", equipmentFixedAsset.getEquipmentName()); + equipmentFixedAssetsMap.put("assetNo", equipmentFixedAsset.getEquipmentNo()); + equipmentFixedAssetsMap.put("assetModel", equipmentFixedAsset.getModelNo()); + equipmentFixedAssetsMap.put("validDate", equipmentFixedAsset.getValidDate()); + assetList.add(equipmentFixedAssetsMap); + } + ); + fileParamData.put("assetList", assetList); + } catch (Exception ex) { + log.error("query EquipmentFixedAssets table is fail,the id is {},the message is {}", siteExecutiveLogId, ex); + } + return this; + } + + Map build() { + return this.fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java new file mode 100644 index 0000000..a5e780b --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java @@ -0,0 +1,155 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.business.certificate.ElectronicImage; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.flowable.ApprovalOperateService; +import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.annotation.Resource; +import java.io.File; +import java.util.*; + +/** + * 文件构建数据 spi + * + * @author cz + * @date 2023-03-10 + */ +public class PrintFileDataSupport extends FileImageTemplateProvider { + + @Autowired + protected ApprovalOperateService approvalOperateService; + @Resource + protected PrintFileRegisterMapper fileRegisterMapper; + + @Resource + private FileParamDataCreator fileParamDataCreator; + + /** + * 初始化文件数据注册信息 + * 1、获取证书模板 + * 2、设置临时处理空间路径、文件名称、文件资源路径 + * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 + */ + protected final FilePrintRegister initialization(String templateFileDir, + Long id, String fileName) { + FilePrintRegister filePrintRegister = new FilePrintRegister(); + templateFileDir = templateFileDir + id + File.separator; + filePrintRegister.setFileName(fileName); + filePrintRegister.setTemDir(templateFileDir); + filePrintRegister.setTemplatePath(templateFileDir + fileName); + filePrintRegister.setFileNameId(id); + List fileNames = new ArrayList<>(); + fileNames.add(fileName); + filePrintRegister.setBeDownloadedFileNames(fileNames); + return filePrintRegister; + } + + public String getTemplateName(T templateIdOrName) { + String fileName = ""; + if (templateIdOrName instanceof Long) { + fileName = fileRegisterMapper.getSignFileSealById((Long) templateIdOrName, "system_template"); + } + if (templateIdOrName instanceof String) { + fileName = fileRegisterMapper.getFileNameByName((String) templateIdOrName, "system_template"); + } + return fileName; + } + + + /** + * 电子签名创建器 + */ + protected final List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { + List electronicImageList = new ArrayList<>(); + for (int i = 0; i < keyParamList.size(); i++) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { + continue; + } + final String customizedSignName = customizedSignNames.get(i); + List approvalLogList = approvalLogMap.get(keyParamList.get(i)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + approvalLogList.forEach( + approvalLog -> { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + return; + } + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + ); + } + } + return electronicImageList; + } + + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + protected final ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + /** + * 证书参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @param sampleId + * @return + */ + protected Map certificateFileParamCreator(Long orderId, Long sampleId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerSample(sampleId) + .customerInfo() + .build(); + return fileParamData; + } + + /** + * 外检环境参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @return + */ + protected Map siteFileParamCreator(Long orderId, Long siteId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerInfo() + .equipmentFixedAssets(siteId) + .build(); + return fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java index db535ea..4e2bc25 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java @@ -6,7 +6,7 @@ import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.service.listeners.register.data.CertificateFileDataSupport; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -17,7 +17,7 @@ * 校准证书参数生成 */ @Component(PrintFileDataBeanNameAliasEnum.CALIBRATION_CERTIFICATE_BEAN) -public class CalibrationPrintFileData extends CertificateFileDataSupport implements PrintFileDataGeneric { +public class CalibrationPrintFileData extends PrintFileDataSupport implements PrintFileDataGeneric { /** * 1、进行打印证书对象的初始化 @@ -31,24 +31,26 @@ @Override public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { BusinessCertificateReport metaData = (BusinessCertificateReport) object; - FilePrintRegister filePrintRegister = new FilePrintRegister(); //初始化,生成模板文件 - initialization(filePrintRegister, templateFileDir, metaData); + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); //查询工作流审批记录 List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); Map> ApprovalLogMap = approvalLogList.stream() - .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); //定制化签名开发预处理,定制化参数 customizedSignNamesParamCreator(); //定制化签名开发 - List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + electronicSignList.addAll(customizedElectronicSignSeals(metaData, filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); //填充定制化的参数 - filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); + filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(), metaData.getSampleId())); return filePrintRegister; } + + + /** * 定制化电子签章文件 * @@ -58,12 +60,12 @@ private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); ElectronicImage electronicImage = defaultElectronicSignSeal("发证单位"); - electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage,filePrintRegister)); + electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage, filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); - List electronicImages= autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); - for (int i=0;i electronicImages = autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); + for (int i = 0; i < approvalSignIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(approvalSignIds[i]), electronicImages.get(i), filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index c25d236..0af5ea3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -18,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -425,59 +426,69 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "D:\\tmp\\1640635147069263874"; - String localPathUrl = "D:\\tmp\\1640635147069263874"; - -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); -// BufferedImage bii = convertLayout(bi, alpha); -// //生成透明背景图片 -// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +// String pathUrl = "D:\\tmp\\1640635147069263874"; +// String localPathUrl = "D:\\tmp\\1640635147069263874"; // -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); -// BufferedImage b0 = convertLayout(b, alpha); -// //生成透明背景图片 -// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - - // 目标文件地址 - String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; - // 添加电子印章后文件存放地址 - String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; - //WORD转PDF存放位置 - String pdfNewUrl = localPathUrl + "\\tem.pdf"; - //电子印章图片地址 - String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; - //电子签名图片地址 - String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; - // word文档内容关键字 - String keyWord = "批准人"; - FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); - List electronicSealList = new ArrayList(11); - int count = 0; - ElectronicImage electronicImage = defaultElectronicSignName("批准人"); - electronicImage.setElectronicSealImageUrl(stampNameImgUr); - electronicSealList.add(electronicImage); - addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); - // 将新word转化为pdf文件 - electronicImage = defaultElectronicSignSeal("", 0); - electronicImage.setElectronicSealImageUrl(stampSealImgUrl); - electronicSealList.add(electronicImage); - addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - -// electronicImage=defaultElectronicSignSeal("",120f); +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +//// BufferedImage bii = convertLayout(bi, alpha); +//// //生成透明背景图片 +//// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +//// +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +//// BufferedImage b0 = convertLayout(b, alpha); +//// //生成透明背景图片 +//// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); +// +// +// // 目标文件地址 +// String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; +// // 添加电子印章后文件存放地址 +// String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; +// // word文档内容关键字 +// String keyWord = "批准人"; +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// int count = 0; +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// // 将新word转化为pdf文件 +// electronicImage = defaultElectronicSignSeal("", 0); // electronicImage.setElectronicSealImageUrl(stampSealImgUrl); // electronicSealList.add(electronicImage); // addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); -// electronicImage=defaultElectronicSignSeal("",240f); -// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); -// electronicSealList.add(electronicImage); -// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - // 将新word转化为pdf文件 - addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// +//// electronicImage=defaultElectronicSignSeal("",120f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +//// electronicImage=defaultElectronicSignSeal("",240f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +// // 将新word转化为pdf文件 +// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("name", "2334"); + equipmentFixedAssetsMap.put("assetNo", "no1"); + equipmentFixedAssetsMap.put("assetModel", "机甲"); + equipmentFixedAssetsMap.put("validDate", "2023-04-19"); + assetList.add(equipmentFixedAssetsMap); + params.put("assetList", assetList); + exportWord("D:\\casic\\tmp\\检定审批单_1681870127973.docx", "D:\\casic\\tmp\\", "12315.docx", params); } protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index c6db37e..46a633f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -137,7 +137,7 @@ List nameList = null; try { input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "APPLICATION_OCTET_STREAM", IOUtils.toByteArray(input)); MultipartFile[] multipartFiles = new MultipartFile[1]; multipartFiles[0] = multipartFile; nameList = minioUtil.upload(multipartFiles); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java deleted file mode 100644 index b0a2c83..0000000 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.casic.missiles.service.listeners.register.data; - -import com.casic.missiles.dto.business.certificate.ElectronicImage; -import com.casic.missiles.dto.business.certificate.FilePrintRegister; -import com.casic.missiles.dto.flowable.ApprovalLogResponse; -import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.customer.CustomerSampleInfo; -import com.casic.missiles.service.business.IBusinessOrderService; -import com.casic.missiles.service.customer.CustomerSampleService; -import com.casic.missiles.service.flowable.ApprovalOperateService; -import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; -import java.io.File; -import java.util.*; - -/** - * 文件构建数据 spi - * - * @author cz - * @date 2023-03-10 - */ -public class CertificateFileDataSupport extends FileImageTemplateProvider { - - @Autowired - protected ApprovalOperateService approvalOperateService; - @Autowired - protected IBusinessOrderService businessOrderService; - @Autowired - protected CustomerSampleService customerSampleService; - @Resource - protected PrintFileRegisterMapper fileRegisterMapper; - - /** - * 初始化文件数据注册信息 - * 1、获取证书模板 - * 2、设置临时处理空间路径、文件名称、文件资源路径 - * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 - */ - protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { - templateFileDir = templateFileDir + certificateReport.getId() + File.separator; - String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); - filePrintRegister.setFileName(fileName); - filePrintRegister.setTemDir(templateFileDir); - filePrintRegister.setTemplatePath(templateFileDir + fileName); - filePrintRegister.setFileNameId(certificateReport.getId()); - List fileNames = new ArrayList<>(); - fileNames.add(fileName); - filePrintRegister.setBeDownloadedFileNames(fileNames); - } - - - /** - * 电子签名创建器 - */ - protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { - List electronicImageList = new ArrayList<>(); - for (int i = 0; i < keyParamList.size(); i++) { - if (!approvalLogMap.containsKey(keyParamList.get(i))) { - continue; - } - final String customizedSignName = customizedSignNames.get(i); - List approvalLogList = approvalLogMap.get(keyParamList.get(i)); - if (CollectionUtils.isNotEmpty(approvalLogList)) { - approvalLogList.forEach( - approvalLog -> { - ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); - String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(signFileName); - electronicImageList.add(electronicImage); - } - ); - } - } - return electronicImageList; - } - - /** - * 电子签章获取 - * - * @param electronicSealId 证书报告文件数据 - * @param electronicImage 关键字 - * @return - */ - protected ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { - String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); - return electronicImage; - } - - /** - * 参数在模板中起替换作用 - * 基本所包含的参数替换 - * @param metaData - * @return - */ - protected Map certificateFilePopulateParamCreator(BusinessCertificateReport metaData) { - Calendar now = Calendar.getInstance(); - BusinessOrder businessOrder = businessOrderService.orderDetail(metaData.getOrderId()); - CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(metaData.getSampleId()); - Map params = new HashMap<>(); - params.put("customerName", businessOrder.getCustomerName()); - params.put("customerAddress", businessOrder.getCustomerAddress()); - params.put("sampleModel", customerSampleInfo.getSampleModel()); - params.put("sampleNo", customerSampleInfo.getSampleNo()); - params.put("sampleName", customerSampleInfo.getSampleName()); - params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); - params.put("y", now.get(Calendar.YEAR)); - params.put("m", (now.get(Calendar.MONTH) + 1)); - params.put("d", now.get(Calendar.DAY_OF_MONTH)); - return params; - } - -} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java new file mode 100644 index 0000000..dae0927 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java @@ -0,0 +1,115 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.customer.CustomerService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * 参数填充创建类 + */ +@Component +@Slf4j +public class FileParamDataCreator { + @Autowired + private IBusinessOrderService businessOrderService; + @Autowired + private CustomerService customerService; + @Autowired + private CustomerSampleService customerSampleService; + @Autowired + private IBusinessSiteExecutiveInfoEquipmentRelationService equipmentRelationInfoService; + private BusinessOrder businessOrder; + private Map fileParamData; + + FileParamDataCreator builder() { + fileParamData = new HashMap<>(); + return this; + } + + /** + * 基本年月日信息 + */ + FileParamDataCreator loadTime() { + Calendar now = Calendar.getInstance(); + now.setTime(new Date()); + fileParamData.put("y", now.get(Calendar.YEAR)); + fileParamData.put("m", now.get(Calendar.MONTH) + 1); + fileParamData.put("d", now.get(Calendar.DAY_OF_MONTH)); + return this; + } + + /** + * 委托书信息 + */ + FileParamDataCreator businessOrder(Long orderId) { + businessOrder = businessOrderService.orderDetail(orderId); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + return this; + } + + /** + * 样品信息 + */ + FileParamDataCreator customerSample(Long sampleId) { + CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(sampleId); + fileParamData.put("customerSampleName", customerSampleInfo.getSampleName()); + fileParamData.put("customerSampleNo", customerSampleInfo.getSampleNo()); + fileParamData.put("customerAddress", customerSampleInfo.getCustomerAddress()); + fileParamData.put("deliverer", customerSampleInfo.getDeliverer()); + fileParamData.put("delivererTel", customerSampleInfo.getDelivererTel()); + return this; + } + + /** + * 客户信息 + */ + FileParamDataCreator customerInfo() { + CustomerInfo customerInfo = customerService.customerDetail(businessOrder.getCustomerId()); + fileParamData.put("director", customerInfo.getCustomerName()); + fileParamData.put("customerPhone", customerInfo.getPhone()); + fileParamData.put("customerName", customerInfo.getCustomerName()); + fileParamData.put("customerNo", customerInfo.getCustomerNo()); + return this; + } + /** + * 外场检定查询测量设备 + */ + FileParamDataCreator equipmentFixedAssets(Long siteExecutiveLogId) { + try { + List equipmentFixedAssetList = equipmentRelationInfoService.getEquipmentsByExecutiveInfoId(siteExecutiveLogId); + List> assetList = new ArrayList<>(); + equipmentFixedAssetList.forEach( + equipmentFixedAsset -> { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("assetName", equipmentFixedAsset.getEquipmentName()); + equipmentFixedAssetsMap.put("assetNo", equipmentFixedAsset.getEquipmentNo()); + equipmentFixedAssetsMap.put("assetModel", equipmentFixedAsset.getModelNo()); + equipmentFixedAssetsMap.put("validDate", equipmentFixedAsset.getValidDate()); + assetList.add(equipmentFixedAssetsMap); + } + ); + fileParamData.put("assetList", assetList); + } catch (Exception ex) { + log.error("query EquipmentFixedAssets table is fail,the id is {},the message is {}", siteExecutiveLogId, ex); + } + return this; + } + + Map build() { + return this.fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java new file mode 100644 index 0000000..a5e780b --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java @@ -0,0 +1,155 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.business.certificate.ElectronicImage; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.flowable.ApprovalOperateService; +import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.annotation.Resource; +import java.io.File; +import java.util.*; + +/** + * 文件构建数据 spi + * + * @author cz + * @date 2023-03-10 + */ +public class PrintFileDataSupport extends FileImageTemplateProvider { + + @Autowired + protected ApprovalOperateService approvalOperateService; + @Resource + protected PrintFileRegisterMapper fileRegisterMapper; + + @Resource + private FileParamDataCreator fileParamDataCreator; + + /** + * 初始化文件数据注册信息 + * 1、获取证书模板 + * 2、设置临时处理空间路径、文件名称、文件资源路径 + * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 + */ + protected final FilePrintRegister initialization(String templateFileDir, + Long id, String fileName) { + FilePrintRegister filePrintRegister = new FilePrintRegister(); + templateFileDir = templateFileDir + id + File.separator; + filePrintRegister.setFileName(fileName); + filePrintRegister.setTemDir(templateFileDir); + filePrintRegister.setTemplatePath(templateFileDir + fileName); + filePrintRegister.setFileNameId(id); + List fileNames = new ArrayList<>(); + fileNames.add(fileName); + filePrintRegister.setBeDownloadedFileNames(fileNames); + return filePrintRegister; + } + + public String getTemplateName(T templateIdOrName) { + String fileName = ""; + if (templateIdOrName instanceof Long) { + fileName = fileRegisterMapper.getSignFileSealById((Long) templateIdOrName, "system_template"); + } + if (templateIdOrName instanceof String) { + fileName = fileRegisterMapper.getFileNameByName((String) templateIdOrName, "system_template"); + } + return fileName; + } + + + /** + * 电子签名创建器 + */ + protected final List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { + List electronicImageList = new ArrayList<>(); + for (int i = 0; i < keyParamList.size(); i++) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { + continue; + } + final String customizedSignName = customizedSignNames.get(i); + List approvalLogList = approvalLogMap.get(keyParamList.get(i)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + approvalLogList.forEach( + approvalLog -> { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + return; + } + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + ); + } + } + return electronicImageList; + } + + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + protected final ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + /** + * 证书参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @param sampleId + * @return + */ + protected Map certificateFileParamCreator(Long orderId, Long sampleId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerSample(sampleId) + .customerInfo() + .build(); + return fileParamData; + } + + /** + * 外检环境参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @return + */ + protected Map siteFileParamCreator(Long orderId, Long siteId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerInfo() + .equipmentFixedAssets(siteId) + .build(); + return fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java index db535ea..4e2bc25 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java @@ -6,7 +6,7 @@ import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.service.listeners.register.data.CertificateFileDataSupport; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -17,7 +17,7 @@ * 校准证书参数生成 */ @Component(PrintFileDataBeanNameAliasEnum.CALIBRATION_CERTIFICATE_BEAN) -public class CalibrationPrintFileData extends CertificateFileDataSupport implements PrintFileDataGeneric { +public class CalibrationPrintFileData extends PrintFileDataSupport implements PrintFileDataGeneric { /** * 1、进行打印证书对象的初始化 @@ -31,24 +31,26 @@ @Override public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { BusinessCertificateReport metaData = (BusinessCertificateReport) object; - FilePrintRegister filePrintRegister = new FilePrintRegister(); //初始化,生成模板文件 - initialization(filePrintRegister, templateFileDir, metaData); + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); //查询工作流审批记录 List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); Map> ApprovalLogMap = approvalLogList.stream() - .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); //定制化签名开发预处理,定制化参数 customizedSignNamesParamCreator(); //定制化签名开发 - List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + electronicSignList.addAll(customizedElectronicSignSeals(metaData, filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); //填充定制化的参数 - filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); + filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(), metaData.getSampleId())); return filePrintRegister; } + + + /** * 定制化电子签章文件 * @@ -58,12 +60,12 @@ private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); ElectronicImage electronicImage = defaultElectronicSignSeal("发证单位"); - electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage,filePrintRegister)); + electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage, filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); - List electronicImages= autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); - for (int i=0;i electronicImages = autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); + for (int i = 0; i < approvalSignIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(approvalSignIds[i]), electronicImages.get(i), filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java index ba31878..31ea884 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java @@ -6,7 +6,7 @@ import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.service.listeners.register.data.CertificateFileDataSupport; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -20,7 +20,7 @@ * 测试报告参数生成 */ @Component(PrintFileDataBeanNameAliasEnum.TEST_REPORT_BEAN) -public class TestReportPrintFileData extends CertificateFileDataSupport implements PrintFileDataGeneric { +public class TestReportPrintFileData extends PrintFileDataSupport implements PrintFileDataGeneric { /** * 1、进行打印证书对象的初始化 @@ -30,23 +30,23 @@ * 5、获取电子签章的文件列表 * 6、证书报告其他参数填充的列表(可重写) * - * @param object 证书报告信息 + * @param object 证书报告信息 * @param templateFileDir 本地进行打印报告组合的路径 * @return */ @Override public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { - BusinessCertificateReport metaData=(BusinessCertificateReport) object; - FilePrintRegister filePrintRegister = new FilePrintRegister(); - initialization(filePrintRegister, templateFileDir, metaData); + BusinessCertificateReport metaData = (BusinessCertificateReport) object; + //初始化,生成模板文件 + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); Map> ApprovalLogMap = approvalLogList.stream() - .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); customizedSignNamesParamCreator(); - List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + electronicSignList.addAll(customizedElectronicSignSeals(metaData, filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); - filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); + filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(),metaData.getSampleId())); return filePrintRegister; } @@ -59,12 +59,12 @@ private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); ElectronicImage electronicImage = defaultElectronicSignSeal("发证单位"); - electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage,filePrintRegister)); + electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage, filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); - List electronicImages= autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); - for (int i=0;i electronicImages = autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); + for (int i = 0; i < approvalSignIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(approvalSignIds[i]), electronicImages.get(i), filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index c25d236..0af5ea3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -18,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -425,59 +426,69 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "D:\\tmp\\1640635147069263874"; - String localPathUrl = "D:\\tmp\\1640635147069263874"; - -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); -// BufferedImage bii = convertLayout(bi, alpha); -// //生成透明背景图片 -// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +// String pathUrl = "D:\\tmp\\1640635147069263874"; +// String localPathUrl = "D:\\tmp\\1640635147069263874"; // -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); -// BufferedImage b0 = convertLayout(b, alpha); -// //生成透明背景图片 -// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - - // 目标文件地址 - String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; - // 添加电子印章后文件存放地址 - String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; - //WORD转PDF存放位置 - String pdfNewUrl = localPathUrl + "\\tem.pdf"; - //电子印章图片地址 - String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; - //电子签名图片地址 - String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; - // word文档内容关键字 - String keyWord = "批准人"; - FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); - List electronicSealList = new ArrayList(11); - int count = 0; - ElectronicImage electronicImage = defaultElectronicSignName("批准人"); - electronicImage.setElectronicSealImageUrl(stampNameImgUr); - electronicSealList.add(electronicImage); - addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); - // 将新word转化为pdf文件 - electronicImage = defaultElectronicSignSeal("", 0); - electronicImage.setElectronicSealImageUrl(stampSealImgUrl); - electronicSealList.add(electronicImage); - addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - -// electronicImage=defaultElectronicSignSeal("",120f); +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +//// BufferedImage bii = convertLayout(bi, alpha); +//// //生成透明背景图片 +//// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +//// +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +//// BufferedImage b0 = convertLayout(b, alpha); +//// //生成透明背景图片 +//// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); +// +// +// // 目标文件地址 +// String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; +// // 添加电子印章后文件存放地址 +// String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; +// // word文档内容关键字 +// String keyWord = "批准人"; +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// int count = 0; +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// // 将新word转化为pdf文件 +// electronicImage = defaultElectronicSignSeal("", 0); // electronicImage.setElectronicSealImageUrl(stampSealImgUrl); // electronicSealList.add(electronicImage); // addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); -// electronicImage=defaultElectronicSignSeal("",240f); -// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); -// electronicSealList.add(electronicImage); -// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - // 将新word转化为pdf文件 - addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// +//// electronicImage=defaultElectronicSignSeal("",120f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +//// electronicImage=defaultElectronicSignSeal("",240f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +// // 将新word转化为pdf文件 +// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("name", "2334"); + equipmentFixedAssetsMap.put("assetNo", "no1"); + equipmentFixedAssetsMap.put("assetModel", "机甲"); + equipmentFixedAssetsMap.put("validDate", "2023-04-19"); + assetList.add(equipmentFixedAssetsMap); + params.put("assetList", assetList); + exportWord("D:\\casic\\tmp\\检定审批单_1681870127973.docx", "D:\\casic\\tmp\\", "12315.docx", params); } protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index c6db37e..46a633f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -137,7 +137,7 @@ List nameList = null; try { input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "APPLICATION_OCTET_STREAM", IOUtils.toByteArray(input)); MultipartFile[] multipartFiles = new MultipartFile[1]; multipartFiles[0] = multipartFile; nameList = minioUtil.upload(multipartFiles); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java deleted file mode 100644 index b0a2c83..0000000 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.casic.missiles.service.listeners.register.data; - -import com.casic.missiles.dto.business.certificate.ElectronicImage; -import com.casic.missiles.dto.business.certificate.FilePrintRegister; -import com.casic.missiles.dto.flowable.ApprovalLogResponse; -import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.customer.CustomerSampleInfo; -import com.casic.missiles.service.business.IBusinessOrderService; -import com.casic.missiles.service.customer.CustomerSampleService; -import com.casic.missiles.service.flowable.ApprovalOperateService; -import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; -import java.io.File; -import java.util.*; - -/** - * 文件构建数据 spi - * - * @author cz - * @date 2023-03-10 - */ -public class CertificateFileDataSupport extends FileImageTemplateProvider { - - @Autowired - protected ApprovalOperateService approvalOperateService; - @Autowired - protected IBusinessOrderService businessOrderService; - @Autowired - protected CustomerSampleService customerSampleService; - @Resource - protected PrintFileRegisterMapper fileRegisterMapper; - - /** - * 初始化文件数据注册信息 - * 1、获取证书模板 - * 2、设置临时处理空间路径、文件名称、文件资源路径 - * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 - */ - protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { - templateFileDir = templateFileDir + certificateReport.getId() + File.separator; - String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); - filePrintRegister.setFileName(fileName); - filePrintRegister.setTemDir(templateFileDir); - filePrintRegister.setTemplatePath(templateFileDir + fileName); - filePrintRegister.setFileNameId(certificateReport.getId()); - List fileNames = new ArrayList<>(); - fileNames.add(fileName); - filePrintRegister.setBeDownloadedFileNames(fileNames); - } - - - /** - * 电子签名创建器 - */ - protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { - List electronicImageList = new ArrayList<>(); - for (int i = 0; i < keyParamList.size(); i++) { - if (!approvalLogMap.containsKey(keyParamList.get(i))) { - continue; - } - final String customizedSignName = customizedSignNames.get(i); - List approvalLogList = approvalLogMap.get(keyParamList.get(i)); - if (CollectionUtils.isNotEmpty(approvalLogList)) { - approvalLogList.forEach( - approvalLog -> { - ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); - String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(signFileName); - electronicImageList.add(electronicImage); - } - ); - } - } - return electronicImageList; - } - - /** - * 电子签章获取 - * - * @param electronicSealId 证书报告文件数据 - * @param electronicImage 关键字 - * @return - */ - protected ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { - String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); - return electronicImage; - } - - /** - * 参数在模板中起替换作用 - * 基本所包含的参数替换 - * @param metaData - * @return - */ - protected Map certificateFilePopulateParamCreator(BusinessCertificateReport metaData) { - Calendar now = Calendar.getInstance(); - BusinessOrder businessOrder = businessOrderService.orderDetail(metaData.getOrderId()); - CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(metaData.getSampleId()); - Map params = new HashMap<>(); - params.put("customerName", businessOrder.getCustomerName()); - params.put("customerAddress", businessOrder.getCustomerAddress()); - params.put("sampleModel", customerSampleInfo.getSampleModel()); - params.put("sampleNo", customerSampleInfo.getSampleNo()); - params.put("sampleName", customerSampleInfo.getSampleName()); - params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); - params.put("y", now.get(Calendar.YEAR)); - params.put("m", (now.get(Calendar.MONTH) + 1)); - params.put("d", now.get(Calendar.DAY_OF_MONTH)); - return params; - } - -} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java new file mode 100644 index 0000000..dae0927 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java @@ -0,0 +1,115 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.customer.CustomerService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * 参数填充创建类 + */ +@Component +@Slf4j +public class FileParamDataCreator { + @Autowired + private IBusinessOrderService businessOrderService; + @Autowired + private CustomerService customerService; + @Autowired + private CustomerSampleService customerSampleService; + @Autowired + private IBusinessSiteExecutiveInfoEquipmentRelationService equipmentRelationInfoService; + private BusinessOrder businessOrder; + private Map fileParamData; + + FileParamDataCreator builder() { + fileParamData = new HashMap<>(); + return this; + } + + /** + * 基本年月日信息 + */ + FileParamDataCreator loadTime() { + Calendar now = Calendar.getInstance(); + now.setTime(new Date()); + fileParamData.put("y", now.get(Calendar.YEAR)); + fileParamData.put("m", now.get(Calendar.MONTH) + 1); + fileParamData.put("d", now.get(Calendar.DAY_OF_MONTH)); + return this; + } + + /** + * 委托书信息 + */ + FileParamDataCreator businessOrder(Long orderId) { + businessOrder = businessOrderService.orderDetail(orderId); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + return this; + } + + /** + * 样品信息 + */ + FileParamDataCreator customerSample(Long sampleId) { + CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(sampleId); + fileParamData.put("customerSampleName", customerSampleInfo.getSampleName()); + fileParamData.put("customerSampleNo", customerSampleInfo.getSampleNo()); + fileParamData.put("customerAddress", customerSampleInfo.getCustomerAddress()); + fileParamData.put("deliverer", customerSampleInfo.getDeliverer()); + fileParamData.put("delivererTel", customerSampleInfo.getDelivererTel()); + return this; + } + + /** + * 客户信息 + */ + FileParamDataCreator customerInfo() { + CustomerInfo customerInfo = customerService.customerDetail(businessOrder.getCustomerId()); + fileParamData.put("director", customerInfo.getCustomerName()); + fileParamData.put("customerPhone", customerInfo.getPhone()); + fileParamData.put("customerName", customerInfo.getCustomerName()); + fileParamData.put("customerNo", customerInfo.getCustomerNo()); + return this; + } + /** + * 外场检定查询测量设备 + */ + FileParamDataCreator equipmentFixedAssets(Long siteExecutiveLogId) { + try { + List equipmentFixedAssetList = equipmentRelationInfoService.getEquipmentsByExecutiveInfoId(siteExecutiveLogId); + List> assetList = new ArrayList<>(); + equipmentFixedAssetList.forEach( + equipmentFixedAsset -> { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("assetName", equipmentFixedAsset.getEquipmentName()); + equipmentFixedAssetsMap.put("assetNo", equipmentFixedAsset.getEquipmentNo()); + equipmentFixedAssetsMap.put("assetModel", equipmentFixedAsset.getModelNo()); + equipmentFixedAssetsMap.put("validDate", equipmentFixedAsset.getValidDate()); + assetList.add(equipmentFixedAssetsMap); + } + ); + fileParamData.put("assetList", assetList); + } catch (Exception ex) { + log.error("query EquipmentFixedAssets table is fail,the id is {},the message is {}", siteExecutiveLogId, ex); + } + return this; + } + + Map build() { + return this.fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java new file mode 100644 index 0000000..a5e780b --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java @@ -0,0 +1,155 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.business.certificate.ElectronicImage; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.flowable.ApprovalOperateService; +import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.annotation.Resource; +import java.io.File; +import java.util.*; + +/** + * 文件构建数据 spi + * + * @author cz + * @date 2023-03-10 + */ +public class PrintFileDataSupport extends FileImageTemplateProvider { + + @Autowired + protected ApprovalOperateService approvalOperateService; + @Resource + protected PrintFileRegisterMapper fileRegisterMapper; + + @Resource + private FileParamDataCreator fileParamDataCreator; + + /** + * 初始化文件数据注册信息 + * 1、获取证书模板 + * 2、设置临时处理空间路径、文件名称、文件资源路径 + * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 + */ + protected final FilePrintRegister initialization(String templateFileDir, + Long id, String fileName) { + FilePrintRegister filePrintRegister = new FilePrintRegister(); + templateFileDir = templateFileDir + id + File.separator; + filePrintRegister.setFileName(fileName); + filePrintRegister.setTemDir(templateFileDir); + filePrintRegister.setTemplatePath(templateFileDir + fileName); + filePrintRegister.setFileNameId(id); + List fileNames = new ArrayList<>(); + fileNames.add(fileName); + filePrintRegister.setBeDownloadedFileNames(fileNames); + return filePrintRegister; + } + + public String getTemplateName(T templateIdOrName) { + String fileName = ""; + if (templateIdOrName instanceof Long) { + fileName = fileRegisterMapper.getSignFileSealById((Long) templateIdOrName, "system_template"); + } + if (templateIdOrName instanceof String) { + fileName = fileRegisterMapper.getFileNameByName((String) templateIdOrName, "system_template"); + } + return fileName; + } + + + /** + * 电子签名创建器 + */ + protected final List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { + List electronicImageList = new ArrayList<>(); + for (int i = 0; i < keyParamList.size(); i++) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { + continue; + } + final String customizedSignName = customizedSignNames.get(i); + List approvalLogList = approvalLogMap.get(keyParamList.get(i)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + approvalLogList.forEach( + approvalLog -> { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + return; + } + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + ); + } + } + return electronicImageList; + } + + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + protected final ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + /** + * 证书参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @param sampleId + * @return + */ + protected Map certificateFileParamCreator(Long orderId, Long sampleId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerSample(sampleId) + .customerInfo() + .build(); + return fileParamData; + } + + /** + * 外检环境参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @return + */ + protected Map siteFileParamCreator(Long orderId, Long siteId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerInfo() + .equipmentFixedAssets(siteId) + .build(); + return fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java index db535ea..4e2bc25 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java @@ -6,7 +6,7 @@ import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.service.listeners.register.data.CertificateFileDataSupport; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -17,7 +17,7 @@ * 校准证书参数生成 */ @Component(PrintFileDataBeanNameAliasEnum.CALIBRATION_CERTIFICATE_BEAN) -public class CalibrationPrintFileData extends CertificateFileDataSupport implements PrintFileDataGeneric { +public class CalibrationPrintFileData extends PrintFileDataSupport implements PrintFileDataGeneric { /** * 1、进行打印证书对象的初始化 @@ -31,24 +31,26 @@ @Override public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { BusinessCertificateReport metaData = (BusinessCertificateReport) object; - FilePrintRegister filePrintRegister = new FilePrintRegister(); //初始化,生成模板文件 - initialization(filePrintRegister, templateFileDir, metaData); + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); //查询工作流审批记录 List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); Map> ApprovalLogMap = approvalLogList.stream() - .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); //定制化签名开发预处理,定制化参数 customizedSignNamesParamCreator(); //定制化签名开发 - List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + electronicSignList.addAll(customizedElectronicSignSeals(metaData, filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); //填充定制化的参数 - filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); + filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(), metaData.getSampleId())); return filePrintRegister; } + + + /** * 定制化电子签章文件 * @@ -58,12 +60,12 @@ private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); ElectronicImage electronicImage = defaultElectronicSignSeal("发证单位"); - electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage,filePrintRegister)); + electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage, filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); - List electronicImages= autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); - for (int i=0;i electronicImages = autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); + for (int i = 0; i < approvalSignIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(approvalSignIds[i]), electronicImages.get(i), filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java index ba31878..31ea884 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java @@ -6,7 +6,7 @@ import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.service.listeners.register.data.CertificateFileDataSupport; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -20,7 +20,7 @@ * 测试报告参数生成 */ @Component(PrintFileDataBeanNameAliasEnum.TEST_REPORT_BEAN) -public class TestReportPrintFileData extends CertificateFileDataSupport implements PrintFileDataGeneric { +public class TestReportPrintFileData extends PrintFileDataSupport implements PrintFileDataGeneric { /** * 1、进行打印证书对象的初始化 @@ -30,23 +30,23 @@ * 5、获取电子签章的文件列表 * 6、证书报告其他参数填充的列表(可重写) * - * @param object 证书报告信息 + * @param object 证书报告信息 * @param templateFileDir 本地进行打印报告组合的路径 * @return */ @Override public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { - BusinessCertificateReport metaData=(BusinessCertificateReport) object; - FilePrintRegister filePrintRegister = new FilePrintRegister(); - initialization(filePrintRegister, templateFileDir, metaData); + BusinessCertificateReport metaData = (BusinessCertificateReport) object; + //初始化,生成模板文件 + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); Map> ApprovalLogMap = approvalLogList.stream() - .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); customizedSignNamesParamCreator(); - List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + electronicSignList.addAll(customizedElectronicSignSeals(metaData, filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); - filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); + filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(),metaData.getSampleId())); return filePrintRegister; } @@ -59,12 +59,12 @@ private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); ElectronicImage electronicImage = defaultElectronicSignSeal("发证单位"); - electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage,filePrintRegister)); + electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage, filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); - List electronicImages= autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); - for (int i=0;i electronicImages = autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); + for (int i = 0; i < approvalSignIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(approvalSignIds[i]), electronicImages.get(i), filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java new file mode 100644 index 0000000..49864ae --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java @@ -0,0 +1,86 @@ +package com.casic.missiles.service.listeners.register.data.site; + + +import com.casic.missiles.dto.business.certificate.ElectronicImage; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; +import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.util.ObjectUtils; + +import java.util.*; +import java.util.stream.Collectors; + +@Component(PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN) +public class CalibrationFileData extends PrintFileDataSupport implements PrintFileDataGeneric { + + @Value("${casic.template.calibration}") + private String calibrationTemplateName; + + @Override + public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { + BusinessSiteExecutiveInfo metaData = (BusinessSiteExecutiveInfo) object; + //初始化,生成模板文件 + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(calibrationTemplateName)); + //查询工作流审批记录 + List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); + Map> ApprovalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); + //定制化签名开发预处理,定制化参数 + customizedSignNamesParamCreator(); + //定制化签名开发 + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + filePrintRegister.setElectronicImageList(electronicSignList); + //填充定制化的参数 + filePrintRegister.setParams(siteFileParamCreator(metaData.getOrderId(), metaData.getId())); + filePrintRegister.getParams().putAll(populateCalibration(metaData)); + resolverApprovalTime(filePrintRegister, ApprovalLogMap); + return filePrintRegister; + } + + private Map populateCalibration(BusinessSiteExecutiveInfo metaData) { + Map calibrationDataParams = new HashMap<>(); + calibrationDataParams.put("siteExecutiveNo", metaData.getSiteExecutiveNo()); + calibrationDataParams.put("executiveAddress", metaData.getExecutiveAddress()); + calibrationDataParams.put("siteExecutiveName", metaData.getSiteExecutiveName()); +// environmentDataParams.put("zeroVoltage", metaData.getZeroGroundVoltage()); + calibrationDataParams.put("executiveAddress", metaData.getExecutiveAddress()); + calibrationDataParams.put("executiveEnvironment", metaData.getExecutiveEnvironment()); + return calibrationDataParams; + } + + /** + * 文件自定义名称参数构建器 + */ + protected void customizedSignNamesParamCreator() { + keyParamList = Arrays.asList("审核人", "批准人"); + customizedSignNames = Arrays.asList("技术负责人审核", "计量测试站主任批准"); + } + + private void resolverApprovalTime(FilePrintRegister filePrintRegister, Map> ApprovalLogMap) { + for (int i = 0; i < keyParamList.size(); i++) { + if (ApprovalLogMap.containsKey(keyParamList.get(i))) { + List approvalLogResponseList = ApprovalLogMap.get(keyParamList.get(i)); + if (CollectionUtils.isNotEmpty(approvalLogResponseList)) { + Optional optionalApprovalLogResponse = approvalLogResponseList.stream().findFirst(); + if (optionalApprovalLogResponse.isPresent()) { + Date nodeFinishTime = optionalApprovalLogResponse.get().getFinishTime(); + if(!ObjectUtils.isEmpty(nodeFinishTime)){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(nodeFinishTime); + filePrintRegister.getParams().put("y" + i, calendar.get(Calendar.YEAR)); + filePrintRegister.getParams().put("m" + i, calendar.get(Calendar.MONTH) + 1); + filePrintRegister.getParams().put("d" + i, calendar.get(Calendar.DAY_OF_MONTH)); + } + } + } + } + } + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index c25d236..0af5ea3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -18,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -425,59 +426,69 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "D:\\tmp\\1640635147069263874"; - String localPathUrl = "D:\\tmp\\1640635147069263874"; - -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); -// BufferedImage bii = convertLayout(bi, alpha); -// //生成透明背景图片 -// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +// String pathUrl = "D:\\tmp\\1640635147069263874"; +// String localPathUrl = "D:\\tmp\\1640635147069263874"; // -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); -// BufferedImage b0 = convertLayout(b, alpha); -// //生成透明背景图片 -// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - - // 目标文件地址 - String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; - // 添加电子印章后文件存放地址 - String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; - //WORD转PDF存放位置 - String pdfNewUrl = localPathUrl + "\\tem.pdf"; - //电子印章图片地址 - String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; - //电子签名图片地址 - String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; - // word文档内容关键字 - String keyWord = "批准人"; - FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); - List electronicSealList = new ArrayList(11); - int count = 0; - ElectronicImage electronicImage = defaultElectronicSignName("批准人"); - electronicImage.setElectronicSealImageUrl(stampNameImgUr); - electronicSealList.add(electronicImage); - addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); - // 将新word转化为pdf文件 - electronicImage = defaultElectronicSignSeal("", 0); - electronicImage.setElectronicSealImageUrl(stampSealImgUrl); - electronicSealList.add(electronicImage); - addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - -// electronicImage=defaultElectronicSignSeal("",120f); +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +//// BufferedImage bii = convertLayout(bi, alpha); +//// //生成透明背景图片 +//// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +//// +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +//// BufferedImage b0 = convertLayout(b, alpha); +//// //生成透明背景图片 +//// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); +// +// +// // 目标文件地址 +// String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; +// // 添加电子印章后文件存放地址 +// String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; +// // word文档内容关键字 +// String keyWord = "批准人"; +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// int count = 0; +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// // 将新word转化为pdf文件 +// electronicImage = defaultElectronicSignSeal("", 0); // electronicImage.setElectronicSealImageUrl(stampSealImgUrl); // electronicSealList.add(electronicImage); // addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); -// electronicImage=defaultElectronicSignSeal("",240f); -// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); -// electronicSealList.add(electronicImage); -// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - // 将新word转化为pdf文件 - addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// +//// electronicImage=defaultElectronicSignSeal("",120f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +//// electronicImage=defaultElectronicSignSeal("",240f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +// // 将新word转化为pdf文件 +// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("name", "2334"); + equipmentFixedAssetsMap.put("assetNo", "no1"); + equipmentFixedAssetsMap.put("assetModel", "机甲"); + equipmentFixedAssetsMap.put("validDate", "2023-04-19"); + assetList.add(equipmentFixedAssetsMap); + params.put("assetList", assetList); + exportWord("D:\\casic\\tmp\\检定审批单_1681870127973.docx", "D:\\casic\\tmp\\", "12315.docx", params); } protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index c6db37e..46a633f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -137,7 +137,7 @@ List nameList = null; try { input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "APPLICATION_OCTET_STREAM", IOUtils.toByteArray(input)); MultipartFile[] multipartFiles = new MultipartFile[1]; multipartFiles[0] = multipartFile; nameList = minioUtil.upload(multipartFiles); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java deleted file mode 100644 index b0a2c83..0000000 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.casic.missiles.service.listeners.register.data; - -import com.casic.missiles.dto.business.certificate.ElectronicImage; -import com.casic.missiles.dto.business.certificate.FilePrintRegister; -import com.casic.missiles.dto.flowable.ApprovalLogResponse; -import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.customer.CustomerSampleInfo; -import com.casic.missiles.service.business.IBusinessOrderService; -import com.casic.missiles.service.customer.CustomerSampleService; -import com.casic.missiles.service.flowable.ApprovalOperateService; -import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; -import java.io.File; -import java.util.*; - -/** - * 文件构建数据 spi - * - * @author cz - * @date 2023-03-10 - */ -public class CertificateFileDataSupport extends FileImageTemplateProvider { - - @Autowired - protected ApprovalOperateService approvalOperateService; - @Autowired - protected IBusinessOrderService businessOrderService; - @Autowired - protected CustomerSampleService customerSampleService; - @Resource - protected PrintFileRegisterMapper fileRegisterMapper; - - /** - * 初始化文件数据注册信息 - * 1、获取证书模板 - * 2、设置临时处理空间路径、文件名称、文件资源路径 - * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 - */ - protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { - templateFileDir = templateFileDir + certificateReport.getId() + File.separator; - String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); - filePrintRegister.setFileName(fileName); - filePrintRegister.setTemDir(templateFileDir); - filePrintRegister.setTemplatePath(templateFileDir + fileName); - filePrintRegister.setFileNameId(certificateReport.getId()); - List fileNames = new ArrayList<>(); - fileNames.add(fileName); - filePrintRegister.setBeDownloadedFileNames(fileNames); - } - - - /** - * 电子签名创建器 - */ - protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { - List electronicImageList = new ArrayList<>(); - for (int i = 0; i < keyParamList.size(); i++) { - if (!approvalLogMap.containsKey(keyParamList.get(i))) { - continue; - } - final String customizedSignName = customizedSignNames.get(i); - List approvalLogList = approvalLogMap.get(keyParamList.get(i)); - if (CollectionUtils.isNotEmpty(approvalLogList)) { - approvalLogList.forEach( - approvalLog -> { - ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); - String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(signFileName); - electronicImageList.add(electronicImage); - } - ); - } - } - return electronicImageList; - } - - /** - * 电子签章获取 - * - * @param electronicSealId 证书报告文件数据 - * @param electronicImage 关键字 - * @return - */ - protected ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { - String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); - return electronicImage; - } - - /** - * 参数在模板中起替换作用 - * 基本所包含的参数替换 - * @param metaData - * @return - */ - protected Map certificateFilePopulateParamCreator(BusinessCertificateReport metaData) { - Calendar now = Calendar.getInstance(); - BusinessOrder businessOrder = businessOrderService.orderDetail(metaData.getOrderId()); - CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(metaData.getSampleId()); - Map params = new HashMap<>(); - params.put("customerName", businessOrder.getCustomerName()); - params.put("customerAddress", businessOrder.getCustomerAddress()); - params.put("sampleModel", customerSampleInfo.getSampleModel()); - params.put("sampleNo", customerSampleInfo.getSampleNo()); - params.put("sampleName", customerSampleInfo.getSampleName()); - params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); - params.put("y", now.get(Calendar.YEAR)); - params.put("m", (now.get(Calendar.MONTH) + 1)); - params.put("d", now.get(Calendar.DAY_OF_MONTH)); - return params; - } - -} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java new file mode 100644 index 0000000..dae0927 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java @@ -0,0 +1,115 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.customer.CustomerService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * 参数填充创建类 + */ +@Component +@Slf4j +public class FileParamDataCreator { + @Autowired + private IBusinessOrderService businessOrderService; + @Autowired + private CustomerService customerService; + @Autowired + private CustomerSampleService customerSampleService; + @Autowired + private IBusinessSiteExecutiveInfoEquipmentRelationService equipmentRelationInfoService; + private BusinessOrder businessOrder; + private Map fileParamData; + + FileParamDataCreator builder() { + fileParamData = new HashMap<>(); + return this; + } + + /** + * 基本年月日信息 + */ + FileParamDataCreator loadTime() { + Calendar now = Calendar.getInstance(); + now.setTime(new Date()); + fileParamData.put("y", now.get(Calendar.YEAR)); + fileParamData.put("m", now.get(Calendar.MONTH) + 1); + fileParamData.put("d", now.get(Calendar.DAY_OF_MONTH)); + return this; + } + + /** + * 委托书信息 + */ + FileParamDataCreator businessOrder(Long orderId) { + businessOrder = businessOrderService.orderDetail(orderId); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + return this; + } + + /** + * 样品信息 + */ + FileParamDataCreator customerSample(Long sampleId) { + CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(sampleId); + fileParamData.put("customerSampleName", customerSampleInfo.getSampleName()); + fileParamData.put("customerSampleNo", customerSampleInfo.getSampleNo()); + fileParamData.put("customerAddress", customerSampleInfo.getCustomerAddress()); + fileParamData.put("deliverer", customerSampleInfo.getDeliverer()); + fileParamData.put("delivererTel", customerSampleInfo.getDelivererTel()); + return this; + } + + /** + * 客户信息 + */ + FileParamDataCreator customerInfo() { + CustomerInfo customerInfo = customerService.customerDetail(businessOrder.getCustomerId()); + fileParamData.put("director", customerInfo.getCustomerName()); + fileParamData.put("customerPhone", customerInfo.getPhone()); + fileParamData.put("customerName", customerInfo.getCustomerName()); + fileParamData.put("customerNo", customerInfo.getCustomerNo()); + return this; + } + /** + * 外场检定查询测量设备 + */ + FileParamDataCreator equipmentFixedAssets(Long siteExecutiveLogId) { + try { + List equipmentFixedAssetList = equipmentRelationInfoService.getEquipmentsByExecutiveInfoId(siteExecutiveLogId); + List> assetList = new ArrayList<>(); + equipmentFixedAssetList.forEach( + equipmentFixedAsset -> { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("assetName", equipmentFixedAsset.getEquipmentName()); + equipmentFixedAssetsMap.put("assetNo", equipmentFixedAsset.getEquipmentNo()); + equipmentFixedAssetsMap.put("assetModel", equipmentFixedAsset.getModelNo()); + equipmentFixedAssetsMap.put("validDate", equipmentFixedAsset.getValidDate()); + assetList.add(equipmentFixedAssetsMap); + } + ); + fileParamData.put("assetList", assetList); + } catch (Exception ex) { + log.error("query EquipmentFixedAssets table is fail,the id is {},the message is {}", siteExecutiveLogId, ex); + } + return this; + } + + Map build() { + return this.fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java new file mode 100644 index 0000000..a5e780b --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java @@ -0,0 +1,155 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.business.certificate.ElectronicImage; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.flowable.ApprovalOperateService; +import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.annotation.Resource; +import java.io.File; +import java.util.*; + +/** + * 文件构建数据 spi + * + * @author cz + * @date 2023-03-10 + */ +public class PrintFileDataSupport extends FileImageTemplateProvider { + + @Autowired + protected ApprovalOperateService approvalOperateService; + @Resource + protected PrintFileRegisterMapper fileRegisterMapper; + + @Resource + private FileParamDataCreator fileParamDataCreator; + + /** + * 初始化文件数据注册信息 + * 1、获取证书模板 + * 2、设置临时处理空间路径、文件名称、文件资源路径 + * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 + */ + protected final FilePrintRegister initialization(String templateFileDir, + Long id, String fileName) { + FilePrintRegister filePrintRegister = new FilePrintRegister(); + templateFileDir = templateFileDir + id + File.separator; + filePrintRegister.setFileName(fileName); + filePrintRegister.setTemDir(templateFileDir); + filePrintRegister.setTemplatePath(templateFileDir + fileName); + filePrintRegister.setFileNameId(id); + List fileNames = new ArrayList<>(); + fileNames.add(fileName); + filePrintRegister.setBeDownloadedFileNames(fileNames); + return filePrintRegister; + } + + public String getTemplateName(T templateIdOrName) { + String fileName = ""; + if (templateIdOrName instanceof Long) { + fileName = fileRegisterMapper.getSignFileSealById((Long) templateIdOrName, "system_template"); + } + if (templateIdOrName instanceof String) { + fileName = fileRegisterMapper.getFileNameByName((String) templateIdOrName, "system_template"); + } + return fileName; + } + + + /** + * 电子签名创建器 + */ + protected final List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { + List electronicImageList = new ArrayList<>(); + for (int i = 0; i < keyParamList.size(); i++) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { + continue; + } + final String customizedSignName = customizedSignNames.get(i); + List approvalLogList = approvalLogMap.get(keyParamList.get(i)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + approvalLogList.forEach( + approvalLog -> { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + return; + } + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + ); + } + } + return electronicImageList; + } + + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + protected final ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + /** + * 证书参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @param sampleId + * @return + */ + protected Map certificateFileParamCreator(Long orderId, Long sampleId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerSample(sampleId) + .customerInfo() + .build(); + return fileParamData; + } + + /** + * 外检环境参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @return + */ + protected Map siteFileParamCreator(Long orderId, Long siteId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerInfo() + .equipmentFixedAssets(siteId) + .build(); + return fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java index db535ea..4e2bc25 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java @@ -6,7 +6,7 @@ import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.service.listeners.register.data.CertificateFileDataSupport; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -17,7 +17,7 @@ * 校准证书参数生成 */ @Component(PrintFileDataBeanNameAliasEnum.CALIBRATION_CERTIFICATE_BEAN) -public class CalibrationPrintFileData extends CertificateFileDataSupport implements PrintFileDataGeneric { +public class CalibrationPrintFileData extends PrintFileDataSupport implements PrintFileDataGeneric { /** * 1、进行打印证书对象的初始化 @@ -31,24 +31,26 @@ @Override public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { BusinessCertificateReport metaData = (BusinessCertificateReport) object; - FilePrintRegister filePrintRegister = new FilePrintRegister(); //初始化,生成模板文件 - initialization(filePrintRegister, templateFileDir, metaData); + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); //查询工作流审批记录 List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); Map> ApprovalLogMap = approvalLogList.stream() - .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); //定制化签名开发预处理,定制化参数 customizedSignNamesParamCreator(); //定制化签名开发 - List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + electronicSignList.addAll(customizedElectronicSignSeals(metaData, filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); //填充定制化的参数 - filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); + filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(), metaData.getSampleId())); return filePrintRegister; } + + + /** * 定制化电子签章文件 * @@ -58,12 +60,12 @@ private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); ElectronicImage electronicImage = defaultElectronicSignSeal("发证单位"); - electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage,filePrintRegister)); + electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage, filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); - List electronicImages= autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); - for (int i=0;i electronicImages = autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); + for (int i = 0; i < approvalSignIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(approvalSignIds[i]), electronicImages.get(i), filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java index ba31878..31ea884 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java @@ -6,7 +6,7 @@ import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.service.listeners.register.data.CertificateFileDataSupport; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -20,7 +20,7 @@ * 测试报告参数生成 */ @Component(PrintFileDataBeanNameAliasEnum.TEST_REPORT_BEAN) -public class TestReportPrintFileData extends CertificateFileDataSupport implements PrintFileDataGeneric { +public class TestReportPrintFileData extends PrintFileDataSupport implements PrintFileDataGeneric { /** * 1、进行打印证书对象的初始化 @@ -30,23 +30,23 @@ * 5、获取电子签章的文件列表 * 6、证书报告其他参数填充的列表(可重写) * - * @param object 证书报告信息 + * @param object 证书报告信息 * @param templateFileDir 本地进行打印报告组合的路径 * @return */ @Override public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { - BusinessCertificateReport metaData=(BusinessCertificateReport) object; - FilePrintRegister filePrintRegister = new FilePrintRegister(); - initialization(filePrintRegister, templateFileDir, metaData); + BusinessCertificateReport metaData = (BusinessCertificateReport) object; + //初始化,生成模板文件 + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); Map> ApprovalLogMap = approvalLogList.stream() - .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); customizedSignNamesParamCreator(); - List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + electronicSignList.addAll(customizedElectronicSignSeals(metaData, filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); - filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); + filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(),metaData.getSampleId())); return filePrintRegister; } @@ -59,12 +59,12 @@ private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); ElectronicImage electronicImage = defaultElectronicSignSeal("发证单位"); - electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage,filePrintRegister)); + electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage, filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); - List electronicImages= autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); - for (int i=0;i electronicImages = autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); + for (int i = 0; i < approvalSignIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(approvalSignIds[i]), electronicImages.get(i), filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java new file mode 100644 index 0000000..49864ae --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java @@ -0,0 +1,86 @@ +package com.casic.missiles.service.listeners.register.data.site; + + +import com.casic.missiles.dto.business.certificate.ElectronicImage; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; +import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.util.ObjectUtils; + +import java.util.*; +import java.util.stream.Collectors; + +@Component(PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN) +public class CalibrationFileData extends PrintFileDataSupport implements PrintFileDataGeneric { + + @Value("${casic.template.calibration}") + private String calibrationTemplateName; + + @Override + public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { + BusinessSiteExecutiveInfo metaData = (BusinessSiteExecutiveInfo) object; + //初始化,生成模板文件 + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(calibrationTemplateName)); + //查询工作流审批记录 + List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); + Map> ApprovalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); + //定制化签名开发预处理,定制化参数 + customizedSignNamesParamCreator(); + //定制化签名开发 + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + filePrintRegister.setElectronicImageList(electronicSignList); + //填充定制化的参数 + filePrintRegister.setParams(siteFileParamCreator(metaData.getOrderId(), metaData.getId())); + filePrintRegister.getParams().putAll(populateCalibration(metaData)); + resolverApprovalTime(filePrintRegister, ApprovalLogMap); + return filePrintRegister; + } + + private Map populateCalibration(BusinessSiteExecutiveInfo metaData) { + Map calibrationDataParams = new HashMap<>(); + calibrationDataParams.put("siteExecutiveNo", metaData.getSiteExecutiveNo()); + calibrationDataParams.put("executiveAddress", metaData.getExecutiveAddress()); + calibrationDataParams.put("siteExecutiveName", metaData.getSiteExecutiveName()); +// environmentDataParams.put("zeroVoltage", metaData.getZeroGroundVoltage()); + calibrationDataParams.put("executiveAddress", metaData.getExecutiveAddress()); + calibrationDataParams.put("executiveEnvironment", metaData.getExecutiveEnvironment()); + return calibrationDataParams; + } + + /** + * 文件自定义名称参数构建器 + */ + protected void customizedSignNamesParamCreator() { + keyParamList = Arrays.asList("审核人", "批准人"); + customizedSignNames = Arrays.asList("技术负责人审核", "计量测试站主任批准"); + } + + private void resolverApprovalTime(FilePrintRegister filePrintRegister, Map> ApprovalLogMap) { + for (int i = 0; i < keyParamList.size(); i++) { + if (ApprovalLogMap.containsKey(keyParamList.get(i))) { + List approvalLogResponseList = ApprovalLogMap.get(keyParamList.get(i)); + if (CollectionUtils.isNotEmpty(approvalLogResponseList)) { + Optional optionalApprovalLogResponse = approvalLogResponseList.stream().findFirst(); + if (optionalApprovalLogResponse.isPresent()) { + Date nodeFinishTime = optionalApprovalLogResponse.get().getFinishTime(); + if(!ObjectUtils.isEmpty(nodeFinishTime)){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(nodeFinishTime); + filePrintRegister.getParams().put("y" + i, calendar.get(Calendar.YEAR)); + filePrintRegister.getParams().put("m" + i, calendar.get(Calendar.MONTH) + 1); + filePrintRegister.getParams().put("d" + i, calendar.get(Calendar.DAY_OF_MONTH)); + } + } + } + } + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/EnvironmentalRecordData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/EnvironmentalRecordData.java new file mode 100644 index 0000000..0e59ed7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/EnvironmentalRecordData.java @@ -0,0 +1,168 @@ +package com.casic.missiles.service.listeners.register.data.site; + +import cn.hutool.core.date.DateUtil; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.casic.missiles.service.equipment.IEquipmentFixedAssetsService; +import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + * @date 2023-04-18 + */ +@Slf4j +@Component(PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN) +public class EnvironmentalRecordData extends PrintFileDataSupport implements PrintFileDataGeneric { + @Resource + private UserMapper userMapper; + @Resource + private IEquipmentFixedAssetsService equipmentFixedAssetsService; + @Value("${casic.template.environmental}") + private String environmentalTemplateName; + + @Override + public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { + BusinessSiteExecutiveLog metaData = (BusinessSiteExecutiveLog) object; + //初始化,生成模板文件 + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(environmentalTemplateName)); +// preparePopulateParams(metaData); + //关联数据 + this.equipmentRelation(filePrintRegister, metaData) + //填充环境参数 + .populateEnvironmentParam(filePrintRegister, metaData) + //测量设备数据 + .equipmentFixedAssetsByLog(filePrintRegister, metaData.getSiteExecutiveEquipmentRelationList()) + //按约定规则处理测量设备人员和日期 + .resolveSiteEquipmentsStatus(filePrintRegister, metaData.getSiteExecutiveEquipmentRelationList()); + return filePrintRegister; + } + + /** + * 填充环境记录单内容信息 + */ + private EnvironmentalRecordData populateEnvironmentParam(FilePrintRegister filePrintRegister, BusinessSiteExecutiveLog metaData) { + Map environmentDataParams = new HashMap<>(); + environmentDataParams.put("logNo", metaData.getLogNo()); + environmentDataParams.put("executiveAddress", metaData.getExecutiveAddress()); + environmentDataParams.put("voltage", metaData.getOutputVoltage()); + environmentDataParams.put("zeroVoltage", metaData.getZeroGroundVoltage()); + environmentDataParams.put("temp", metaData.getTemperature()); + environmentDataParams.put("humi", metaData.getHumidity()); + environmentDataParams.put("laboratoryName", metaData.getLaboratoryName()); + filePrintRegister.getParams().putAll(environmentDataParams); + return this; + } + + /** + * 处理人员时间 + */ + private Map resolveRecordTime(String recorderDateStr, int index) { + Map filePrintDataParams = new HashMap<>(); + Date recordDate = DateUtil.parse(recorderDateStr, "yyyy-MM-dd HH:mm:ss"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(recordDate); + filePrintDataParams.put("y" + index, calendar.get(Calendar.YEAR)); + filePrintDataParams.put("m" + index, calendar.get(Calendar.MONTH) + 1); + filePrintDataParams.put("d" + index, calendar.get(Calendar.DAY_OF_MONTH)); + return filePrintDataParams; + } + + /** + * 处理人员工作信息 + */ + private Map resolveRecordUser(List workUserIds, String realUserNameField) { + String realUserNameValues = ""; + //获取人员ids + for (Long userId : workUserIds) { + realUserNameValues += userMapper.selectById(userId).getName() + ","; + } + //处理人员后缀多余逗号 + if (!StringUtils.isEmpty(realUserNameValues)) { + realUserNameValues = realUserNameValues.substring(0, realUserNameValues.length() - 1); + } + Map filePrintDataParams = new HashMap<>(); + filePrintDataParams.put(realUserNameField, realUserNameValues); + return filePrintDataParams; + } + + /** + * 环境检测单和测量设备关系 + */ + private EnvironmentalRecordData equipmentRelation(FilePrintRegister filePrintRegister, BusinessSiteExecutiveLog metaData) { + List> siteEquipments = new ArrayList<>(); + for (BusinessSiteExecutiveEquipmentRelation equipmentRelation : metaData.getSiteExecutiveEquipmentRelationList()) { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("beforeWorkResult ", equipmentRelation.getBeforeWorkCheck()); + equipmentFixedAssetsMap.put("beforeWorkResult", equipmentRelation.getBeforeWorkResult()); + equipmentFixedAssetsMap.put("afterWorkCheck", equipmentRelation.getAfterWorkCheck()); + equipmentFixedAssetsMap.put("afterWorkResult", equipmentRelation.getAfterWorkResult()); + siteEquipments.add(equipmentFixedAssetsMap); + } + filePrintRegister.getParams().put("siteEquipments", siteEquipments); + return this; + } + + + /** + * 1、处理测量设备工作状态相关人员及日期信息 + * 2、处理人员信息,存在多人,用逗号分割 + * 2、处理日期信息,取第一个日期进行处理填充 + * + * @param equipmentRelationList + */ + private EnvironmentalRecordData resolveSiteEquipmentsStatus(FilePrintRegister filePrintRegister, List equipmentRelationList) { + //处理测量设备前人员 + filePrintRegister.getParams().putAll(resolveRecordUser(equipmentRelationList.stream() + .map(BusinessSiteExecutiveEquipmentRelation::getBeforeWorkRecorderId).distinct().collect(Collectors.toList()), "beforeWorkUsers")); + //处理测量设备后人员 + filePrintRegister.getParams().putAll(resolveRecordUser(equipmentRelationList.stream() + .map(BusinessSiteExecutiveEquipmentRelation::getAfterWorkRecorderId).distinct().collect(Collectors.toList()), "afterWorkUsers")); + Optional optionalMap = equipmentRelationList.stream().findFirst(); + if (optionalMap.isPresent()) { + //处理测量设备前日期信息 + resolveRecordTime(optionalMap.get().getBeforeWorkRecorderDate(), 0); + //处理测量设备后日期信息 + resolveRecordTime(optionalMap.get().getAfterWorkRecorderDate(), 1); + } + return this; + } + + /** + * 环境记录查询测量设备 + */ + private EnvironmentalRecordData equipmentFixedAssetsByLog(FilePrintRegister filePrintRegister, List equipmentRelationList) { + List> assetList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(equipmentRelationList)) { + List equipmentFixedAssetList = equipmentFixedAssetsService.list(equipmentRelationList.stream().map(BusinessSiteExecutiveEquipmentRelation::getEquipmentId).collect(Collectors.toList())); + equipmentFixedAssetList.forEach( + equipmentFixedAsset -> { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("assetName ", equipmentFixedAsset.getAssetNo()); + equipmentFixedAssetsMap.put("assetNo", equipmentFixedAsset.getAssetNo()); + equipmentFixedAssetsMap.put("assetModel", equipmentFixedAsset.getModelNo()); + equipmentFixedAssetsMap.put("validDate", equipmentFixedAsset.getValidDate()); + assetList.add(equipmentFixedAssetsMap); + } + ); + } + filePrintRegister.getParams().put("assetList", assetList); + return this; + } + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java index 852777d..259ed00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/MockController.java @@ -1,12 +1,17 @@ package com.casic.missiles.controller; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.application.enums.LoginType; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.enums.business.FilePrintTypeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; import com.casic.missiles.model.business.BusinessCertificateReport; @@ -93,12 +98,23 @@ @GetMapping("/test") @ResponseBody public void test(Long id)throws Exception { - BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); - BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); - DictCodeUtils.convertDictCodeToName(certificateReport); + BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class); + BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id); + //进行证书报告生成,并在远程注册服务器注册 PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); - String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); - log.info(printFileName); + try { + DictCodeUtils.convertDictCodeToName(siteExecutive); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE); + log.info(printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); + } +// BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); +// BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id); +// DictCodeUtils.convertDictCodeToName(certificateReport); +// PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); +// String printFileName = printFileRegister.registerPrintFile(certificateReport,certificateReport.getCertificateReportTypeName()); +// log.info(printFileName); } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index 2084f55..62f69c8 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -43,7 +43,7 @@ @ApiOperation("现场检测记录表查询") @PostMapping("/listPage") - public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) { + public ReturnDTO> siteExecuteLogListPage(@RequestBody @Valid SiteExecuteLogRequest request, BindingResult bindingResult) throws Exception { Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); @@ -90,7 +90,7 @@ }); return ReturnUtil.success(siteExecutiveLogService.deleteSiteExecutiveLog(idDTO.getId())); } -// + // @ApiOperation("现场检测记录表导出") // @PostMapping("/export") // public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 82e663a..080712e 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -27,12 +27,15 @@ enable: false #图片下载本地地址 file: - uploadPath: D:\tmp\ - dir: D:\tmp\ + uploadPath: D:\casic\tmp\ + dir: D:\casic\tmp\ meter: standardEquipment: #标准装置 remindDay: 30 #到期提醒,提前天数 delayDay: 30 #到期提醒-删除,提醒推迟天数 + template: + calibration: "现场检定审批报告" + environmental: "现场环境记录" logging: level.root: info diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java index 26bb510..52b47e5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/FilePrintTypeEnum.java @@ -6,7 +6,8 @@ String CALIBRATION_CERTIFICATE = "样品内部检校证书"; // 自有设备外包证书 String TEST_REPORT = "样品外包证书"; - String EXTERNAL_VERIFICATION_FILE = "外检检定"; -// 自有设备溯源证书 + String EXTERNAL_CALIBRATION_FILE = "外检检定"; + // 自有设备溯源证书 + String EXTERNAL_ENVIRONMENTAL_RECORD = "现场记录"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java index d268d20..40a6e80 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/AwareFilePrintTypeEnum.java @@ -10,7 +10,8 @@ { put(CALIBRATION_CERTIFICATE, CALIBRATION_CERTIFICATE_BEAN); //校准证书 put(TEST_REPORT, TEST_REPORT_BEAN); //测试报告 - put(EXTERNAL_VERIFICATION_FILE, EXTERNAL_VERIFICATION_FILE_BEAN); //测试报告 + put(EXTERNAL_CALIBRATION_FILE, EXTERNAL_CALIBRATION_FILE_BEAN); //现场检测报告 + put(EXTERNAL_ENVIRONMENTAL_RECORD, EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); //现场记录单 } }); diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java index b8697bb..9453477 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/notifyevent/PrintFileDataBeanNameAliasEnum.java @@ -7,8 +7,8 @@ //检测报告 String TEST_REPORT_BEAN = "testingReport"; - String EXTERNAL_VERIFICATION_FILE_BEAN = "externalVerificationFile"; + String EXTERNAL_CALIBRATION_FILE_BEAN = "externalCalibrationFile"; - + String EXTERNAL_ENVIRONMENTAL_RECORD_BEAN = "environmentalRecordData"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java index ee8f8ec..de1774e 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MinioUtil.java @@ -61,6 +61,7 @@ /** * 创建存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -78,6 +79,7 @@ /** * 删除存储bucket + * * @param bucketName 存储bucket名称 * @return Boolean */ @@ -92,12 +94,25 @@ } return true; } + + public Boolean removeFileName(String fileName) { + try { + minioClient.removeObject(RemoveObjectArgs.builder() + .bucket(bucketName) + .object(fileName) + .build()); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * description: 上传文件 * * @param multipartFile * @return: java.lang.String - */ public List upload(MultipartFile[] multipartFile) { List names = new ArrayList<>(multipartFile.length); @@ -184,6 +199,7 @@ /** * 查看文件对象 + * * @param bucketName 存储bucket名称 * @return 存储bucket内文件对象信息 */ @@ -208,8 +224,9 @@ /** * 批量删除文件对象 + * * @param bucketName 存储bucket名称 - * @param objects 对象名称集合 + * @param objects 对象名称集合 */ public Iterable> removeObjects(String bucketName, List objects) { List dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList()); @@ -233,7 +250,7 @@ } public String getFileUrl(String fileName) { - return endpoint+"/"+bucketName+"/"+fileName; + return endpoint + "/" + bucketName + "/" + fileName; } } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java index 3701d42..0d7bd4b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveLogMapper.java @@ -21,4 +21,6 @@ Long selectMaxCode(); Page siteExecutiveLogListPage(Page page, @Param("request") SiteExecuteLogRequest request); + + String getLaboratoryName(@Param("laboratoryId") Long laboratoryId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java index 07fd394..e5a6e6b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/sys/PrintFileRegisterMapper.java @@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.poi.ss.formula.functions.T; @Mapper public interface PrintFileRegisterMapper { @@ -12,9 +13,15 @@ " FROM ${tableName} " + " WHERE id =#{id}" + " AND is_del=0 ") - String getSignFileSealById(@Param("id")Long id,@Param("tableName")String tableName); + String getSignFileSealById(@Param("id")Long id, @Param("tableName")String tableName); @Select(" SELECT minio_file_name " + + " FROM ${tableName} " + + " WHERE template_name =#{name}" + + " AND is_del=0 " + + " limit 1 ") + String getFileNameByName(@Param("name")String name,@Param("tableName")String tableName); + @Select(" SELECT minio_file_name " + " FROM system_sign " + " WHERE sign_user_id =#{signUserId} " + " AND is_del=0 ") 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 3f77383..3537696 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -144,57 +144,57 @@ @@ -225,13 +225,18 @@ "certificationName", certificate_report_category AS "certificationClass",issuance_date AS "effectiveDate",expiration_date AS "expirationDate" FROM business_certificate_report + JOIN ( + select id + from business_order + where is_del=0 + + AND customer_id=#{request.customerId } + + )bo ON bo.id=order_id WHERE is_del=0 AND sample_id=#{request.sampleId} - - AND customer_id=#{request.customerId } - ORDER BY issuance_date DESC @@ -239,7 +244,7 @@ SELECT sel.id as id,su.name AS recorderName,lab.organize_name as laboratoryName,sel.executive_address as executiveAddress,sel.log_no as logNo @@ -45,4 +44,12 @@ order by sel.update_time desc + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java index ee17e89..5446273 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalLogResponse.java @@ -14,6 +14,7 @@ */ @Data public class ApprovalLogResponse { + @ApiModelProperty("任务编号") private String taskId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java index f796007..58a7cac 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveLog.java @@ -90,6 +90,13 @@ private String humidity; /** + * 打印文件名称 + */ + @ApiModelProperty(value = "打印文件名称", dataType = "String") + @TableField("print_file_name") + private String printFileName; + + /** * 备注 */ @ApiModelProperty(value = "备注", dataType = "String") @@ -138,7 +145,7 @@ */ @ApiModelProperty(value = "实验室", dataType = "String") @TableField("laboratory_id") - private String laboratoryId; + private Long laboratoryId; @TableField(exist = false) @ApiModelProperty(value = "携带仪器设备", dataType = "List") 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 index 6b21f4e..2a56cce 100644 --- 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 @@ -163,6 +163,9 @@ if (ApprovalStatusEnum.TO_BE_APPROVED.equals(request.getApprovalStatus()) && CollectionUtils.isEmpty(request.getIds())) { approvalList = handlerBeApproved(approvalList, page, request); } else { + if("0".equals(request.getApprovalStatus())){ + request.setApprovalStatus(""); + } approvalList = this.baseMapper.selectBatchForApprovalList(page, request, null); } for (CertificateListResponse certificateListResponse : approvalList.getRecords()) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java index 7094117..25d3006 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.model.auth.AuthUser; @@ -14,20 +15,30 @@ import com.casic.missiles.dto.business.siteExecutive.SiteExecuteLogRequest; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.mapper.business.BusinessSiteExecutiveLogMapper; import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.business.BusinessSiteExecutiveLog; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import com.casic.missiles.service.listeners.register.PrintFileRegister; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.MinioUtil; import com.casic.missiles.utils.NumberGeneratorUtil; +import com.casic.missiles.utils.SpringContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; /** *

@@ -38,10 +49,13 @@ * @since 2023-03-23 */ @Service +@Slf4j public class BusinessSiteExecutiveLogServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveLogService { @Autowired private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private MinioUtil minioUtill; @Override public ReturnDTO addSiteExecutiveLog(BusinessSiteExecutiveLog siteExecutiveLog) { @@ -51,6 +65,9 @@ if (ObjectUtil.isNotEmpty(siteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && siteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveLog.getId(), siteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> registerPrintFile(siteExecutiveLog.getId())); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -58,9 +75,11 @@ @Override public ReturnDTO deleteSiteExecutiveLog(Long id) { + BusinessSiteExecutiveLog siteExecutiveLog = baseMapper.selectById(id); if (this.baseMapper.deleteById(id) > 0) { //清除监测设备绑定关系 siteExecutiveEquipmentRelationService.deleteBySiteExecutiveLogId(id); + deletePrintFile(siteExecutiveLog.getPrintFileName()); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -69,11 +88,16 @@ @Override public ReturnDTO updateSiteExecutiveLog(BusinessSiteExecutiveLog businessSiteExecutiveLog) { if (this.baseMapper.updateById(businessSiteExecutiveLog) > 0) { - //加入所用设备绑定修改 if (ObjectUtil.isNotEmpty(businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()) && businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList().size() > 0) { siteExecutiveEquipmentRelationService.saveBatch(businessSiteExecutiveLog.getId(), businessSiteExecutiveLog.getSiteExecutiveEquipmentRelationList()); } + ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1, 30000, + TimeUnit.MILLISECONDS, new LinkedBlockingDeque()); + executor.execute(() -> { + deletePrintFile(businessSiteExecutiveLog.getPrintFileName()); + registerPrintFile(businessSiteExecutiveLog.getId()); + }); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -90,11 +114,11 @@ } @Override - public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) { + public Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request) throws Exception { // 获取列表 Page siteExecutiveLogListPage = this.baseMapper.siteExecutiveLogListPage(page, request); - if (!CollectionUtils.isEmpty(siteExecutiveLogListPage.getRecords())) { - + for (BusinessSiteExecutiveLog siteExecutiveLog : siteExecutiveLogListPage.getRecords()) { + DictCodeUtils.convertDictCodeToName(siteExecutiveLog); } return siteExecutiveLogListPage; } @@ -109,5 +133,36 @@ siteExecutiveLog.setLogNo(originNo); } + private void deletePrintFile(String printFileName) { + minioUtill.removeFileName(printFileName); + } + + /** + * 增加,修改环境审批单需要进行 + * + * @param id + */ + private void registerPrintFile(Long id) { + //获取证书报告信息 + BusinessSiteExecutiveLog businessSiteExecutiveLog = this.baseMapper.selectById(id); + businessSiteExecutiveLog.setLaboratoryName(this.baseMapper.getLaboratoryName(businessSiteExecutiveLog.getLaboratoryId())); + //进行证书报告生成,并在远程注册服务器注册 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + try { + DictCodeUtils.convertDictCodeToName(businessSiteExecutiveLog); + String printFileName = printFileRegister.registerPrintFile(businessSiteExecutiveLog, PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN); + setSitePrintFileName(id, printFileName); + } catch (Exception ex) { + log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(businessSiteExecutiveLog), ex); + } + } + + private void setSitePrintFileName(Long id, String printFileName) { + //生成证书打印信息 + BusinessSiteExecutiveLog siteExecutiveLog = new BusinessSiteExecutiveLog(); + siteExecutiveLog.setId(id); + siteExecutiveLog.setPrintFileName(printFileName); + this.baseMapper.updateById(siteExecutiveLog); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java index e5acc79..25ce003 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveLogService.java @@ -24,5 +24,5 @@ BusinessSiteExecutiveLog siteExecutiveLogDetail(Long id); - Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request); + Page siteExecutiveLogListPage(Page page, SiteExecuteLogRequest request)throws Exception; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java index 041b2e3..7424b78 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/SiteExecutiveInfoEventPostProcessor.java @@ -50,7 +50,7 @@ PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); try { DictCodeUtils.convertDictCodeToName(siteExecutive); - String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN); + String printFileName = printFileRegister.registerPrintFile(siteExecutive, PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN); setSitePrintFileName(siteExecutive.getId(), printFileName, siteExecutiveInfoMapper); } catch (Exception ex) { log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java index bfc37bd..370cf5a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FileImageTemplateProvider.java @@ -26,7 +26,7 @@ * 文件自定义名称参数构建器 */ protected void customizedSignNamesParamCreator() { - keyParamList = Arrays.asList("发起人", "审批中", "审批完成"); + keyParamList = Arrays.asList("发起人", "审核人", "批准人"); customizedSignNames = Arrays.asList("发起人", "核验人", "批准人"); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index c25d236..0af5ea3 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -18,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.stream.Collectors; @@ -425,59 +426,69 @@ } public static void main(String[] args) throws RuntimeException { - String pathUrl = "D:\\tmp\\1640635147069263874"; - String localPathUrl = "D:\\tmp\\1640635147069263874"; - -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); -// BufferedImage bii = convertLayout(bi, alpha); -// //生成透明背景图片 -// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +// String pathUrl = "D:\\tmp\\1640635147069263874"; +// String localPathUrl = "D:\\tmp\\1640635147069263874"; // -// //文件与BufferedImage间的转换 -// //读取图片 -// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); -// BufferedImage b0 = convertLayout(b, alpha); -// //生成透明背景图片 -// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); - - - // 目标文件地址 - String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; - // 添加电子印章后文件存放地址 - String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; - //WORD转PDF存放位置 - String pdfNewUrl = localPathUrl + "\\tem.pdf"; - //电子印章图片地址 - String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; - //电子签名图片地址 - String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; - // word文档内容关键字 - String keyWord = "批准人"; - FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); - List electronicSealList = new ArrayList(11); - int count = 0; - ElectronicImage electronicImage = defaultElectronicSignName("批准人"); - electronicImage.setElectronicSealImageUrl(stampNameImgUr); - electronicSealList.add(electronicImage); - addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); - // 将新word转化为pdf文件 - electronicImage = defaultElectronicSignSeal("", 0); - electronicImage.setElectronicSealImageUrl(stampSealImgUrl); - electronicSealList.add(electronicImage); - addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - -// electronicImage=defaultElectronicSignSeal("",120f); +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage bi = readImage(pathUrl + "/sign1_1678844113422.png"); +//// BufferedImage bii = convertLayout(bi, alpha); +//// //生成透明背景图片 +//// saveFile(bii, "PNG", localPathUrl + "\\sign3.png"); +//// +//// //文件与BufferedImage间的转换 +//// //读取图片 +//// BufferedImage b = readImage(pathUrl + "/name1_1678844060471.png"); +//// BufferedImage b0 = convertLayout(b, alpha); +//// //生成透明背景图片 +//// saveFile(b0, "PNG", localPathUrl + "\\name3.png"); +// +// +// // 目标文件地址 +// String wordOldUrl = pathUrl + "\\测试_1680242558223.docx"; +// // 添加电子印章后文件存放地址 +// String wordNewUrl = localPathUrl + "\\测试_1680242558223.docx"; +// //WORD转PDF存放位置 +// String pdfNewUrl = localPathUrl + "\\tem.pdf"; +// //电子印章图片地址 +// String stampNameImgUr = localPathUrl + "\\name1_1678844060471.png"; +// //电子签名图片地址 +// String stampSealImgUrl = localPathUrl + "\\sign1_1678844113422.png"; +// // word文档内容关键字 +// String keyWord = "批准人"; +// FilePrintRegisterUtils addStampUtils = new FilePrintRegisterUtils(); +// List electronicSealList = new ArrayList(11); +// int count = 0; +// ElectronicImage electronicImage = defaultElectronicSignName("批准人"); +// electronicImage.setElectronicSealImageUrl(stampNameImgUr); +// electronicSealList.add(electronicImage); +// addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicSealList); +// // 将新word转化为pdf文件 +// electronicImage = defaultElectronicSignSeal("", 0); // electronicImage.setElectronicSealImageUrl(stampSealImgUrl); // electronicSealList.add(electronicImage); // addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); -// electronicImage=defaultElectronicSignSeal("",240f); -// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); -// electronicSealList.add(electronicImage); -// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); - // 将新word转化为pdf文件 - addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); +// +//// electronicImage=defaultElectronicSignSeal("",120f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +//// electronicImage=defaultElectronicSignSeal("",240f); +//// electronicImage.setElectronicSealImageUrl(stampSealImgUrl); +//// electronicSealList.add(electronicImage); +//// addAbsolutePathStamp(wordOldUrl, wordNewUrl, electronicImage); +// // 将新word转化为pdf文件 +// addStampUtils.wordToPdf(wordNewUrl, pdfNewUrl); + Map params = new HashMap<>(); + List> assetList = new ArrayList<>(); + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("name", "2334"); + equipmentFixedAssetsMap.put("assetNo", "no1"); + equipmentFixedAssetsMap.put("assetModel", "机甲"); + equipmentFixedAssetsMap.put("validDate", "2023-04-19"); + assetList.add(equipmentFixedAssetsMap); + params.put("assetList", assetList); + exportWord("D:\\casic\\tmp\\检定审批单_1681870127973.docx", "D:\\casic\\tmp\\", "12315.docx", params); } protected static ElectronicImage defaultElectronicSignSeal(String keyWord, float horizontal) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index c6db37e..46a633f 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -137,7 +137,7 @@ List nameList = null; try { input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "APPLICATION_OCTET_STREAM", IOUtils.toByteArray(input)); MultipartFile[] multipartFiles = new MultipartFile[1]; multipartFiles[0] = multipartFile; nameList = minioUtil.upload(multipartFiles); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java deleted file mode 100644 index b0a2c83..0000000 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/CertificateFileDataSupport.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.casic.missiles.service.listeners.register.data; - -import com.casic.missiles.dto.business.certificate.ElectronicImage; -import com.casic.missiles.dto.business.certificate.FilePrintRegister; -import com.casic.missiles.dto.flowable.ApprovalLogResponse; -import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; -import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.customer.CustomerSampleInfo; -import com.casic.missiles.service.business.IBusinessOrderService; -import com.casic.missiles.service.customer.CustomerSampleService; -import com.casic.missiles.service.flowable.ApprovalOperateService; -import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; -import java.io.File; -import java.util.*; - -/** - * 文件构建数据 spi - * - * @author cz - * @date 2023-03-10 - */ -public class CertificateFileDataSupport extends FileImageTemplateProvider { - - @Autowired - protected ApprovalOperateService approvalOperateService; - @Autowired - protected IBusinessOrderService businessOrderService; - @Autowired - protected CustomerSampleService customerSampleService; - @Resource - protected PrintFileRegisterMapper fileRegisterMapper; - - /** - * 初始化文件数据注册信息 - * 1、获取证书模板 - * 2、设置临时处理空间路径、文件名称、文件资源路径 - * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 - */ - protected void initialization(FilePrintRegister filePrintRegister, String templateFileDir, BusinessCertificateReport certificateReport) { - templateFileDir = templateFileDir + certificateReport.getId() + File.separator; - String fileName = fileRegisterMapper.getSignFileSealById(certificateReport.getTemplateId(), "system_template"); - filePrintRegister.setFileName(fileName); - filePrintRegister.setTemDir(templateFileDir); - filePrintRegister.setTemplatePath(templateFileDir + fileName); - filePrintRegister.setFileNameId(certificateReport.getId()); - List fileNames = new ArrayList<>(); - fileNames.add(fileName); - filePrintRegister.setBeDownloadedFileNames(fileNames); - } - - - /** - * 电子签名创建器 - */ - protected List customizedSignNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { - List electronicImageList = new ArrayList<>(); - for (int i = 0; i < keyParamList.size(); i++) { - if (!approvalLogMap.containsKey(keyParamList.get(i))) { - continue; - } - final String customizedSignName = customizedSignNames.get(i); - List approvalLogList = approvalLogMap.get(keyParamList.get(i)); - if (CollectionUtils.isNotEmpty(approvalLogList)) { - approvalLogList.forEach( - approvalLog -> { - ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); - String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(signFileName); - electronicImageList.add(electronicImage); - } - ); - } - } - return electronicImageList; - } - - /** - * 电子签章获取 - * - * @param electronicSealId 证书报告文件数据 - * @param electronicImage 关键字 - * @return - */ - protected ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { - String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); - //设置集合 - electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); - //放入待下载的文件集合 - filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); - return electronicImage; - } - - /** - * 参数在模板中起替换作用 - * 基本所包含的参数替换 - * @param metaData - * @return - */ - protected Map certificateFilePopulateParamCreator(BusinessCertificateReport metaData) { - Calendar now = Calendar.getInstance(); - BusinessOrder businessOrder = businessOrderService.orderDetail(metaData.getOrderId()); - CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(metaData.getSampleId()); - Map params = new HashMap<>(); - params.put("customerName", businessOrder.getCustomerName()); - params.put("customerAddress", businessOrder.getCustomerAddress()); - params.put("sampleModel", customerSampleInfo.getSampleModel()); - params.put("sampleNo", customerSampleInfo.getSampleNo()); - params.put("sampleName", customerSampleInfo.getSampleName()); - params.put("manufacturingNo", customerSampleInfo.getManufacturingNo()); - params.put("y", now.get(Calendar.YEAR)); - params.put("m", (now.get(Calendar.MONTH) + 1)); - params.put("d", now.get(Calendar.DAY_OF_MONTH)); - return params; - } - -} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java new file mode 100644 index 0000000..dae0927 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FileParamDataCreator.java @@ -0,0 +1,115 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.customer.CustomerService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * 参数填充创建类 + */ +@Component +@Slf4j +public class FileParamDataCreator { + @Autowired + private IBusinessOrderService businessOrderService; + @Autowired + private CustomerService customerService; + @Autowired + private CustomerSampleService customerSampleService; + @Autowired + private IBusinessSiteExecutiveInfoEquipmentRelationService equipmentRelationInfoService; + private BusinessOrder businessOrder; + private Map fileParamData; + + FileParamDataCreator builder() { + fileParamData = new HashMap<>(); + return this; + } + + /** + * 基本年月日信息 + */ + FileParamDataCreator loadTime() { + Calendar now = Calendar.getInstance(); + now.setTime(new Date()); + fileParamData.put("y", now.get(Calendar.YEAR)); + fileParamData.put("m", now.get(Calendar.MONTH) + 1); + fileParamData.put("d", now.get(Calendar.DAY_OF_MONTH)); + return this; + } + + /** + * 委托书信息 + */ + FileParamDataCreator businessOrder(Long orderId) { + businessOrder = businessOrderService.orderDetail(orderId); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + fileParamData.put("customerName", businessOrder.getCustomerName()); + fileParamData.put("customerAddress", businessOrder.getCustomerAddress()); + return this; + } + + /** + * 样品信息 + */ + FileParamDataCreator customerSample(Long sampleId) { + CustomerSampleInfo customerSampleInfo = customerSampleService.sampleDetail(sampleId); + fileParamData.put("customerSampleName", customerSampleInfo.getSampleName()); + fileParamData.put("customerSampleNo", customerSampleInfo.getSampleNo()); + fileParamData.put("customerAddress", customerSampleInfo.getCustomerAddress()); + fileParamData.put("deliverer", customerSampleInfo.getDeliverer()); + fileParamData.put("delivererTel", customerSampleInfo.getDelivererTel()); + return this; + } + + /** + * 客户信息 + */ + FileParamDataCreator customerInfo() { + CustomerInfo customerInfo = customerService.customerDetail(businessOrder.getCustomerId()); + fileParamData.put("director", customerInfo.getCustomerName()); + fileParamData.put("customerPhone", customerInfo.getPhone()); + fileParamData.put("customerName", customerInfo.getCustomerName()); + fileParamData.put("customerNo", customerInfo.getCustomerNo()); + return this; + } + /** + * 外场检定查询测量设备 + */ + FileParamDataCreator equipmentFixedAssets(Long siteExecutiveLogId) { + try { + List equipmentFixedAssetList = equipmentRelationInfoService.getEquipmentsByExecutiveInfoId(siteExecutiveLogId); + List> assetList = new ArrayList<>(); + equipmentFixedAssetList.forEach( + equipmentFixedAsset -> { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("assetName", equipmentFixedAsset.getEquipmentName()); + equipmentFixedAssetsMap.put("assetNo", equipmentFixedAsset.getEquipmentNo()); + equipmentFixedAssetsMap.put("assetModel", equipmentFixedAsset.getModelNo()); + equipmentFixedAssetsMap.put("validDate", equipmentFixedAsset.getValidDate()); + assetList.add(equipmentFixedAssetsMap); + } + ); + fileParamData.put("assetList", assetList); + } catch (Exception ex) { + log.error("query EquipmentFixedAssets table is fail,the id is {},the message is {}", siteExecutiveLogId, ex); + } + return this; + } + + Map build() { + return this.fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java new file mode 100644 index 0000000..a5e780b --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/PrintFileDataSupport.java @@ -0,0 +1,155 @@ +package com.casic.missiles.service.listeners.register.data; + +import com.casic.missiles.dto.business.certificate.ElectronicImage; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.mapper.sys.PrintFileRegisterMapper; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessOrder; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.service.business.IBusinessOrderService; +import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.service.flowable.ApprovalOperateService; +import com.casic.missiles.service.listeners.register.FileImageTemplateProvider; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.annotation.Resource; +import java.io.File; +import java.util.*; + +/** + * 文件构建数据 spi + * + * @author cz + * @date 2023-03-10 + */ +public class PrintFileDataSupport extends FileImageTemplateProvider { + + @Autowired + protected ApprovalOperateService approvalOperateService; + @Resource + protected PrintFileRegisterMapper fileRegisterMapper; + + @Resource + private FileParamDataCreator fileParamDataCreator; + + /** + * 初始化文件数据注册信息 + * 1、获取证书模板 + * 2、设置临时处理空间路径、文件名称、文件资源路径 + * 3、设置文件id,作为操作空间文件名称,防止对其他同时处理的证书形成影响 + */ + protected final FilePrintRegister initialization(String templateFileDir, + Long id, String fileName) { + FilePrintRegister filePrintRegister = new FilePrintRegister(); + templateFileDir = templateFileDir + id + File.separator; + filePrintRegister.setFileName(fileName); + filePrintRegister.setTemDir(templateFileDir); + filePrintRegister.setTemplatePath(templateFileDir + fileName); + filePrintRegister.setFileNameId(id); + List fileNames = new ArrayList<>(); + fileNames.add(fileName); + filePrintRegister.setBeDownloadedFileNames(fileNames); + return filePrintRegister; + } + + public String getTemplateName(T templateIdOrName) { + String fileName = ""; + if (templateIdOrName instanceof Long) { + fileName = fileRegisterMapper.getSignFileSealById((Long) templateIdOrName, "system_template"); + } + if (templateIdOrName instanceof String) { + fileName = fileRegisterMapper.getFileNameByName((String) templateIdOrName, "system_template"); + } + return fileName; + } + + + /** + * 电子签名创建器 + */ + protected final List signNamesCreator(Map> approvalLogMap, FilePrintRegister filePrintRegister) { + List electronicImageList = new ArrayList<>(); + for (int i = 0; i < keyParamList.size(); i++) { + if (!approvalLogMap.containsKey(keyParamList.get(i))) { + continue; + } + final String customizedSignName = customizedSignNames.get(i); + List approvalLogList = approvalLogMap.get(keyParamList.get(i)); + if (CollectionUtils.isNotEmpty(approvalLogList)) { + approvalLogList.forEach( + approvalLog -> { + ElectronicImage electronicImage = defaultElectronicSignName(customizedSignName); + String signFileName = fileRegisterMapper.getSignFileNameById(approvalLog.getAssigneeId()); + if (StringUtils.isEmpty(signFileName)) { + return; + } + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(signFileName); + electronicImageList.add(electronicImage); + } + ); + } + } + return electronicImageList; + } + + + /** + * 电子签章获取 + * + * @param electronicSealId 证书报告文件数据 + * @param electronicImage 关键字 + * @return + */ + protected final ElectronicImage doPopulateElectronicSignSeal(Long electronicSealId, ElectronicImage electronicImage, FilePrintRegister filePrintRegister) { + String electronicSealName = fileRegisterMapper.getSignFileSealById(electronicSealId, "system_sign"); + //设置集合 + electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + electronicSealName); + //放入待下载的文件集合 + filePrintRegister.getBeDownloadedFileNames().add(electronicSealName); + return electronicImage; + } + + /** + * 证书参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @param sampleId + * @return + */ + protected Map certificateFileParamCreator(Long orderId, Long sampleId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerSample(sampleId) + .customerInfo() + .build(); + return fileParamData; + } + + /** + * 外检环境参数在模板中起替换作用 + * 基本所包含的参数替换 + * + * @param orderId + * @return + */ + protected Map siteFileParamCreator(Long orderId, Long siteId) { + Map fileParamData = fileParamDataCreator + .builder() + .loadTime() + .businessOrder(orderId) + .customerInfo() + .equipmentFixedAssets(siteId) + .build(); + return fileParamData; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java index db535ea..4e2bc25 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/CalibrationPrintFileData.java @@ -6,7 +6,7 @@ import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.service.listeners.register.data.CertificateFileDataSupport; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -17,7 +17,7 @@ * 校准证书参数生成 */ @Component(PrintFileDataBeanNameAliasEnum.CALIBRATION_CERTIFICATE_BEAN) -public class CalibrationPrintFileData extends CertificateFileDataSupport implements PrintFileDataGeneric { +public class CalibrationPrintFileData extends PrintFileDataSupport implements PrintFileDataGeneric { /** * 1、进行打印证书对象的初始化 @@ -31,24 +31,26 @@ @Override public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { BusinessCertificateReport metaData = (BusinessCertificateReport) object; - FilePrintRegister filePrintRegister = new FilePrintRegister(); //初始化,生成模板文件 - initialization(filePrintRegister, templateFileDir, metaData); + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); //查询工作流审批记录 List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); Map> ApprovalLogMap = approvalLogList.stream() - .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); //定制化签名开发预处理,定制化参数 customizedSignNamesParamCreator(); //定制化签名开发 - List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + electronicSignList.addAll(customizedElectronicSignSeals(metaData, filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); //填充定制化的参数 - filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); + filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(), metaData.getSampleId())); return filePrintRegister; } + + + /** * 定制化电子签章文件 * @@ -58,12 +60,12 @@ private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); ElectronicImage electronicImage = defaultElectronicSignSeal("发证单位"); - electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage,filePrintRegister)); + electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage, filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); - List electronicImages= autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); - for (int i=0;i electronicImages = autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); + for (int i = 0; i < approvalSignIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(approvalSignIds[i]), electronicImages.get(i), filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java index ba31878..31ea884 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/certificate/TestReportPrintFileData.java @@ -6,7 +6,7 @@ import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.service.listeners.register.data.CertificateFileDataSupport; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -20,7 +20,7 @@ * 测试报告参数生成 */ @Component(PrintFileDataBeanNameAliasEnum.TEST_REPORT_BEAN) -public class TestReportPrintFileData extends CertificateFileDataSupport implements PrintFileDataGeneric { +public class TestReportPrintFileData extends PrintFileDataSupport implements PrintFileDataGeneric { /** * 1、进行打印证书对象的初始化 @@ -30,23 +30,23 @@ * 5、获取电子签章的文件列表 * 6、证书报告其他参数填充的列表(可重写) * - * @param object 证书报告信息 + * @param object 证书报告信息 * @param templateFileDir 本地进行打印报告组合的路径 * @return */ @Override public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { - BusinessCertificateReport metaData=(BusinessCertificateReport) object; - FilePrintRegister filePrintRegister = new FilePrintRegister(); - initialization(filePrintRegister, templateFileDir, metaData); + BusinessCertificateReport metaData = (BusinessCertificateReport) object; + //初始化,生成模板文件 + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(metaData.getTemplateId())); List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); Map> ApprovalLogMap = approvalLogList.stream() - .collect(Collectors.toMap(e -> e.get(0).getApprovalStatus(), e -> e)); + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); customizedSignNamesParamCreator(); - List electronicSignList = this.customizedSignNamesCreator(ApprovalLogMap, filePrintRegister); - electronicSignList.addAll(customizedElectronicSignSeals(metaData,filePrintRegister)); + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + electronicSignList.addAll(customizedElectronicSignSeals(metaData, filePrintRegister)); filePrintRegister.setElectronicImageList(electronicSignList); - filePrintRegister.setParams(certificateFilePopulateParamCreator(metaData)); + filePrintRegister.setParams(certificateFileParamCreator(metaData.getOrderId(),metaData.getSampleId())); return filePrintRegister; } @@ -59,12 +59,12 @@ private List customizedElectronicSignSeals(BusinessCertificateReport metaData, FilePrintRegister filePrintRegister) { List electronicImageSeals = new ArrayList<>(); ElectronicImage electronicImage = defaultElectronicSignSeal("发证单位"); - electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage,filePrintRegister)); + electronicImageSeals.add(doPopulateElectronicSignSeal(metaData.getSignId(), electronicImage, filePrintRegister)); if (StringUtils.isNotEmpty(metaData.getApprovalSignId())) { String[] approvalSignIds = metaData.getApprovalSignId().split(","); - List electronicImages= autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); - for (int i=0;i electronicImages = autoCreteAbsoluteSignSealByNumber(approvalSignIds.length); + for (int i = 0; i < approvalSignIds.length; i++) { + electronicImageSeals.add(doPopulateElectronicSignSeal(Long.valueOf(approvalSignIds[i]), electronicImages.get(i), filePrintRegister)); } } return electronicImageSeals; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java new file mode 100644 index 0000000..49864ae --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/CalibrationFileData.java @@ -0,0 +1,86 @@ +package com.casic.missiles.service.listeners.register.data.site; + + +import com.casic.missiles.dto.business.certificate.ElectronicImage; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.dto.flowable.ApprovalLogResponse; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; +import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.util.ObjectUtils; + +import java.util.*; +import java.util.stream.Collectors; + +@Component(PrintFileDataBeanNameAliasEnum.EXTERNAL_CALIBRATION_FILE_BEAN) +public class CalibrationFileData extends PrintFileDataSupport implements PrintFileDataGeneric { + + @Value("${casic.template.calibration}") + private String calibrationTemplateName; + + @Override + public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { + BusinessSiteExecutiveInfo metaData = (BusinessSiteExecutiveInfo) object; + //初始化,生成模板文件 + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(calibrationTemplateName)); + //查询工作流审批记录 + List> approvalLogList = approvalOperateService.approvalLog(metaData.getProcessId()); + Map> ApprovalLogMap = approvalLogList.stream() + .collect(Collectors.toMap(e -> e.get(0).getTaskName(), e -> e)); + //定制化签名开发预处理,定制化参数 + customizedSignNamesParamCreator(); + //定制化签名开发 + List electronicSignList = this.signNamesCreator(ApprovalLogMap, filePrintRegister); + filePrintRegister.setElectronicImageList(electronicSignList); + //填充定制化的参数 + filePrintRegister.setParams(siteFileParamCreator(metaData.getOrderId(), metaData.getId())); + filePrintRegister.getParams().putAll(populateCalibration(metaData)); + resolverApprovalTime(filePrintRegister, ApprovalLogMap); + return filePrintRegister; + } + + private Map populateCalibration(BusinessSiteExecutiveInfo metaData) { + Map calibrationDataParams = new HashMap<>(); + calibrationDataParams.put("siteExecutiveNo", metaData.getSiteExecutiveNo()); + calibrationDataParams.put("executiveAddress", metaData.getExecutiveAddress()); + calibrationDataParams.put("siteExecutiveName", metaData.getSiteExecutiveName()); +// environmentDataParams.put("zeroVoltage", metaData.getZeroGroundVoltage()); + calibrationDataParams.put("executiveAddress", metaData.getExecutiveAddress()); + calibrationDataParams.put("executiveEnvironment", metaData.getExecutiveEnvironment()); + return calibrationDataParams; + } + + /** + * 文件自定义名称参数构建器 + */ + protected void customizedSignNamesParamCreator() { + keyParamList = Arrays.asList("审核人", "批准人"); + customizedSignNames = Arrays.asList("技术负责人审核", "计量测试站主任批准"); + } + + private void resolverApprovalTime(FilePrintRegister filePrintRegister, Map> ApprovalLogMap) { + for (int i = 0; i < keyParamList.size(); i++) { + if (ApprovalLogMap.containsKey(keyParamList.get(i))) { + List approvalLogResponseList = ApprovalLogMap.get(keyParamList.get(i)); + if (CollectionUtils.isNotEmpty(approvalLogResponseList)) { + Optional optionalApprovalLogResponse = approvalLogResponseList.stream().findFirst(); + if (optionalApprovalLogResponse.isPresent()) { + Date nodeFinishTime = optionalApprovalLogResponse.get().getFinishTime(); + if(!ObjectUtils.isEmpty(nodeFinishTime)){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(nodeFinishTime); + filePrintRegister.getParams().put("y" + i, calendar.get(Calendar.YEAR)); + filePrintRegister.getParams().put("m" + i, calendar.get(Calendar.MONTH) + 1); + filePrintRegister.getParams().put("d" + i, calendar.get(Calendar.DAY_OF_MONTH)); + } + } + } + } + } + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/EnvironmentalRecordData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/EnvironmentalRecordData.java new file mode 100644 index 0000000..0e59ed7 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/EnvironmentalRecordData.java @@ -0,0 +1,168 @@ +package com.casic.missiles.service.listeners.register.data.site; + +import cn.hutool.core.date.DateUtil; +import com.casic.missiles.dto.business.certificate.FilePrintRegister; +import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; +import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.modular.system.dao.UserMapper; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.casic.missiles.service.equipment.IEquipmentFixedAssetsService; +import com.casic.missiles.service.listeners.register.data.PrintFileDataGeneric; +import com.casic.missiles.service.listeners.register.data.PrintFileDataSupport; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + * @date 2023-04-18 + */ +@Slf4j +@Component(PrintFileDataBeanNameAliasEnum.EXTERNAL_ENVIRONMENTAL_RECORD_BEAN) +public class EnvironmentalRecordData extends PrintFileDataSupport implements PrintFileDataGeneric { + @Resource + private UserMapper userMapper; + @Resource + private IEquipmentFixedAssetsService equipmentFixedAssetsService; + @Value("${casic.template.environmental}") + private String environmentalTemplateName; + + @Override + public FilePrintRegister CustomizedPrintFileRegister(Object object, String templateFileDir) { + BusinessSiteExecutiveLog metaData = (BusinessSiteExecutiveLog) object; + //初始化,生成模板文件 + FilePrintRegister filePrintRegister = initialization(templateFileDir, metaData.getId(), getTemplateName(environmentalTemplateName)); +// preparePopulateParams(metaData); + //关联数据 + this.equipmentRelation(filePrintRegister, metaData) + //填充环境参数 + .populateEnvironmentParam(filePrintRegister, metaData) + //测量设备数据 + .equipmentFixedAssetsByLog(filePrintRegister, metaData.getSiteExecutiveEquipmentRelationList()) + //按约定规则处理测量设备人员和日期 + .resolveSiteEquipmentsStatus(filePrintRegister, metaData.getSiteExecutiveEquipmentRelationList()); + return filePrintRegister; + } + + /** + * 填充环境记录单内容信息 + */ + private EnvironmentalRecordData populateEnvironmentParam(FilePrintRegister filePrintRegister, BusinessSiteExecutiveLog metaData) { + Map environmentDataParams = new HashMap<>(); + environmentDataParams.put("logNo", metaData.getLogNo()); + environmentDataParams.put("executiveAddress", metaData.getExecutiveAddress()); + environmentDataParams.put("voltage", metaData.getOutputVoltage()); + environmentDataParams.put("zeroVoltage", metaData.getZeroGroundVoltage()); + environmentDataParams.put("temp", metaData.getTemperature()); + environmentDataParams.put("humi", metaData.getHumidity()); + environmentDataParams.put("laboratoryName", metaData.getLaboratoryName()); + filePrintRegister.getParams().putAll(environmentDataParams); + return this; + } + + /** + * 处理人员时间 + */ + private Map resolveRecordTime(String recorderDateStr, int index) { + Map filePrintDataParams = new HashMap<>(); + Date recordDate = DateUtil.parse(recorderDateStr, "yyyy-MM-dd HH:mm:ss"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(recordDate); + filePrintDataParams.put("y" + index, calendar.get(Calendar.YEAR)); + filePrintDataParams.put("m" + index, calendar.get(Calendar.MONTH) + 1); + filePrintDataParams.put("d" + index, calendar.get(Calendar.DAY_OF_MONTH)); + return filePrintDataParams; + } + + /** + * 处理人员工作信息 + */ + private Map resolveRecordUser(List workUserIds, String realUserNameField) { + String realUserNameValues = ""; + //获取人员ids + for (Long userId : workUserIds) { + realUserNameValues += userMapper.selectById(userId).getName() + ","; + } + //处理人员后缀多余逗号 + if (!StringUtils.isEmpty(realUserNameValues)) { + realUserNameValues = realUserNameValues.substring(0, realUserNameValues.length() - 1); + } + Map filePrintDataParams = new HashMap<>(); + filePrintDataParams.put(realUserNameField, realUserNameValues); + return filePrintDataParams; + } + + /** + * 环境检测单和测量设备关系 + */ + private EnvironmentalRecordData equipmentRelation(FilePrintRegister filePrintRegister, BusinessSiteExecutiveLog metaData) { + List> siteEquipments = new ArrayList<>(); + for (BusinessSiteExecutiveEquipmentRelation equipmentRelation : metaData.getSiteExecutiveEquipmentRelationList()) { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("beforeWorkResult ", equipmentRelation.getBeforeWorkCheck()); + equipmentFixedAssetsMap.put("beforeWorkResult", equipmentRelation.getBeforeWorkResult()); + equipmentFixedAssetsMap.put("afterWorkCheck", equipmentRelation.getAfterWorkCheck()); + equipmentFixedAssetsMap.put("afterWorkResult", equipmentRelation.getAfterWorkResult()); + siteEquipments.add(equipmentFixedAssetsMap); + } + filePrintRegister.getParams().put("siteEquipments", siteEquipments); + return this; + } + + + /** + * 1、处理测量设备工作状态相关人员及日期信息 + * 2、处理人员信息,存在多人,用逗号分割 + * 2、处理日期信息,取第一个日期进行处理填充 + * + * @param equipmentRelationList + */ + private EnvironmentalRecordData resolveSiteEquipmentsStatus(FilePrintRegister filePrintRegister, List equipmentRelationList) { + //处理测量设备前人员 + filePrintRegister.getParams().putAll(resolveRecordUser(equipmentRelationList.stream() + .map(BusinessSiteExecutiveEquipmentRelation::getBeforeWorkRecorderId).distinct().collect(Collectors.toList()), "beforeWorkUsers")); + //处理测量设备后人员 + filePrintRegister.getParams().putAll(resolveRecordUser(equipmentRelationList.stream() + .map(BusinessSiteExecutiveEquipmentRelation::getAfterWorkRecorderId).distinct().collect(Collectors.toList()), "afterWorkUsers")); + Optional optionalMap = equipmentRelationList.stream().findFirst(); + if (optionalMap.isPresent()) { + //处理测量设备前日期信息 + resolveRecordTime(optionalMap.get().getBeforeWorkRecorderDate(), 0); + //处理测量设备后日期信息 + resolveRecordTime(optionalMap.get().getAfterWorkRecorderDate(), 1); + } + return this; + } + + /** + * 环境记录查询测量设备 + */ + private EnvironmentalRecordData equipmentFixedAssetsByLog(FilePrintRegister filePrintRegister, List equipmentRelationList) { + List> assetList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(equipmentRelationList)) { + List equipmentFixedAssetList = equipmentFixedAssetsService.list(equipmentRelationList.stream().map(BusinessSiteExecutiveEquipmentRelation::getEquipmentId).collect(Collectors.toList())); + equipmentFixedAssetList.forEach( + equipmentFixedAsset -> { + Map equipmentFixedAssetsMap = new HashMap<>(); + equipmentFixedAssetsMap.put("assetName ", equipmentFixedAsset.getAssetNo()); + equipmentFixedAssetsMap.put("assetNo", equipmentFixedAsset.getAssetNo()); + equipmentFixedAssetsMap.put("assetModel", equipmentFixedAsset.getModelNo()); + equipmentFixedAssetsMap.put("validDate", equipmentFixedAsset.getValidDate()); + assetList.add(equipmentFixedAssetsMap); + } + ); + } + filePrintRegister.getParams().put("assetList", assetList); + return this; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/VerificationFileData.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/VerificationFileData.java deleted file mode 100644 index a68e974..0000000 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/site/VerificationFileData.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.service.listeners.register.data.site; - - -import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum; -import lombok.Data; -import org.springframework.stereotype.Component; - -@Component(PrintFileDataBeanNameAliasEnum.EXTERNAL_VERIFICATION_FILE_BEAN) -public class VerificationFileData { - - - -}