Commit b2ee5275 by wangweidong

土工问题

parent 5e869911
package com.patzn.cloud.service.lims.original;
import com.patzn.cloud.service.soil.entity.SoilEntrust;
import com.patzn.cloud.service.soil.entity.SoilOriginalTemplate;
import com.patzn.cloud.service.soil.entity.SoilOriginalTemplateConfig;
import com.patzn.cloud.service.soil.vo.SoilExperimentVO;
import com.patzn.cloud.service.soil.vo.SoilItemVO;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class OriginalOperationFactory {
private XSSFWorkbook xssfWorkbook;
private InputStream io;
private Map<String, String> mapReplace;
private List<SoilOriginalTemplateConfig> configList;
private SoilOriginalTemplate template;
private List<SoilExperimentVO> voList;
private Map<Long,List<SoilItemVO>> sampleSoilItemVOMap=new ConcurrentHashMap<>();
private SoilEntrust entrust;
public OriginalOperationFactory(XSSFWorkbook xssfWorkbook, InputStream io, Map<String, String> mapReplace, List<SoilOriginalTemplateConfig> configList, SoilOriginalTemplate template, List<SoilExperimentVO> voList, List<SoilItemVO> soilItemVOList ,SoilEntrust entrust) {
this.xssfWorkbook = xssfWorkbook;
this.io = io;
this.mapReplace = mapReplace;
this.configList = configList;
this.template = template;
for (SoilExperimentVO vo:voList) {
if (vo.getName().contains("重塑")){
vo.setMorphology("重塑");
}else{
vo.setMorphology("原状");
}
}
for (SoilItemVO soilItemVO:soilItemVOList) {
if (sampleSoilItemVOMap.containsKey(soilItemVO.getSampleId())){
List<SoilItemVO> sampleItems = sampleSoilItemVOMap.get(soilItemVO.getSampleId());
sampleItems.add(soilItemVO);
sampleSoilItemVOMap.put(soilItemVO.getSampleId(),sampleItems);
}else {
List<SoilItemVO> sampleItems = new ArrayList<>();
sampleItems.add(soilItemVO);
sampleSoilItemVOMap.put(soilItemVO.getSampleId(),sampleItems);
}
}
this.voList = voList;
this.entrust = entrust;
}
public Operation getOperation(SoilOriginalTemplate template,Integer templateSampleNum, List<SoilExperimentVO> voList){
if (null==template.getMoreSheet() || 0 == template.getMoreSheet()){
//单模板
if (voList.size()<templateSampleNum){
return new SingleLessOperation(xssfWorkbook,io,mapReplace,configList,template,voList,sampleSoilItemVOMap);
}else{
return new SingleMoreOperation(xssfWorkbook,io,mapReplace,configList,template,voList,sampleSoilItemVOMap);
}
}else{
//多sheet模板
if (null == templateSampleNum || 1==templateSampleNum){
return new SheetMoreSingleOperation(xssfWorkbook,io,mapReplace,configList,template,voList,sampleSoilItemVOMap);
}else{
return new SheetMoreMuchOperation(xssfWorkbook,io,mapReplace,configList,template,voList,sampleSoilItemVOMap,entrust);
}
}
}
}
package com.patzn.cloud.service.lims.original;
import com.patzn.cloud.service.lims.common.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.soil.entity.SoilOriginalTemplate;
import com.patzn.cloud.service.soil.entity.SoilOriginalTemplateConfig;
import com.patzn.cloud.service.soil.vo.SoilExperimentVO;
import com.patzn.cloud.service.soil.vo.SoilItemVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
public class SingleLessOperation implements Operation {
private XSSFWorkbook xssfWorkbook;
private InputStream io;
private Map<String, String> mapReplace;
private List<SoilOriginalTemplateConfig> configList;
private SoilOriginalTemplate template;
private List<SoilExperimentVO> voList;
private Map<Long,List<SoilItemVO>> sampleSoilItemVOMap;
protected final Logger logger = LoggerFactory.getLogger(SingleLessOperation.class);
public SingleLessOperation(XSSFWorkbook xssfWorkbook, InputStream io, Map<String, String> mapReplace, List<SoilOriginalTemplateConfig> configList, SoilOriginalTemplate template, List<SoilExperimentVO> voList, Map<Long, List<SoilItemVO>> sampleSoilItemVOMap) {
this.xssfWorkbook = xssfWorkbook;
this.io = io;
this.mapReplace = mapReplace;
this.configList = configList;
this.template = template;
this.voList = voList;
this.sampleSoilItemVOMap = sampleSoilItemVOMap;
}
public void doProductOriginal(){
HSSFWorkbookUtil.replaceModel(mapReplace,xssfWorkbook,0);
XSSFSheet sheetOne = xssfWorkbook.getSheetAt(0);
sheetOne.setForceFormulaRecalculation(true);
Integer beginRow = template.getSampleBeginRow();
if (null == beginRow){
return;
}
if (null==template.getSampleMergerNum()){
return;
}
if ( null==template.getTemplateSampleNum()){
return;
}
int templateSampleNum = template.getTemplateSampleNum();
//样品数量小于模板里面的样品数量
int sampleMergerNum = template.getSampleMergerNum();
for (SoilExperimentVO vo:voList) {
List<SoilItemVO> soilItemVOS = sampleSoilItemVOMap.get(vo.getSampleId());
XSSFRow xssfRow = sheetOne.getRow(beginRow);
for (SoilOriginalTemplateConfig config:configList) {
if(null == config.getColumnPlace()){
continue;
}
XSSFCell cell = xssfRow.getCell(config.getColumnPlace());
if ("sn".equals(config.getDataAttribute())){
continue;
}
if (StringUtils.isNotBlank(config.getDataAttribute())&&config.getDataAttribute().contains("for")){
String name = config.getDataAttribute().replace("for","");
OriginalUtil.doForValue(sampleMergerNum,sheetOne,beginRow,config,name,soilItemVOS);
continue;
}
cell.setCellValue(HSSFWorkbookUtil.getFieldValue(config.getDataAttribute(),vo,soilItemVOS));
}
beginRow+=sampleMergerNum;
}
for (SoilOriginalTemplateConfig config:configList) {
if (null == config.getMergeRowNum()){
config.setMergeRowNum(1);
}
if(OriginalUtil.skipDoExcel(config)){
continue;
}
Integer sampleBgMum = template.getSampleBeginRow();
Integer mergeRowNum = config.getMergeRowNum();
int formulaNum = template.getSampleBeginRow()+sampleMergerNum*templateSampleNum-1 ;
for (int i =sampleBgMum ; i <= formulaNum; i+=mergeRowNum) {
XSSFRow row = sheetOne.getRow(i);
if (null == row){
continue;
}
XSSFCell cell = row.getCell(config.getColumnPlace());
if (null == cell){
continue;
}
String formula = config.getFormula();
formula = formula.replace("#{sn}",(i+1)+"");
if (formula.contains("#{sneven1}")){
if (StringHandleUtils.isEven(i)){
formula= formula.replace("#{sneven1}",(i+1)+"");
}else{
formula= formula.replace("#{sneven1}",i+"");
}
}
if (formula.contains("#{snodd1}")){
if (!StringHandleUtils.isEven(i)){
formula= formula.replace("#{snodd1}",(i+1)+"");
}else{
formula= formula.replace("#{snodd1}",i+"");
}
}
if (formula.contains("#{sn+1}")){
formula= formula.replace("#{sn+1}",(i+2)+"");
}
if (formula.contains("#{sn+2}")){
formula= formula.replace("#{sn+2}",(i+3)+"");
}
if (formula.contains("#{sn+3}")){
formula= formula.replace("#{sn+3}",(i+4)+"");
}
if (formula.contains("#{sn+4}")){
formula= formula.replace("#{sn+4}",(i+5)+"");
}
if (formula.contains("#{sn+5}")){
formula= formula.replace("#{sn+5}",(i+6)+"");
}
if (formula.contains("#{sn+6}")){
formula= formula.replace("#{sn+6}",(i+7)+"");
}
if (formula.contains("#{sn+7}")){
formula= formula.replace("#{sn+7}",(i+8)+"");
}
cell.setCellFormula(formula);
}
}
logger.error("----------------------7");
}
}
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