Commit a21efce1 by jiangxuming

加日志并优化速度

parent ac589cb9
...@@ -3,6 +3,7 @@ package com.patzn.cloud.service.lims.hmhj.service; ...@@ -3,6 +3,7 @@ package com.patzn.cloud.service.lims.hmhj.service;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService; import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.commons.toolkit.TimeWatch;
import com.patzn.cloud.service.hmhj.entity.Entrust; import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord; import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplate; import com.patzn.cloud.service.hmhj.entity.OriginalTemplate;
...@@ -25,7 +26,7 @@ public interface IOriginalRecordService extends IBaseService<OriginalRecord> { ...@@ -25,7 +26,7 @@ public interface IOriginalRecordService extends IBaseService<OriginalRecord> {
boolean removeByIds(List<Long> ids); boolean removeByIds(List<Long> ids);
OriginalRecord uploadExpGenerate(Long[] ids, OriginalTemplate template, Entrust entrust, Account account, String remark, File file); OriginalRecord uploadExpGenerate(Long[] ids, OriginalTemplate template, Entrust entrust, Account account, String remark, File file, TimeWatch timeWatch);
OriginalRecord uploadExpGenerate(Map<Long,List<Long>> entrustItemIdMap, OriginalTemplate template, Account account, String remark, File file); OriginalRecord uploadExpGenerate(Map<Long,List<Long>> entrustItemIdMap, OriginalTemplate template, Account account, String remark, File file);
......
...@@ -320,18 +320,19 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -320,18 +320,19 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean submitTest(Long[] ids, Account account) { public boolean submitTest(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的检测项目"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的检测项目");
TimeWatch timeWatch = new TimeWatch();
logger.info("1数据录入提交阶段耗时: {}", timeWatch.pointTime());
List<EntrustSampleItem> list = super.list(Condition.create().in("id", ids)); List<EntrustSampleItem> list = super.list(Condition.create().in("id", ids));
// 获取样品信息 // 获取样品信息
EntrustSample entrustSample = entrustSampleService.getById(list.get(0).getEntrustSampleId()); EntrustSample entrustSample = entrustSampleService.getById(list.get(0).getEntrustSampleId());
RestAssert.fail(null == entrustSample, "样品信息不能为空"); RestAssert.fail(null == entrustSample, "样品信息不能为空");
logger.info("2数据录入提交阶段耗时: {}", timeWatch.pointTime());
// 获取委托编号 // 获取委托编号
long entrustId = entrustSample.getEntrustId(); long entrustId = entrustSample.getEntrustId();
// 判断提交的检测项目是否完成检测 // 判断提交的检测项目是否完成检测
List<EntrustSampleItemVO> unfinishItemList = baseMapper.selectUnfinishItemList(new QueryDTO().setEntrustId(entrustId).setIds(ids)); List<EntrustSampleItemVO> unfinishItemList = baseMapper.selectUnfinishItemList(new QueryDTO().setEntrustId(entrustId).setIds(ids));//todo 性能优化
logger.info("3数据录入提交阶段耗时: {}", timeWatch.pointTime());
if (CollectionUtils.isNotEmpty(unfinishItemList)) { if (CollectionUtils.isNotEmpty(unfinishItemList)) {
EntrustSampleItemVO vo = unfinishItemList.get(0); EntrustSampleItemVO vo = unfinishItemList.get(0);
RestAssert.fail(String.format("样品编号【%s】的检测项目【%s】未填写检测值,无法提交!", vo.getSampleCode(), vo.getName())); RestAssert.fail(String.format("样品编号【%s】的检测项目【%s】未填写检测值,无法提交!", vo.getSampleCode(), vo.getName()));
...@@ -345,17 +346,17 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -345,17 +346,17 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
super.update(sampleItem, Condition.create().in("id", ids)); super.update(sampleItem, Condition.create().in("id", ids));
entrustSampleItemRecordService.record(ids, EntrustSampleItemStatusEnum.TEST.getDisplay(), EntrustSampleItemStatusEnum.END.getDisplay(), 0, "数据录入提交", account); entrustSampleItemRecordService.record(ids, EntrustSampleItemStatusEnum.TEST.getDisplay(), EntrustSampleItemStatusEnum.END.getDisplay(), 0, "数据录入提交", account);
logger.info("4数据录入提交阶段耗时: {}", timeWatch.pointTime());
// 若存在委托下没有完成的检测项目,那么直接返回 // 若存在委托下没有完成的检测项目,那么直接返回
unfinishItemList = baseMapper.selectUnfinishItemList(new QueryDTO().setEntrustId(entrustId).setNonIds(ids)); unfinishItemList = baseMapper.selectUnfinishItemList(new QueryDTO().setEntrustId(entrustId).setNonIds(ids));//todo 性能优化
logger.info("5数据录入提交阶段耗时: {}", timeWatch.pointTime());
if (CollectionUtils.isNotEmpty(unfinishItemList)) { if (CollectionUtils.isNotEmpty(unfinishItemList)) {
return true; return true;
} }
unfinishItemList = baseMapper.selectByEntrustId(entrustId); unfinishItemList = baseMapper.selectByEntrustId(entrustId);
unfinishItemList = unfinishItemList.stream().filter(t -> !Arrays.asList(ids).contains(t.getId())).collect(Collectors.toList()); unfinishItemList = unfinishItemList.stream().filter(t -> !Arrays.asList(ids).contains(t.getId())).collect(Collectors.toList());
logger.info("6数据录入提交阶段耗时: {}", timeWatch.pointTime());
// 存在未完成的检测项目,则返回 // 存在未完成的检测项目,则返回
if (CollectionUtils.isNotEmpty(unfinishItemList) && unfinishItemList.stream().anyMatch(t -> t.getStatus() != EntrustSampleItemStatusEnum.END)) { if (CollectionUtils.isNotEmpty(unfinishItemList) && unfinishItemList.stream().anyMatch(t -> t.getStatus() != EntrustSampleItemStatusEnum.END)) {
return true; return true;
...@@ -380,6 +381,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -380,6 +381,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
// 提交为报告编制 // 提交为报告编制
EntrustSample sample = new EntrustSample().setStatus(EntrustSampleStatusEnum.REPORT_MAKE).setLid(account.getUserId()).setLtime(new Date()); EntrustSample sample = new EntrustSample().setStatus(EntrustSampleStatusEnum.REPORT_MAKE).setLid(account.getUserId()).setLtime(new Date());
entrustSampleService.update(sample, Condition.create().eq("entrust_id", entrustId)); entrustSampleService.update(sample, Condition.create().eq("entrust_id", entrustId));
logger.info("7数据录入提交阶段耗时: {}", timeWatch.pointTime());
// 委托信息 // 委托信息
Entrust entrust = entrustService.getById(entrustId); Entrust entrust = entrustService.getById(entrustId);
// 提交到下一节点,可能是不更改状态 // 提交到下一节点,可能是不更改状态
...@@ -394,22 +396,25 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -394,22 +396,25 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
executor1.execute(() -> updateSampleRetakeByEntrustId(entrustId)); executor1.execute(() -> updateSampleRetakeByEntrustId(entrustId));
return true; return true;
} }
logger.info("8数据录入提交阶段耗时: {}", timeWatch.pointTime());
// 修改委托信息 // 修改委托信息
entrust.setLid(account.getUserId()).setLtime(new Date()).setFlowStatus(EntrustFlowEnum.REPORT_MAKE.getName()).setProgress(EntrustStatusEnum.TEST).setStatus(EntrustStatusEnum.TEST); entrust.setLid(account.getUserId()).setLtime(new Date()).setFlowStatus(EntrustFlowEnum.REPORT_MAKE.getName()).setProgress(EntrustStatusEnum.TEST).setStatus(EntrustStatusEnum.TEST);
entrustService.updateById(entrust); entrustService.updateById(entrust);
logger.info("9数据录入提交阶段耗时: {}", timeWatch.pointTime());
// 提交后执行组合判定 // 提交后执行组合判定
updateItemComposeJudgeByEntrustId(entrustId); updateItemComposeJudgeByEntrustId(entrustId);
logger.info("10数据录入提交阶段耗时: {}", timeWatch.pointTime());
updateComposeJudgeByTestValue(entrustId); updateComposeJudgeByTestValue(entrustId);
logger.info("11数据录入提交阶段耗时: {}", timeWatch.pointTime());
// 添加委托日志 // 添加委托日志
entrustRecordService.record(new Long[]{entrustId}, "数据录入", "报告编制", 0, account, "提交至报告编制"); entrustRecordService.record(new Long[]{entrustId}, "数据录入", "报告编制", 0, account, "提交至报告编制");
logger.info("12数据录入提交阶段耗时: {}", timeWatch.pointTime());
// 执行转PDF操作 // 执行转PDF操作
executor1.execute(() -> changeExcelToPdf(ids, list)); executor1.execute(() -> changeExcelToPdf(ids, list));
logger.info("13数据录入提交阶段耗时: {}", timeWatch.pointTime());
// 处理原铝是否重取 // 处理原铝是否重取
executor1.execute(() -> updateSampleRetakeByEntrustId(entrustId)); executor1.execute(() -> updateSampleRetakeByEntrustId(entrustId));
logger.info("13数据录入提交阶段耗时: {}", timeWatch.pointTime());
return true; return true;
} }
...@@ -661,7 +666,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -661,7 +666,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} }
/* 获取采集数据,并保存到SampleVO中 */ /* 获取采集数据,并保存到SampleVO中 */
getCollectionData(null, sampleVOList, itemNameMap, template, entrustCodes); getCollectionData(null,null, sampleVOList, itemNameMap, template, entrustCodes);
if (null == template.getSampleBeginRow() || null == template.getSampleMergerNum() || null == template.getTemplateSampleNum()) { if (null == template.getSampleBeginRow() || null == template.getSampleMergerNum() || null == template.getTemplateSampleNum()) {
return null; return null;
...@@ -672,7 +677,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -672,7 +677,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} else { } else {
/* 获取采集到的数据 */ /* 获取采集到的数据 */
getCollectionData(voList, null, itemNameMap, template, entrustCodes); getCollectionData(null,voList, null, itemNameMap, template, entrustCodes);
EntrustSampleItemVO firstVO = null; EntrustSampleItemVO firstVO = null;
for (EntrustSampleItemVO vo : voList) { for (EntrustSampleItemVO vo : voList) {
...@@ -723,6 +728,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -723,6 +728,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
@Override @Override
public OriginalRecord saveExcelOriginalRecord(Long[] ids, Long templateId, Account account, String entrustCode) { public OriginalRecord saveExcelOriginalRecord(Long[] ids, Long templateId, Account account, String entrustCode) {
TimeWatch timeWatch = new TimeWatch();
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择试验项目!"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择试验项目!");
RestAssert.fail(null == templateId, "请选择原始记录模板"); RestAssert.fail(null == templateId, "请选择原始记录模板");
OriginalTemplate template = originalTemplateService.getById(templateId); OriginalTemplate template = originalTemplateService.getById(templateId);
...@@ -733,6 +739,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -733,6 +739,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
if (CollectionUtils.isEmpty(voList)) { if (CollectionUtils.isEmpty(voList)) {
return null; return null;
} }
logger.info("一阶段耗时:{} ms", timeWatch.pointTime());
// 过滤空白样 // 过滤空白样
List<EntrustSampleItemVO> blank = voList.stream().filter(vo -> vo.getSampleCode().contains("空白") || vo.getSampleName().contains("空白")).collect(Collectors.toList()); List<EntrustSampleItemVO> blank = voList.stream().filter(vo -> vo.getSampleCode().contains("空白") || vo.getSampleName().contains("空白")).collect(Collectors.toList());
// 手动插入空白样和配置了空白开始行冲突 // 手动插入空白样和配置了空白开始行冲突
...@@ -741,11 +748,15 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -741,11 +748,15 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} }
voList = voList.stream().sorted(Comparator.comparing(EntrustSampleItemVO::getOrderBy)).collect(Collectors.toList()); voList = voList.stream().sorted(Comparator.comparing(EntrustSampleItemVO::getOrderBy)).collect(Collectors.toList());
Entrust entrust = entrustService.getById(voList.get(0).getEntrustId()); Entrust entrust = entrustService.getById(voList.get(0).getEntrustId());
logger.info("二阶段耗时:{} ms", timeWatch.pointTime());
InputStream io = ossClient.download(template.getObjectKey()); InputStream io = ossClient.download(template.getObjectKey());
logger.info("3阶段耗时:{} ms", timeWatch.pointTime());
if (null == io) { if (null == io) {
RestAssert.fail("模板不存在"); RestAssert.fail("模板不存在");
} }
List<OriginalTemplateConfig> configList = originalTemplateConfigService.list(Condition.create().eq("template_id", templateId)); List<OriginalTemplateConfig> configList = originalTemplateConfigService.list(Condition.create().eq("template_id", templateId));
logger.info("4阶段耗时:{} ms", timeWatch.pointTime());
OriginalRecord objectKey = null; OriginalRecord objectKey = null;
XSSFWorkbook xssfWorkbook = null; XSSFWorkbook xssfWorkbook = null;
...@@ -759,6 +770,8 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -759,6 +770,8 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
Map<String, String> mapReplace = new HashMap<>(); Map<String, String> mapReplace = new HashMap<>();
mapReplace.put("#{nowDate}", DateUtils.toYearMonthDay(new Date())); mapReplace.put("#{nowDate}", DateUtils.toYearMonthDay(new Date()));
mapReplace.put("#{sampleNum}", entrustSampleService.countByEntrustId(entrust.getId()) + ""); mapReplace.put("#{sampleNum}", entrustSampleService.countByEntrustId(entrust.getId()) + "");
logger.info("5阶段耗时:{} ms", timeWatch.pointTime());
// itemVoList中的所有项目名 --> 通过检测项目名拿到对应的采集仪器项目名 // itemVoList中的所有项目名 --> 通过检测项目名拿到对应的采集仪器项目名
Set<String> itemNames = voList.stream().map(EntrustSampleItem::getName).distinct().collect(Collectors.toSet()); Set<String> itemNames = voList.stream().map(EntrustSampleItem::getName).distinct().collect(Collectors.toSet());
...@@ -766,13 +779,17 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -766,13 +779,17 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
Map<String, String> itemNameMap = qualifications.stream() Map<String, String> itemNameMap = qualifications.stream()
.filter(q -> StringUtils.isNotEmpty(q.getInstrumentItemName())) .filter(q -> StringUtils.isNotEmpty(q.getInstrumentItemName()))
.collect(Collectors.toMap(Qualification::getName, Qualification::getInstrumentItemName)); .collect(Collectors.toMap(Qualification::getName, Qualification::getInstrumentItemName));
logger.info("6阶段耗时:{} ms", timeWatch.pointTime());
logger.info("template.getTabletAnalysis():{}", template.getTabletAnalysis());
logger.info("ttemplate.getMoreItem():{}", template.getMoreItem());
// 若为压片分析 // 若为压片分析
if (Objects.equals(template.getTabletAnalysis(), 1)) { if (Objects.equals(template.getTabletAnalysis(), 1)) {
logger.info("条件1");
// 压片分析单独处理 // 压片分析单独处理
/* 获取采集到的数据 */ /* 获取采集到的数据 */
getCollectionData(voList, null, itemNameMap, template, entrustCode); getCollectionData(null,voList, null, itemNameMap, template, entrustCode);
EntrustSampleItemVO firstVO = null; EntrustSampleItemVO firstVO = null;
for (EntrustSampleItemVO vo : voList) { for (EntrustSampleItemVO vo : voList) {
...@@ -790,11 +807,14 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -790,11 +807,14 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
operation.doMakeOriginal(); operation.doMakeOriginal();
} else if (null != template.getMoreItem() && 1 == template.getMoreItem()) { } else if (null != template.getMoreItem() && 1 == template.getMoreItem()) {
logger.info("条件2");
logger.info("7-1阶段耗时:{} ms", timeWatch.pointTime());
Set<Long> sampleIdsList = new HashSet<>(); Set<Long> sampleIdsList = new HashSet<>();
for (EntrustSampleItemVO itemVO : voList) { for (EntrustSampleItemVO itemVO : voList) {
sampleIdsList.add(itemVO.getEntrustSampleId()); sampleIdsList.add(itemVO.getEntrustSampleId());
} }
List<EntrustSample> sampleList = entrustSampleService.list(Condition.create().in("id", sampleIdsList).orderBy("order_by", true)); List<EntrustSample> sampleList = entrustSampleService.list(Condition.create().in("id", sampleIdsList).orderBy("order_by", true));
logger.info("7-2阶段耗时:{} ms", timeWatch.pointTime());
EntrustSample firstSample = null; EntrustSample firstSample = null;
if (CollectionUtils.isNotEmpty(sampleList)) { if (CollectionUtils.isNotEmpty(sampleList)) {
for (EntrustSample sample : sampleList) { for (EntrustSample sample : sampleList) {
...@@ -810,16 +830,17 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -810,16 +830,17 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
List<EntrustSampleVO> sampleVOList = new ArrayList<>(sampleList.size()); List<EntrustSampleVO> sampleVOList = new ArrayList<>(sampleList.size());
// 优化:批量获取检测项目指标 // 优化:批量获取检测项目指标
List<EntrustSampleItemIndexVO> itemIndexList = entrustSampleItemIndexService.listVOBySampleIds(new ArrayList<>(sampleIdsList)); List<EntrustSampleItemIndexVO> itemIndexList = entrustSampleItemIndexService.listVOBySampleIds(new ArrayList<>(sampleIdsList));
logger.info("7-3阶段耗时:{} ms", timeWatch.pointTime());
for (EntrustSample sample : sampleList) { for (EntrustSample sample : sampleList) {
EntrustSampleVO vo = sample.convert(EntrustSampleVO.class); EntrustSampleVO vo = sample.convert(EntrustSampleVO.class);
// 取值时,直接过滤获取 // 取值时,直接过滤获取
vo.setIndexList(getIndicesBySampleId(sample.getId(), itemIndexList)); vo.setIndexList(getIndicesBySampleId(sample.getId(), itemIndexList));
sampleVOList.add(vo); sampleVOList.add(vo);
} }
logger.info("7-4阶段耗时:{} ms", timeWatch.pointTime());
/* 获取采集数据,并保存到SampleVO中 */ /* 获取采集数据,并保存到SampleVO中 */
getCollectionData(null, sampleVOList, itemNameMap, template, entrustCode); getCollectionData(timeWatch,null, sampleVOList, itemNameMap, template, entrustCode);
logger.info("7-5阶段耗时:{} ms", timeWatch.pointTime());
if (null == template.getSampleBeginRow() || null == template.getSampleMergerNum() || null == template.getTemplateSampleNum()) { if (null == template.getSampleBeginRow() || null == template.getSampleMergerNum() || null == template.getTemplateSampleNum()) {
return null; return null;
} }
...@@ -832,12 +853,13 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -832,12 +853,13 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
// moreItemOperation.doMakeOriginal(); // moreItemOperation.doMakeOriginal();
/* 多个检测项目放在一个sheet中,一个样品一条记录 */ /* 多个检测项目放在一个sheet中,一个样品一条记录 */
SingleSheetMoreItemOperation operation = new SingleSheetMoreItemOperation(template, entrust, null, sampleVOList, configList, xssfWorkbook); SingleSheetMoreItemOperation operation = new SingleSheetMoreItemOperation(template, entrust, null, sampleVOList, configList, xssfWorkbook);
operation.doMakeOriginal(); operation.doMakeOriginal();//todo 生成原始记录最耗时代码
logger.info("7-6阶段耗时:{} ms", timeWatch.pointTime());
// } // }
} else { } else {
logger.info("条件3");
/* 获取采集到的数据 */ /* 获取采集到的数据 */
getCollectionData(voList, null, itemNameMap, template, entrustCode); getCollectionData(null,voList, null, itemNameMap, template, entrustCode);
EntrustSampleItemVO firstVO = null; EntrustSampleItemVO firstVO = null;
for (EntrustSampleItemVO vo : voList) { for (EntrustSampleItemVO vo : voList) {
...@@ -859,7 +881,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -859,7 +881,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
operation.doMakeOriginal(); operation.doMakeOriginal();
} }
} }
logger.info("7阶段耗时:{} ms", timeWatch.pointTime());
HSSFWorkbookUtil.replaceModel(mapReplace, xssfWorkbook, 0); HSSFWorkbookUtil.replaceModel(mapReplace, xssfWorkbook, 0);
FileOutputStream os = null; FileOutputStream os = null;
...@@ -871,7 +893,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -871,7 +893,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
os = new FileOutputStream(file); os = new FileOutputStream(file);
xssfWorkbook.write(os); xssfWorkbook.write(os);
os.flush(); os.flush();
objectKey = originalRecordService.uploadExpGenerate(ids, template, entrust, account, "原始记录生成", file); objectKey = originalRecordService.uploadExpGenerate(ids, template, entrust, account, "原始记录生成", file,timeWatch);
logger.error("----------------------17"); logger.error("----------------------17");
} catch (Exception e) { } catch (Exception e) {
...@@ -883,10 +905,15 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -883,10 +905,15 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} }
logger.error("----------------------20"); logger.error("----------------------20");
logger.info("8阶段耗时:{} ms", timeWatch.pointTime());
logger.info("总阶段耗时:{} ms", timeWatch.getTotal(timeWatch.printTime()));
return objectKey; return objectKey;
} }
private void getCollectionData(List<EntrustSampleItemVO> itemVOList, List<EntrustSampleVO> sampleVOList, Map<String, String> itemNameMap, OriginalTemplate template, String... entrustCodes) { private void getCollectionData(TimeWatch timeWatch,List<EntrustSampleItemVO> itemVOList, List<EntrustSampleVO> sampleVOList,
Map<String, String> itemNameMap, OriginalTemplate template, String... entrustCodes) {
logger.info("7-4-1阶段耗时:{} ms", timeWatch.pointTime());
/* 拿到所有样品的编号 */ /* 拿到所有样品的编号 */
Set<String> numSet = new HashSet<>(); Set<String> numSet = new HashSet<>();
if (itemVOList != null) { if (itemVOList != null) {
...@@ -906,6 +933,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -906,6 +933,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} else if (template.getCollectionType() == 2) { } else if (template.getCollectionType() == 2) {
records = originalRecordInfoService.list(Condition.create().in("sample_num", numSet).orderBy("ctime")); records = originalRecordInfoService.list(Condition.create().in("sample_num", numSet).orderBy("ctime"));
} }
logger.info("7-4-2阶段耗时:{} ms", timeWatch.pointTime());
/* 按照样品编号和项目分开,来存放采集到的数据 record的data */ /* 按照样品编号和项目分开,来存放采集到的数据 record的data */
HashMap<String, List<String>> mapByNumItemName = new HashMap<>(); HashMap<String, List<String>> mapByNumItemName = new HashMap<>();
for (LmsOriginalRecordInfo record : records) { for (LmsOriginalRecordInfo record : records) {
...@@ -919,6 +947,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -919,6 +947,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
String blank = "blank"; String blank = "blank";
AtomicBoolean filledCur = new AtomicBoolean(false); AtomicBoolean filledCur = new AtomicBoolean(false);
AtomicBoolean filledBlank = new AtomicBoolean(false); AtomicBoolean filledBlank = new AtomicBoolean(false);
logger.info("7-4-3阶段耗时:{} ms", timeWatch.pointTime());
/* 设置采集数据的Map -- itemVo */ /* 设置采集数据的Map -- itemVo */
if (itemVOList != null) { if (itemVOList != null) {
itemVOList.forEach(vo -> { itemVOList.forEach(vo -> {
...@@ -956,6 +985,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -956,6 +985,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} }
}); });
} }
logger.info("7-4-4阶段耗时:{} ms", timeWatch.pointTime());
/* sampleVo */ /* sampleVo */
if (sampleVOList != null) { if (sampleVOList != null) {
sampleVOList.stream().forEach(vo -> { sampleVOList.stream().forEach(vo -> {
...@@ -969,6 +999,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -969,6 +999,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} }
}); });
} }
logger.info("7-4-5阶段耗时:{} ms", timeWatch.pointTime());
} }
public static Map<String, String> toStringStringMap(String jsonString) { public static Map<String, String> toStringStringMap(String jsonString) {
......
...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.toolkit.MapUtils; ...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.toolkit.MapUtils;
import com.patzn.cloud.commons.api.RestAssert; import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.commons.toolkit.TimeWatch;
import com.patzn.cloud.oss.starter.OssClient; import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult; import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.hmhj.entity.Entrust; import com.patzn.cloud.service.hmhj.entity.Entrust;
...@@ -31,6 +32,9 @@ import java.io.File; ...@@ -31,6 +32,9 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -48,6 +52,8 @@ public class OriginalRecordServiceImpl extends BaseServiceImpl<OriginalRecordMap ...@@ -48,6 +52,8 @@ public class OriginalRecordServiceImpl extends BaseServiceImpl<OriginalRecordMap
@Autowired @Autowired
private OssClient ossClient; private OssClient ossClient;
private static final ThreadPoolExecutor pool = new ThreadPoolExecutor(8, 20, 10, TimeUnit.MINUTES, new LinkedBlockingQueue<>(5000));
@Override @Override
public Page<OriginalRecord> page(Page<OriginalRecord> page, OriginalRecord originalRecord) { public Page<OriginalRecord> page(Page<OriginalRecord> page, OriginalRecord originalRecord) {
...@@ -97,7 +103,7 @@ public class OriginalRecordServiceImpl extends BaseServiceImpl<OriginalRecordMap ...@@ -97,7 +103,7 @@ public class OriginalRecordServiceImpl extends BaseServiceImpl<OriginalRecordMap
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public OriginalRecord uploadExpGenerate(Long[] ids, OriginalTemplate template, Entrust entrust, Account account, String remark, File file) { public OriginalRecord uploadExpGenerate(Long[] ids, OriginalTemplate template, Entrust entrust, Account account, String remark, File file, TimeWatch timeWatch) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择试验项目"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择试验项目");
RestAssert.fail(null == entrust.getId(), "试验委托单ID不能为空"); RestAssert.fail(null == entrust.getId(), "试验委托单ID不能为空");
...@@ -113,7 +119,9 @@ public class OriginalRecordServiceImpl extends BaseServiceImpl<OriginalRecordMap ...@@ -113,7 +119,9 @@ public class OriginalRecordServiceImpl extends BaseServiceImpl<OriginalRecordMap
return null; return null;
} }
originalRecord.setObjectKey(obsFileResult.getObjectKey()); originalRecord.setObjectKey(obsFileResult.getObjectKey());
logger.info("7-1阶段耗时:{} ms", timeWatch.pointTime());
if (save(originalRecord)) { if (save(originalRecord)) {
logger.info("7-2阶段耗时:{} ms", timeWatch.pointTime());
List<ItemRelOriginalRecord> saveList = new ArrayList<>(); List<ItemRelOriginalRecord> saveList = new ArrayList<>();
for (Long id : ids) { for (Long id : ids) {
ItemRelOriginalRecord relOriginalRecord = new ItemRelOriginalRecord(); ItemRelOriginalRecord relOriginalRecord = new ItemRelOriginalRecord();
...@@ -121,10 +129,17 @@ public class OriginalRecordServiceImpl extends BaseServiceImpl<OriginalRecordMap ...@@ -121,10 +129,17 @@ public class OriginalRecordServiceImpl extends BaseServiceImpl<OriginalRecordMap
relOriginalRecord.setRecordId(originalRecord.getId()); relOriginalRecord.setRecordId(originalRecord.getId());
saveList.add(relOriginalRecord); saveList.add(relOriginalRecord);
} }
logger.info("7-3阶段耗时:{} ms", timeWatch.pointTime());
if (CollectionUtils.isNotEmpty(saveList)) { if (CollectionUtils.isNotEmpty(saveList)) {
pool.execute(() -> {
itemRelOriginalRecordService.saveBatch(saveList); itemRelOriginalRecordService.saveBatch(saveList);
});
} }
// if (CollectionUtils.isNotEmpty(saveList)) {
// itemRelOriginalRecordService.saveBatch(saveList);
// }
} }
logger.info("7-4阶段耗时:{} ms", timeWatch.pointTime());
return originalRecord; return originalRecord;
} }
......
...@@ -445,6 +445,18 @@ ...@@ -445,6 +445,18 @@
END) then 1 else 0 end) "END_INDEX" END) then 1 else 0 end) "END_INDEX"
FROM entrust_sample_item_index ii FROM entrust_sample_item_index ii
WHERE ii.deleted = 0 WHERE ii.deleted = 0
<if test="null != vo.ids">
and ii.entrust_sample_item_id in
<foreach collection="vo.ids" index="index" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
<if test="null != vo.nonIds">
and ii.entrust_sample_item_id not in
<foreach collection="vo.nonIds" index="index" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
GROUP BY ii.entrust_sample_item_id GROUP BY ii.entrust_sample_item_id
) ii on ii.entrust_sample_item_id = i.id ) ii on ii.entrust_sample_item_id = i.id
where e.deleted = 0 and s.deleted = 0 and i.deleted = 0 and s.type = 0 where e.deleted = 0 and s.deleted = 0 and i.deleted = 0 and s.type = 0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment