Commit 9781e83e by ghxdhr

原始记录修改

parent c79981d7
...@@ -29,11 +29,11 @@ public class OriginalFactory { ...@@ -29,11 +29,11 @@ public class OriginalFactory {
if (null == template.getSampleBeginRow()|| null==template.getSampleMergerNum()||null==template.getTemplateSampleNum()){ if (null == template.getSampleBeginRow()|| null==template.getSampleMergerNum()||null==template.getTemplateSampleNum()){
return null; return null;
} }
if (voList.size()<template.getTemplateSampleNum()){ // if (voList.size()<template.getTemplateSampleNum()){
return new SingleSheetLittleOperation(template,voList,entrust,configList,xssfWorkbook); // return new SingleSheetLittleOperation(template,voList,entrust,configList,xssfWorkbook);
}else{ // }else{
return new SingleSheetMoreOperation(template,voList,entrust,configList,xssfWorkbook); return new SingleSheetMoreOperation(template,voList,entrust,configList,xssfWorkbook);
} // }
}else{ }else{
Integer templateSampleNum = template.getTemplateSampleNum(); Integer templateSampleNum = template.getTemplateSampleNum();
......
...@@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*; import org.apache.poi.xssf.usermodel.*;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -21,6 +22,7 @@ public class SingleSheetMoreOperation implements Operation { ...@@ -21,6 +22,7 @@ public class SingleSheetMoreOperation implements Operation {
private Entrust entrust ; private Entrust entrust ;
private List<OriginalTemplateConfig> configList; private List<OriginalTemplateConfig> configList;
private XSSFWorkbook xssfWorkbook; private XSSFWorkbook xssfWorkbook;
private String collectionDataPrefix = "clc.";
public SingleSheetMoreOperation(OriginalTemplate template, List<EntrustSampleItemVO> voList, Entrust entrust, List<OriginalTemplateConfig> configList, XSSFWorkbook xssfWorkbook) { public SingleSheetMoreOperation(OriginalTemplate template, List<EntrustSampleItemVO> voList, Entrust entrust, List<OriginalTemplateConfig> configList, XSSFWorkbook xssfWorkbook) {
this.template = template; this.template = template;
this.voList = voList; this.voList = voList;
...@@ -173,5 +175,52 @@ public class SingleSheetMoreOperation implements Operation { ...@@ -173,5 +175,52 @@ public class SingleSheetMoreOperation implements Operation {
} }
} }
} }
// 处理曲线和空白
dealCurveAndBlank(configList,voList,template,xssfWorkbook);
}
private void dealCurveAndBlank(List<OriginalTemplateConfig> configList, List<EntrustSampleItemVO> voList, OriginalTemplate template, XSSFWorkbook xssfWorkbook) {
Integer curveBeginNum = template.getCurveBeginNum();
Integer blankBeginNum = template.getBlankBeginNum();
List<Map<String,String>> curveDataList = null;
Map<String,String> blankDataMap = null;
XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
if (CollectionUtils.isNotEmpty(voList)) {
curveDataList = voList.get(0).getCurveDataList();
blankDataMap = voList.get(0).getBlankDataMap();
}
// 填充曲线数据
if (curveBeginNum != null && CollectionUtils.isNotEmpty(curveDataList)) {
int index = 0;
for (int i = curveBeginNum; i < curveBeginNum + curveDataList.size(); i++) {
XSSFRow row = sheet.getRow(i);
for (OriginalTemplateConfig config : configList) {
if (null == config.getColumnPlace()) {
continue;
}
if (null != config.getDataAttribute() && config.getDataAttribute().startsWith(collectionDataPrefix)) {
XSSFCell cell = row.getCell(config.getColumnPlace());
cell.setCellValue(curveDataList.get(index).get(config.getDataAttribute().substring(collectionDataPrefix.length())));
}
}
}
index++;
}
// 填充空白
if (blankBeginNum != null && blankDataMap != null && blankDataMap.size() > 0) {
XSSFRow row = sheet.getRow(blankBeginNum);
// 只插固定一行
for (OriginalTemplateConfig config : configList) {
if (null == config.getColumnPlace()) {
continue;
}
if (null != config.getDataAttribute() && config.getDataAttribute().startsWith(collectionDataPrefix)) {
XSSFCell cell = row.getCell(config.getColumnPlace());
cell.setCellValue(blankDataMap.get(config.getDataAttribute().substring(collectionDataPrefix.length())));
}
}
}
} }
} }
...@@ -2,12 +2,19 @@ package com.patzn.cloud.service.lims.hmhj.service.impl; ...@@ -2,12 +2,19 @@ package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.Condition; import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils; import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
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.controller.LoginHelper; import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.toolkit.*; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.FileUtils;
import com.patzn.cloud.commons.toolkit.JsonUtils;
import com.patzn.cloud.commons.toolkit.MapMergeUtils;
import com.patzn.cloud.feign.lims.base.client.LmsUserRelGroupClient; import com.patzn.cloud.feign.lims.base.client.LmsUserRelGroupClient;
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;
...@@ -21,33 +28,33 @@ import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum; ...@@ -21,33 +28,33 @@ import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum; import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import com.patzn.cloud.service.hmhj.vo.*; import com.patzn.cloud.service.hmhj.vo.*;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup; import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.GroupUserVO;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO; import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo; import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import com.patzn.cloud.service.lims.common.CompareUtils; import com.patzn.cloud.service.lims.common.CompareUtils;
import com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil; import com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.hmhj.common.LabreOfficeUtil; import com.patzn.cloud.service.lims.hmhj.common.LabreOfficeUtil;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemMapper; import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemMapper;
import com.patzn.cloud.service.lims.hmhj.original.*; import com.patzn.cloud.service.lims.hmhj.original.Operation;
import com.patzn.cloud.service.lims.hmhj.original.OriginalFactory;
import com.patzn.cloud.service.lims.hmhj.original.SingleSheetMoreItemOperation;
import com.patzn.cloud.service.lims.hmhj.service.*; import com.patzn.cloud.service.lims.hmhj.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.*; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* 服务实现类 * 服务实现类
...@@ -114,6 +121,8 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -114,6 +121,8 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
private String libreOfficeUrl; private String libreOfficeUrl;
@Autowired @Autowired
private ILmsOriginalRecordInfoService originalRecordInfoService; private ILmsOriginalRecordInfoService originalRecordInfoService;
@Autowired
private IQualificationService qualificationService;
@Override @Override
public Page<EntrustSampleItem> page(Page<EntrustSampleItem> page, EntrustSampleItem entrustSampleItem) { public Page<EntrustSampleItem> page(Page<EntrustSampleItem> page, EntrustSampleItem entrustSampleItem) {
...@@ -498,6 +507,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -498,6 +507,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
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()) + "");
// itemVoList中的所有项目名 --> 通过检测项目名拿到对应的采集仪器项目名
Set<String> itemNames = voList.stream().map(vo -> vo.getName()).distinct().collect(Collectors.toSet());
List<Qualification> qualifications = qualificationService.list(Condition.create().in("name", itemNames));
Map<String, String> itemNameMap = qualifications.stream().collect(Collectors.toMap(Qualification::getName, Qualification::getInstrumentItemName));
if (null != template.getMoreItem() && 1 == template.getMoreItem()) { if (null != template.getMoreItem() && 1 == template.getMoreItem()) {
Set<Long> sampleIdsList = new HashSet<>(); Set<Long> sampleIdsList = new HashSet<>();
for (EntrustSampleItemVO itemVO : voList) { for (EntrustSampleItemVO itemVO : voList) {
...@@ -517,7 +531,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -517,7 +531,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} }
/* 获取采集数据,并保存到SampleVO中 */ /* 获取采集数据,并保存到SampleVO中 */
getCollectionData(null, sampleVOList, entrustCode); getCollectionData(null, sampleVOList, entrustCode,itemNameMap, template);
if (null == template.getSampleBeginRow() || null == template.getSampleMergerNum() || null == template.getTemplateSampleNum()) { if (null == template.getSampleBeginRow() || null == template.getSampleMergerNum() || null == template.getTemplateSampleNum()) {
...@@ -538,7 +552,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -538,7 +552,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} else { } else {
/* 获取采集到的数据 */ /* 获取采集到的数据 */
getCollectionData(voList, null, entrustCode); getCollectionData(voList, null, entrustCode, itemNameMap,template);
if (CollectionUtils.isNotEmpty(voList)) { if (CollectionUtils.isNotEmpty(voList)) {
mapReplace.put("#{sampleFrom}", voList.get(0).getSampleFrom()); mapReplace.put("#{sampleFrom}", voList.get(0).getSampleFrom());
...@@ -597,11 +611,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -597,11 +611,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return objectKey; return objectKey;
} }
private void getCollectionData(List<EntrustSampleItemVO> itemVOListList, List<EntrustSampleVO> sampleVOList, String entrustCode) { private void getCollectionData(List<EntrustSampleItemVO> itemVOList, List<EntrustSampleVO> sampleVOList, String entrustCode, Map<String, String> itemNameMap, OriginalTemplate template) {
/* 拿到所有样品的编号 */ /* 拿到所有样品的编号 */
Set<String> numSet = new HashSet<>(); Set<String> numSet = new HashSet<>();
if (itemVOListList != null) { if (itemVOList != null) {
numSet = itemVOListList.stream().map(vo -> vo.getSampleCode()).collect(Collectors.toSet()); numSet = itemVOList.stream().map(vo -> vo.getSampleCode()).collect(Collectors.toSet());
} }
if (sampleVOList != null) { if (sampleVOList != null) {
numSet = sampleVOList.stream().map(vo -> vo.getCode()).collect(Collectors.toSet()); numSet = sampleVOList.stream().map(vo -> vo.getCode()).collect(Collectors.toSet());
...@@ -611,18 +625,48 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -611,18 +625,48 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
/* 按照样品编号和项目分开,来存放采集到的数据 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) {
MapMergeUtils.getorCreateMapArrayList(record.getSampleNum(), mapByNumItemName, record.getData()); if (null != template.getMoreItem() && 1 == template.getMoreItem()) {
MapMergeUtils.getorCreateMapArrayList(record.getSampleNum(), mapByNumItemName, record.getData());
} else {
MapMergeUtils.getorCreateMapArrayList(record.getSampleNum() + record.getItemName(), mapByNumItemName, record.getData());
}
} }
String curve = "curveData";
String blank = "blank";
AtomicBoolean filledCur = new AtomicBoolean(false);
AtomicBoolean filledBlank = new AtomicBoolean(false);
/* 设置采集数据的Map -- itemVo */ /* 设置采集数据的Map -- itemVo */
if (itemVOListList != null) { if (itemVOList != null) {
itemVOListList.stream().forEach(vo -> { itemVOList.stream().forEach(vo -> {
List<String> datas = mapByNumItemName.get(vo.getSampleCode()); List<String> datas = mapByNumItemName.get(vo.getSampleCode() + itemNameMap.get(vo.getName()));
if (CollectionUtils.isNotEmpty(datas)) { if (CollectionUtils.isNotEmpty(datas)) {
ArrayList<Map<String, String>> maps = new ArrayList<>(4); ArrayList<Map<String, String>> collectionDataList = new ArrayList<>();
for (String data : datas) { for (String data : datas) {
maps.add(toStringStringMap(data)); Map<String, String> stringStringMap = toStringStringMap(data);
/* 找到曲线数据和空白数据 */
List<Map<String, String>> curveDatas = new ArrayList<Map<String,String>>();
if (stringStringMap.containsKey(curve) && !filledCur.get()) {
filledCur.set(true);
curveDatas = (List<Map<String, String>>) (JSONArray.parse(stringStringMap.get(curve)));
vo.setCurveDataList(curveDatas);
}
List<String> blankKeys = new ArrayList<>();
blankKeys.add("content");blankKeys.add("correctedContent");blankKeys.add("abs");
if (!filledBlank.get()) {
filledBlank.set(true);
HashMap<String, String> blankMap = new HashMap<>();
for (String blankKey : blankKeys) {
String value = stringStringMap.get("blank" + StringUtils.capitalize(blankKey));
if (StringUtils.isNotEmpty(value)) {
blankMap.put(blankKey,value);
}
}
vo.setBlankDataMap(blankMap);
}
collectionDataList.add(stringStringMap);
} }
vo.setCollectionDataList(maps); vo.setCollectionDataList(collectionDataList);
} }
}); });
} }
...@@ -631,7 +675,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -631,7 +675,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
sampleVOList.stream().forEach(vo -> { sampleVOList.stream().forEach(vo -> {
List<String> datas = mapByNumItemName.get(vo.getCode()); List<String> datas = mapByNumItemName.get(vo.getCode());
if (CollectionUtils.isNotEmpty(datas)) { if (CollectionUtils.isNotEmpty(datas)) {
ArrayList<Map<String, String>> maps = new ArrayList<>(4); ArrayList<Map<String, String>> maps = new ArrayList<>();
for (String data : datas) { for (String data : datas) {
maps.add(toStringStringMap(data)); maps.add(toStringStringMap(data));
} }
...@@ -645,7 +689,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -645,7 +689,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
HashMap<String, String> stringStringHashMap = new HashMap<>(); HashMap<String, String> stringStringHashMap = new HashMap<>();
Map<String, Object> stringObjectMap = JsonUtils.exchange(jsonString); Map<String, Object> stringObjectMap = JsonUtils.exchange(jsonString);
for (Map.Entry<String, Object> entry : stringObjectMap.entrySet()) { for (Map.Entry<String, Object> entry : stringObjectMap.entrySet()) {
stringStringHashMap.put(entry.getKey(), (String) entry.getValue()); if (entry.getValue() instanceof String) {
stringStringHashMap.put(entry.getKey(), (String) entry.getValue());
} else {
stringStringHashMap.put(entry.getKey(),((JSONArray) entry.getValue()).toJSONString());
}
} }
return stringStringHashMap; return stringStringHashMap;
} }
......
...@@ -1282,7 +1282,7 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -1282,7 +1282,7 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
private ByteArrayOutputStream getEntrustBaos() { private ByteArrayOutputStream getEntrustBaos() {
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("\\templates.\\word.\\entrust.\\EntrustExportTemplate.docx"); InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("\\templates\\word\\entrust\\EntrustExportTemplate.docx");
RestAssert.fail(null == inputStream, "委托检测书模板获取失败"); RestAssert.fail(null == inputStream, "委托检测书模板获取失败");
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
int len; int len;
......
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