diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualitySupervisionRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualitySupervisionRecordServiceImpl.java index 52c1209..708c4d4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualitySupervisionRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualitySupervisionRecordServiceImpl.java @@ -2,10 +2,12 @@ import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.constants.MeterDictCode; @@ -33,6 +35,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.File; import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -42,8 +45,7 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import static com.casic.missiles.enums.PrintFileModuleNameEnum.EXPORT_TEMPLATE; -import static com.casic.missiles.enums.PrintFileModuleNameEnum.QUALITY_SUPERVISION_RECORD; +import static com.casic.missiles.enums.PrintFileModuleNameEnum.*; /** @@ -104,7 +106,6 @@ QueryWrapper query = new QueryWrapper<>(); query.eq("super_record_id", record.getId()); record.setProcessRecords(bizQualityProcessRecordService.list(query)); - } @Override @@ -149,48 +150,23 @@ return; } //创建线程组 - int corePoolSize = 1; + int corePoolSize = recordList.size(); if (recordList.size() > 5) { corePoolSize = 5; } //创建线程组 - ThreadPoolExecutor threadPool = new ThreadPoolExecutor(corePoolSize, recordList.size(), 100, - TimeUnit.SECONDS, new LinkedBlockingQueue<>(10)); + ThreadPoolExecutor threadPool = new ThreadPoolExecutor(corePoolSize, recordList.size() * 3, 100, + TimeUnit.SECONDS, new LinkedBlockingQueue<>(20)); String rootFileName = "质量监督记录" + new SimpleDateFormat("yyyyMMddHHmm").format(new Date()); List> futures = new ArrayList<>(); for (BizQualitySupervisionRecord supervisionRecord : recordList) { //todo 技术能力分析报告 if (ObjectUtil.isNotEmpty(supervisionRecord)) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(BizQualityProcessRecord::getSuperRecordId, supervisionRecord.getId()); - List list = bizQualityProcessRecordService.list(queryWrapper); - supervisionRecord.setProcessRecords(list); - - Map map = BeanUtil.beanToMap(supervisionRecord); - //格式化日期 - Calendar calendar = Calendar.getInstance(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String date = simpleDateFormat.format(supervisionRecord.getCreateTime()); - calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(date)); - map.put("year", calendar.get(Calendar.YEAR)); - map.put("month", calendar.get(Calendar.MONTH) + 1); - map.put("day", calendar.get(Calendar.DAY_OF_MONTH)); - //拼接填充内容 - List contentList = new ArrayList<>(); - for (BizQualityProcessRecord processRecord : supervisionRecord.getProcessRecords()) { - String content = "监督的过程:" + processRecord.getProcessInfo() + "过程运行情况事实:" + processRecord.getOptFacts(); - contentList.add(content); - } - map.put("contentList", contentList); - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(SystemSign::getSignUserId, supervisionRecord.getCreator()); - lambdaQueryWrapper.last("limit 1"); - SystemSign sign = signService.getOne(lambdaQueryWrapper); - if (ObjectUtil.isEmpty(sign)) { - throw new BusinessException(16000, "该用户签名不存在"); - } - map.put("imagesName", sign.getMinioFileName()); + String currentFileName =rootFileName + File.separator + supervisionRecord.getFileCode() + supervisionRecord.getFileName(); + supervisionTask(supervisionRecord, currentFileName, threadPool, futures); + nonConformanceRepTask(supervisionRecord, currentFileName, threadPool, futures); + correctiveTask(supervisionRecord, currentFileName, threadPool, futures); + Map map = getQualityMap(supervisionRecord); CompletableFuture exportFileTask = CompletableFuture.supplyAsync( () -> { //添加附件 @@ -209,7 +185,7 @@ .compressParameter(CompressParameter.builder() .zip(true) .attachmentFiles(attachmentFiles) - .rootDirName(rootFileName) + .rootDirName(currentFileName) .build()) .customTemplateUrls(null) .build()); @@ -230,38 +206,194 @@ public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) throws ParseException { BizQualitySupervisionRecord record = super.getById(exportDTO.getId()); if (Objects.nonNull(record)) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(BizQualityProcessRecord::getSuperRecordId, exportDTO.getId()); - List list = bizQualityProcessRecordService.list(queryWrapper); - record.setProcessRecords(list); - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(SystemSign::getSignUserId, record.getCreator()); - lambdaQueryWrapper.last("limit 1"); - SystemSign sign = signService.getOne(lambdaQueryWrapper); - if (ObjectUtil.isEmpty(sign)) { - throw new BusinessException(16000, "该用户签名不存在"); - } - - Map map = BeanUtil.beanToMap(record); - Calendar calendar = Calendar.getInstance(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String date = simpleDateFormat.format(record.getCreateTime()); - calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(date)); - map.put("year", calendar.get(Calendar.YEAR)); - map.put("month", calendar.get(Calendar.MONTH) + 1); - map.put("day", calendar.get(Calendar.DAY_OF_MONTH)); - List contentList = new ArrayList<>(); - for (BizQualityProcessRecord processRecord : record.getProcessRecords()) { - String content = "监督的过程:" + processRecord.getProcessInfo() + "\r" + "过程运行情况事实:" + processRecord.getOptFacts(); - contentList.add(content); - } - map.put("contentList", contentList); - map.put("imagesName", sign.getMinioFileName()); + Map map = getQualityMap(record); printFileRegister.registerPrintFile(QUALITY_SUPERVISION_RECORD, "导出模板", null, map, exportDTO.isPdf(), response); } } + /** + * 预防/纠正处理措施 + * + * @param supervisionRecord + * @param rootFileName + * @param threadPool + * @param futures + */ + private void correctiveTask(BizQualitySupervisionRecord supervisionRecord, String rootFileName, ThreadPoolExecutor threadPool, List> futures) { + if (ObjectUtils.isNotEmpty(supervisionRecord.getCorrectiveDTO()) + && (CollectionUtils.isNotEmpty(supervisionRecord.getCorrectiveDTO().getCorrectiveRecords()) || + CollectionUtils.isNotEmpty(supervisionRecord.getCorrectiveDTO().getPreventRecords()))) { + if (CollectionUtils.isNotEmpty(supervisionRecord.getCorrectiveDTO().getCorrectiveRecords())) { + for (BizQualityCorrectiveRecord correctiveRecord : supervisionRecord.getCorrectiveDTO().getCorrectiveRecords()) { + Map map = BeanUtil.beanToMap(correctiveRecord); + String subDate = DateUtil.format(correctiveRecord.getSubTime(), "yyyy-MM-dd"); + map.put("subDate", subDate); + CompletableFuture exportFileTask = CompletableFuture.supplyAsync( + () -> { + printFileRegister.registerPrintFile(QUALITY_CORRECTIVE_RECORD, EXPORT_TEMPLATE, null, + RegisterCustomParameters.builder() + .pdf(false) + .customParam(map) + .response(null) + .customFileName(correctiveRecord.getFileCode() + correctiveRecord.getFileName()) + .compressParameter(CompressParameter.builder() + .zip(true) + .rootDirName(rootFileName) + .build()) + .customTemplateUrls(null) + .build()); + return null; + }, threadPool); + futures.add(exportFileTask); + } + } + //预防措施单 + if (CollectionUtils.isNotEmpty(supervisionRecord.getCorrectiveDTO().getPreventRecords())) { + for (BizQualityPreventRecord preventRecord : supervisionRecord.getCorrectiveDTO().getPreventRecords()) { + Map map = BeanUtil.beanToMap(preventRecord); + CompletableFuture exportFileTask = CompletableFuture.supplyAsync( + () -> { + printFileRegister.registerPrintFile(QUALITY_PREVENT_RECORD, EXPORT_TEMPLATE, null, + RegisterCustomParameters.builder() + .pdf(false) + .customParam(map) + .response(null) + .customFileName(preventRecord.getFileCode() + preventRecord.getFileName()) + .compressParameter(CompressParameter.builder() + .zip(true) + .rootDirName(rootFileName) + .build()) + .customTemplateUrls(null) + .build()); + return null; + }, threadPool); + futures.add(exportFileTask); + } + } + } + } + + + /** + * 技术能力分析报告 + * + * @param supervisionRecord + * @param rootFileName + * @param threadPool + * @param futures + */ + private void supervisionTask(BizQualitySupervisionRecord supervisionRecord, String rootFileName, ThreadPoolExecutor threadPool, List> futures) { + //质量监督报告 + if (CollectionUtils.isNotEmpty(supervisionRecord.getRep())) { + for (BizQualitySupervisionRep supervisionRep : supervisionRecord.getRep()) { + String date = DateUtil.format(supervisionRep.getLogTime(), "yyyy-MM-dd"); + Map map = BeanUtil.beanToMap(supervisionRep); + map.put("logTime", date); + CompletableFuture exportFileTask = CompletableFuture.supplyAsync( + () -> { + printFileRegister.registerPrintFile(QUALITY_SUPERVISION_REPORT, "导出模板", null, + RegisterCustomParameters.builder() + .pdf(false) + .customParam(map) + .response(null) + .customFileName(supervisionRep.getFileCode() + supervisionRep.getFileName()) + .compressParameter(CompressParameter.builder() + .zip(true) + .rootDirName(rootFileName) + .build()) + .customTemplateUrls(null) + .build()); + return null; + }, threadPool); + futures.add(exportFileTask); + } + } + } + + /** + * 不符合要求情况分析报告任务 + */ + private void nonConformanceRepTask(BizQualitySupervisionRecord supervisionRecord, String rootFileName, ThreadPoolExecutor threadPool, List> futures) { + //不符合要求情况分析报告 + if (CollectionUtils.isNotEmpty(supervisionRecord.getNonConformanceRep())) { + for (BizQualityNonConformanceRep conformanceRep : supervisionRecord.getNonConformanceRep()) { + Map map = BeanUtil.beanToMap(conformanceRep); + if (conformanceRep.getLogTime() != null) { + String date = DateUtil.format(conformanceRep.getLogTime(), "yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + try { + calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(date)); + } catch (Exception e) { + throw new BusinessException(1500, String.format(date, "质量活动不符合情况分析报告确认日期,格式不正确")); + } + map.put("year", calendar.get(Calendar.YEAR)); + map.put("month", calendar.get(Calendar.MONTH) + 1); + map.put("day", calendar.get(Calendar.DAY_OF_MONTH)); + } + CompletableFuture exportFileTask = CompletableFuture.supplyAsync( + () -> { + printFileRegister.registerPrintFile(QUALITY_NON_CONFORMANCE_REPORT, EXPORT_TEMPLATE, null, + RegisterCustomParameters.builder() + .pdf(false) + .customParam(map) + .response(null) + .customFileName(conformanceRep.getFileCode() + conformanceRep.getFileName()) + .compressParameter(CompressParameter.builder() + .zip(true) + .rootDirName(rootFileName) + .build()) + .customTemplateUrls(null) + .build()); + return null; + }, threadPool); + futures.add(exportFileTask); + } + } + } + + + /** + * 导出质量监督记录的 + * + * @param supervisionRecord + * @return + */ + private Map getQualityMap(BizQualitySupervisionRecord supervisionRecord) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BizQualityProcessRecord::getSuperRecordId, supervisionRecord.getId()); + List list = bizQualityProcessRecordService.list(queryWrapper); + supervisionRecord.setProcessRecords(list); + Map map = BeanUtil.beanToMap(supervisionRecord); + //格式化日期 + Calendar calendar = Calendar.getInstance(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String date = simpleDateFormat.format(supervisionRecord.getCreateTime()); + try { + calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(date)); + } catch (ParseException e) { + e.printStackTrace(); + } + map.put("year", calendar.get(Calendar.YEAR)); + map.put("month", calendar.get(Calendar.MONTH) + 1); + map.put("day", calendar.get(Calendar.DAY_OF_MONTH)); + //拼接填充内容 + List contentList = new ArrayList<>(); + for (BizQualityProcessRecord processRecord : supervisionRecord.getProcessRecords()) { + String content = "监督的过程:" + processRecord.getProcessInfo() + "过程运行情况事实:" + processRecord.getOptFacts(); + contentList.add(content); + } + map.put("contentList", contentList); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemSign::getSignUserId, supervisionRecord.getCreator()); + lambdaQueryWrapper.last("limit 1"); + SystemSign sign = signService.getOne(lambdaQueryWrapper); + if (ObjectUtil.isEmpty(sign)) { + throw new BusinessException(16000, "该用户签名不存在"); + } + map.put("imagesName", sign.getMinioFileName()); + return map; + } + @Transactional @Override public boolean updateById(BizQualitySupervisionRecord entity) { diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualitySupervisionRecordServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualitySupervisionRecordServiceImpl.java index 52c1209..708c4d4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualitySupervisionRecordServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/quality/BizQualitySupervisionRecordServiceImpl.java @@ -2,10 +2,12 @@ import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.constants.MeterDictCode; @@ -33,6 +35,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.File; import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -42,8 +45,7 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import static com.casic.missiles.enums.PrintFileModuleNameEnum.EXPORT_TEMPLATE; -import static com.casic.missiles.enums.PrintFileModuleNameEnum.QUALITY_SUPERVISION_RECORD; +import static com.casic.missiles.enums.PrintFileModuleNameEnum.*; /** @@ -104,7 +106,6 @@ QueryWrapper query = new QueryWrapper<>(); query.eq("super_record_id", record.getId()); record.setProcessRecords(bizQualityProcessRecordService.list(query)); - } @Override @@ -149,48 +150,23 @@ return; } //创建线程组 - int corePoolSize = 1; + int corePoolSize = recordList.size(); if (recordList.size() > 5) { corePoolSize = 5; } //创建线程组 - ThreadPoolExecutor threadPool = new ThreadPoolExecutor(corePoolSize, recordList.size(), 100, - TimeUnit.SECONDS, new LinkedBlockingQueue<>(10)); + ThreadPoolExecutor threadPool = new ThreadPoolExecutor(corePoolSize, recordList.size() * 3, 100, + TimeUnit.SECONDS, new LinkedBlockingQueue<>(20)); String rootFileName = "质量监督记录" + new SimpleDateFormat("yyyyMMddHHmm").format(new Date()); List> futures = new ArrayList<>(); for (BizQualitySupervisionRecord supervisionRecord : recordList) { //todo 技术能力分析报告 if (ObjectUtil.isNotEmpty(supervisionRecord)) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(BizQualityProcessRecord::getSuperRecordId, supervisionRecord.getId()); - List list = bizQualityProcessRecordService.list(queryWrapper); - supervisionRecord.setProcessRecords(list); - - Map map = BeanUtil.beanToMap(supervisionRecord); - //格式化日期 - Calendar calendar = Calendar.getInstance(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String date = simpleDateFormat.format(supervisionRecord.getCreateTime()); - calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(date)); - map.put("year", calendar.get(Calendar.YEAR)); - map.put("month", calendar.get(Calendar.MONTH) + 1); - map.put("day", calendar.get(Calendar.DAY_OF_MONTH)); - //拼接填充内容 - List contentList = new ArrayList<>(); - for (BizQualityProcessRecord processRecord : supervisionRecord.getProcessRecords()) { - String content = "监督的过程:" + processRecord.getProcessInfo() + "过程运行情况事实:" + processRecord.getOptFacts(); - contentList.add(content); - } - map.put("contentList", contentList); - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(SystemSign::getSignUserId, supervisionRecord.getCreator()); - lambdaQueryWrapper.last("limit 1"); - SystemSign sign = signService.getOne(lambdaQueryWrapper); - if (ObjectUtil.isEmpty(sign)) { - throw new BusinessException(16000, "该用户签名不存在"); - } - map.put("imagesName", sign.getMinioFileName()); + String currentFileName =rootFileName + File.separator + supervisionRecord.getFileCode() + supervisionRecord.getFileName(); + supervisionTask(supervisionRecord, currentFileName, threadPool, futures); + nonConformanceRepTask(supervisionRecord, currentFileName, threadPool, futures); + correctiveTask(supervisionRecord, currentFileName, threadPool, futures); + Map map = getQualityMap(supervisionRecord); CompletableFuture exportFileTask = CompletableFuture.supplyAsync( () -> { //添加附件 @@ -209,7 +185,7 @@ .compressParameter(CompressParameter.builder() .zip(true) .attachmentFiles(attachmentFiles) - .rootDirName(rootFileName) + .rootDirName(currentFileName) .build()) .customTemplateUrls(null) .build()); @@ -230,38 +206,194 @@ public void exportFile(@RequestBody @Valid ExportDTO exportDTO, HttpServletResponse response) throws ParseException { BizQualitySupervisionRecord record = super.getById(exportDTO.getId()); if (Objects.nonNull(record)) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(BizQualityProcessRecord::getSuperRecordId, exportDTO.getId()); - List list = bizQualityProcessRecordService.list(queryWrapper); - record.setProcessRecords(list); - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(SystemSign::getSignUserId, record.getCreator()); - lambdaQueryWrapper.last("limit 1"); - SystemSign sign = signService.getOne(lambdaQueryWrapper); - if (ObjectUtil.isEmpty(sign)) { - throw new BusinessException(16000, "该用户签名不存在"); - } - - Map map = BeanUtil.beanToMap(record); - Calendar calendar = Calendar.getInstance(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String date = simpleDateFormat.format(record.getCreateTime()); - calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(date)); - map.put("year", calendar.get(Calendar.YEAR)); - map.put("month", calendar.get(Calendar.MONTH) + 1); - map.put("day", calendar.get(Calendar.DAY_OF_MONTH)); - List contentList = new ArrayList<>(); - for (BizQualityProcessRecord processRecord : record.getProcessRecords()) { - String content = "监督的过程:" + processRecord.getProcessInfo() + "\r" + "过程运行情况事实:" + processRecord.getOptFacts(); - contentList.add(content); - } - map.put("contentList", contentList); - map.put("imagesName", sign.getMinioFileName()); + Map map = getQualityMap(record); printFileRegister.registerPrintFile(QUALITY_SUPERVISION_RECORD, "导出模板", null, map, exportDTO.isPdf(), response); } } + /** + * 预防/纠正处理措施 + * + * @param supervisionRecord + * @param rootFileName + * @param threadPool + * @param futures + */ + private void correctiveTask(BizQualitySupervisionRecord supervisionRecord, String rootFileName, ThreadPoolExecutor threadPool, List> futures) { + if (ObjectUtils.isNotEmpty(supervisionRecord.getCorrectiveDTO()) + && (CollectionUtils.isNotEmpty(supervisionRecord.getCorrectiveDTO().getCorrectiveRecords()) || + CollectionUtils.isNotEmpty(supervisionRecord.getCorrectiveDTO().getPreventRecords()))) { + if (CollectionUtils.isNotEmpty(supervisionRecord.getCorrectiveDTO().getCorrectiveRecords())) { + for (BizQualityCorrectiveRecord correctiveRecord : supervisionRecord.getCorrectiveDTO().getCorrectiveRecords()) { + Map map = BeanUtil.beanToMap(correctiveRecord); + String subDate = DateUtil.format(correctiveRecord.getSubTime(), "yyyy-MM-dd"); + map.put("subDate", subDate); + CompletableFuture exportFileTask = CompletableFuture.supplyAsync( + () -> { + printFileRegister.registerPrintFile(QUALITY_CORRECTIVE_RECORD, EXPORT_TEMPLATE, null, + RegisterCustomParameters.builder() + .pdf(false) + .customParam(map) + .response(null) + .customFileName(correctiveRecord.getFileCode() + correctiveRecord.getFileName()) + .compressParameter(CompressParameter.builder() + .zip(true) + .rootDirName(rootFileName) + .build()) + .customTemplateUrls(null) + .build()); + return null; + }, threadPool); + futures.add(exportFileTask); + } + } + //预防措施单 + if (CollectionUtils.isNotEmpty(supervisionRecord.getCorrectiveDTO().getPreventRecords())) { + for (BizQualityPreventRecord preventRecord : supervisionRecord.getCorrectiveDTO().getPreventRecords()) { + Map map = BeanUtil.beanToMap(preventRecord); + CompletableFuture exportFileTask = CompletableFuture.supplyAsync( + () -> { + printFileRegister.registerPrintFile(QUALITY_PREVENT_RECORD, EXPORT_TEMPLATE, null, + RegisterCustomParameters.builder() + .pdf(false) + .customParam(map) + .response(null) + .customFileName(preventRecord.getFileCode() + preventRecord.getFileName()) + .compressParameter(CompressParameter.builder() + .zip(true) + .rootDirName(rootFileName) + .build()) + .customTemplateUrls(null) + .build()); + return null; + }, threadPool); + futures.add(exportFileTask); + } + } + } + } + + + /** + * 技术能力分析报告 + * + * @param supervisionRecord + * @param rootFileName + * @param threadPool + * @param futures + */ + private void supervisionTask(BizQualitySupervisionRecord supervisionRecord, String rootFileName, ThreadPoolExecutor threadPool, List> futures) { + //质量监督报告 + if (CollectionUtils.isNotEmpty(supervisionRecord.getRep())) { + for (BizQualitySupervisionRep supervisionRep : supervisionRecord.getRep()) { + String date = DateUtil.format(supervisionRep.getLogTime(), "yyyy-MM-dd"); + Map map = BeanUtil.beanToMap(supervisionRep); + map.put("logTime", date); + CompletableFuture exportFileTask = CompletableFuture.supplyAsync( + () -> { + printFileRegister.registerPrintFile(QUALITY_SUPERVISION_REPORT, "导出模板", null, + RegisterCustomParameters.builder() + .pdf(false) + .customParam(map) + .response(null) + .customFileName(supervisionRep.getFileCode() + supervisionRep.getFileName()) + .compressParameter(CompressParameter.builder() + .zip(true) + .rootDirName(rootFileName) + .build()) + .customTemplateUrls(null) + .build()); + return null; + }, threadPool); + futures.add(exportFileTask); + } + } + } + + /** + * 不符合要求情况分析报告任务 + */ + private void nonConformanceRepTask(BizQualitySupervisionRecord supervisionRecord, String rootFileName, ThreadPoolExecutor threadPool, List> futures) { + //不符合要求情况分析报告 + if (CollectionUtils.isNotEmpty(supervisionRecord.getNonConformanceRep())) { + for (BizQualityNonConformanceRep conformanceRep : supervisionRecord.getNonConformanceRep()) { + Map map = BeanUtil.beanToMap(conformanceRep); + if (conformanceRep.getLogTime() != null) { + String date = DateUtil.format(conformanceRep.getLogTime(), "yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + try { + calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(date)); + } catch (Exception e) { + throw new BusinessException(1500, String.format(date, "质量活动不符合情况分析报告确认日期,格式不正确")); + } + map.put("year", calendar.get(Calendar.YEAR)); + map.put("month", calendar.get(Calendar.MONTH) + 1); + map.put("day", calendar.get(Calendar.DAY_OF_MONTH)); + } + CompletableFuture exportFileTask = CompletableFuture.supplyAsync( + () -> { + printFileRegister.registerPrintFile(QUALITY_NON_CONFORMANCE_REPORT, EXPORT_TEMPLATE, null, + RegisterCustomParameters.builder() + .pdf(false) + .customParam(map) + .response(null) + .customFileName(conformanceRep.getFileCode() + conformanceRep.getFileName()) + .compressParameter(CompressParameter.builder() + .zip(true) + .rootDirName(rootFileName) + .build()) + .customTemplateUrls(null) + .build()); + return null; + }, threadPool); + futures.add(exportFileTask); + } + } + } + + + /** + * 导出质量监督记录的 + * + * @param supervisionRecord + * @return + */ + private Map getQualityMap(BizQualitySupervisionRecord supervisionRecord) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BizQualityProcessRecord::getSuperRecordId, supervisionRecord.getId()); + List list = bizQualityProcessRecordService.list(queryWrapper); + supervisionRecord.setProcessRecords(list); + Map map = BeanUtil.beanToMap(supervisionRecord); + //格式化日期 + Calendar calendar = Calendar.getInstance(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String date = simpleDateFormat.format(supervisionRecord.getCreateTime()); + try { + calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(date)); + } catch (ParseException e) { + e.printStackTrace(); + } + map.put("year", calendar.get(Calendar.YEAR)); + map.put("month", calendar.get(Calendar.MONTH) + 1); + map.put("day", calendar.get(Calendar.DAY_OF_MONTH)); + //拼接填充内容 + List contentList = new ArrayList<>(); + for (BizQualityProcessRecord processRecord : supervisionRecord.getProcessRecords()) { + String content = "监督的过程:" + processRecord.getProcessInfo() + "过程运行情况事实:" + processRecord.getOptFacts(); + contentList.add(content); + } + map.put("contentList", contentList); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemSign::getSignUserId, supervisionRecord.getCreator()); + lambdaQueryWrapper.last("limit 1"); + SystemSign sign = signService.getOne(lambdaQueryWrapper); + if (ObjectUtil.isEmpty(sign)) { + throw new BusinessException(16000, "该用户签名不存在"); + } + map.put("imagesName", sign.getMinioFileName()); + return map; + } + @Transactional @Override public boolean updateById(BizQualitySupervisionRecord entity) { 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 cc5d745..3c4e58d 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 @@ -130,10 +130,9 @@ log.error("文件打印出现异常,打印参数信息为{},异常信息为{}", JSON.toJSON(filePrintRegister), rex); } finally { if (ObjectUtils.isNotEmpty(registerParameters.getCompressParameter()) && registerParameters.getCompressParameter().getZip()) { - String zipLocalFileDir = ""; + String zipLocalFileDir = localFileDir + registerParameters.getCompressParameter().getRootDirName(); //先判断是否附属文件,再进行文件转移 if (CollectionUtils.isNotEmpty(registerParameters.getCompressParameter().getAttachmentFiles()) && !StringUtils.isEmpty(registerParameters.getCustomFileName())) { - zipLocalFileDir = localFileDir + registerParameters.getCompressParameter().getRootDirName() + File.separator + registerParameters.getCustomFileName(); // 创建源文件和目标文件对象 File tempDir = new File(zipLocalFileDir); //如果不存在则进行创建 @@ -141,8 +140,6 @@ tempDir.mkdirs(); //创建目录 } downTemplateFile(registerParameters.getCompressParameter().getAttachmentFiles(), zipLocalFileDir); - } else { - zipLocalFileDir = localFileDir + registerParameters.getCompressParameter().getRootDirName(); } fileMove(zipLocalFileDir, printDocUrl); } else if (StringUtils.isNotEmpty(printDocUrl)) {