Commit 9781e83e by ghxdhr

原始记录修改

parent c79981d7
......@@ -29,11 +29,11 @@ public class OriginalFactory {
if (null == template.getSampleBeginRow()|| null==template.getSampleMergerNum()||null==template.getTemplateSampleNum()){
return null;
}
if (voList.size()<template.getTemplateSampleNum()){
return new SingleSheetLittleOperation(template,voList,entrust,configList,xssfWorkbook);
}else{
// if (voList.size()<template.getTemplateSampleNum()){
// return new SingleSheetLittleOperation(template,voList,entrust,configList,xssfWorkbook);
// }else{
return new SingleSheetMoreOperation(template,voList,entrust,configList,xssfWorkbook);
}
// }
}else{
Integer templateSampleNum = template.getTemplateSampleNum();
......
......@@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -21,6 +22,7 @@ public class SingleSheetMoreOperation implements Operation {
private Entrust entrust ;
private List<OriginalTemplateConfig> configList;
private XSSFWorkbook xssfWorkbook;
private String collectionDataPrefix = "clc.";
public SingleSheetMoreOperation(OriginalTemplate template, List<EntrustSampleItemVO> voList, Entrust entrust, List<OriginalTemplateConfig> configList, XSSFWorkbook xssfWorkbook) {
this.template = template;
this.voList = voList;
......@@ -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;
import com.alibaba.fastjson.JSONArray;
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.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
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.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
......@@ -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.vo.*;
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.collection.entity.LmsOriginalRecordInfo;
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.LabreOfficeUtil;
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.commons.service.impl.BaseServiceImpl;
import org.apache.commons.lang3.ArrayUtils;
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.Value;
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 java.io.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 服务实现类
......@@ -114,6 +121,8 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
private String libreOfficeUrl;
@Autowired
private ILmsOriginalRecordInfoService originalRecordInfoService;
@Autowired
private IQualificationService qualificationService;
@Override
public Page<EntrustSampleItem> page(Page<EntrustSampleItem> page, EntrustSampleItem entrustSampleItem) {
......@@ -498,6 +507,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
mapReplace.put("#{nowDate}", DateUtils.toYearMonthDay(new Date()));
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()) {
Set<Long> sampleIdsList = new HashSet<>();
for (EntrustSampleItemVO itemVO : voList) {
......@@ -517,7 +531,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
}
/* 获取采集数据,并保存到SampleVO中 */
getCollectionData(null, sampleVOList, entrustCode);
getCollectionData(null, sampleVOList, entrustCode,itemNameMap, template);
if (null == template.getSampleBeginRow() || null == template.getSampleMergerNum() || null == template.getTemplateSampleNum()) {
......@@ -538,7 +552,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} else {
/* 获取采集到的数据 */
getCollectionData(voList, null, entrustCode);
getCollectionData(voList, null, entrustCode, itemNameMap,template);
if (CollectionUtils.isNotEmpty(voList)) {
mapReplace.put("#{sampleFrom}", voList.get(0).getSampleFrom());
......@@ -597,11 +611,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
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<>();
if (itemVOListList != null) {
numSet = itemVOListList.stream().map(vo -> vo.getSampleCode()).collect(Collectors.toSet());
if (itemVOList != null) {
numSet = itemVOList.stream().map(vo -> vo.getSampleCode()).collect(Collectors.toSet());
}
if (sampleVOList != null) {
numSet = sampleVOList.stream().map(vo -> vo.getCode()).collect(Collectors.toSet());
......@@ -611,18 +625,48 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
/* 按照样品编号和项目分开,来存放采集到的数据 record的data */
HashMap<String, List<String>> mapByNumItemName = new HashMap<>();
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 */
if (itemVOListList != null) {
itemVOListList.stream().forEach(vo -> {
List<String> datas = mapByNumItemName.get(vo.getSampleCode());
if (itemVOList != null) {
itemVOList.stream().forEach(vo -> {
List<String> datas = mapByNumItemName.get(vo.getSampleCode() + itemNameMap.get(vo.getName()));
if (CollectionUtils.isNotEmpty(datas)) {
ArrayList<Map<String, String>> maps = new ArrayList<>(4);
ArrayList<Map<String, String>> collectionDataList = new ArrayList<>();
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
sampleVOList.stream().forEach(vo -> {
List<String> datas = mapByNumItemName.get(vo.getCode());
if (CollectionUtils.isNotEmpty(datas)) {
ArrayList<Map<String, String>> maps = new ArrayList<>(4);
ArrayList<Map<String, String>> maps = new ArrayList<>();
for (String data : datas) {
maps.add(toStringStringMap(data));
}
......@@ -645,7 +689,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
HashMap<String, String> stringStringHashMap = new HashMap<>();
Map<String, Object> stringObjectMap = JsonUtils.exchange(jsonString);
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;
}
......
......@@ -1282,7 +1282,7 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
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, "委托检测书模板获取失败");
byte[] buffer = new byte[1024];
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