Commit ebe46889 by wangweidong

土工平台修改

parent e2233e1f
...@@ -13,15 +13,69 @@ import java.util.List; ...@@ -13,15 +13,69 @@ import java.util.List;
public class CollectUtil { public class CollectUtil {
public static void main(String[] args) { public static void main(String[] args) {
File file = new File("D://界限含水率(联合测定)S-1.txt"); File file = new File("D://颗粒分析试验 GB SieveS-99.txt");
try { try {
FileInputStream io = new FileInputStream(file); FileInputStream io = new FileInputStream(file);
txt2StringWuxing(io); txt2StringKeliFenxi(io);
}catch (Exception e){ }catch (Exception e){
} }
} }
public static List<SoilExperimentCollectDataVO> txt2StringKeliFenxi(InputStream io){
StringBuilder result = new StringBuilder();
List<SoilExperimentCollectDataVO> dataList = new ArrayList<>();
try {
InputStreamReader inputReader = new InputStreamReader(io,"GBK");
BufferedReader brCheck = new BufferedReader(inputReader);//构造一个BufferedReader类来读取文件
BufferedReader br = new BufferedReader(inputReader);//构造一个BufferedReader类来读取文件
String s = null;
StringBuffer sbAll = new StringBuffer();
List<String> allStringList = new ArrayList<>();
String gcbh = "";
String sampleCode = "";
while((s = brCheck.readLine())!=null){
// s = s.replace("─","").replace("┌","").
// replace("┬","").replace("┐","").
// replace("├","").replace("┼","").
// replace("┴","").replace("└","").
// replace("┘","").replace("┤","").
// replace("─","").replace("─","");
System.out.println(s);
allStringList.add(s);
String content = s.replace(" ","");
sbAll.append(content);
}
System.out.println();
System.out.println(sampleCode);
}catch (Exception e){
}
return dataList;
}
public static List<SoilExperimentCollectDataVO> txt2StringWuxing(InputStream io){ public static List<SoilExperimentCollectDataVO> txt2StringWuxing(InputStream io){
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
List<SoilExperimentCollectDataVO> dataList = new ArrayList<>(); List<SoilExperimentCollectDataVO> dataList = new ArrayList<>();
......
...@@ -148,255 +148,264 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe ...@@ -148,255 +148,264 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public SoilReport generateReport(Long entrustId,Long templateId, Long[] expReportIds) { public SoilReport generateReport(Long entrustId,Long templateId, Long[] expReportIds) {
RestAssert.fail(null == templateId,"请选择报告模板");
RestAssert.fail(ArrayUtils.isEmpty(expReportIds),"请选择试验项目报告");
SoilExpReportTemplate template = soilExpReportTemplateService.getById(templateId);
RestAssert.fail(null == template,"报告模板不存在");
SoilEntrust entrust = soilEntrustService.getById(entrustId);
RestAssert.fail(null ==entrust,"委托单不存在");
List<SoilExpReport> reportList = soilExpReportService.list(Condition.create().in("id",expReportIds).orderBy("version",true));
InputStream ioPut = ossClient.download(template.getObjectKey());
RestAssert.fail(null == ioPut,"模板不存在");
XSSFWorkbook xssfWorkbook= HSSFWorkbookUtil.getWorkbookByIO(ioPut);
RestAssert.fail(null == xssfWorkbook,"模板获取失败");
Map<String,String> replaceMap = new HashMap<>();
Map<String, String> mapReplace = new HashMap<>();
mapReplace.put("#{projectName}",StringHandleUtils.getString(entrust.getProjectName()));
mapReplace.put("#{reportCode}","报告编号:"+entrust.getEntrustCode());
mapReplace.put("#{client}",StringHandleUtils.getString(entrust.getClient()));
mapReplace.put("#{boreholeName}",StringHandleUtils.getString(entrust.getBoreholeName()));
mapReplace.put("#{projectNo}",StringHandleUtils.getString(entrust.getProjectNo()));
mapReplace.put("#{testType}",StringHandleUtils.getString(entrust.getTestType()));
int sheetNums = xssfWorkbook.getNumberOfSheets();
Integer sampleBeginRow = template.getSampleBeginRow();
Integer sampleMergerNum = template.getSampleMergerNum();
Integer templateSampleNum = template.getTemplateSampleNum();
List<SoilExpReportTemplateConfig> configList = new ArrayList<>();
if (null!=sampleBeginRow && null != sampleMergerNum && null !=templateSampleNum){
configList = soilExpReportTemplateConfigService.list(Condition.create().eq("template_id",templateId));
}
Map<Integer,List<SoilExpReportTemplateConfig>> configSheetMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(configList)){
for (SoilExpReportTemplateConfig config:configList) {
if (null == config.getSheetNum()){
continue;
}
if (configSheetMap.containsKey(config.getSheetNum())){
List<SoilExpReportTemplateConfig> templateConfigsList = configSheetMap.get(config.getSheetNum());
templateConfigsList.add(config);
configSheetMap.put(config.getSheetNum(),templateConfigsList);
}else {
List<SoilExpReportTemplateConfig> templateConfigsList = new ArrayList<>();
templateConfigsList.add(config);
configSheetMap.put(config.getSheetNum(),templateConfigsList);
}
}
}
List<SoilExpReportRelExp> reportRelExpList = soilExpReportRelExpService.list(Condition.create().in("exp_report_id",expReportIds));
List<SoilSampleVO> voList = new ArrayList<>();
List<SoilAppendix> appendixList = new ArrayList<>(); try {
RestAssert.fail(null == templateId,"请选择报告模板");
RestAssert.fail(ArrayUtils.isEmpty(expReportIds),"请选择试验项目报告");
SoilExpReportTemplate template = soilExpReportTemplateService.getById(templateId);
RestAssert.fail(null == template,"报告模板不存在");
SoilEntrust entrust = soilEntrustService.getById(entrustId);
RestAssert.fail(null ==entrust,"委托单不存在");
List<SoilExpReport> reportList = soilExpReportService.list(Condition.create().in("id",expReportIds).orderBy("version",true));
InputStream ioPut = ossClient.download(template.getObjectKey());
RestAssert.fail(null == ioPut,"模板不存在");
XSSFWorkbook xssfWorkbook= HSSFWorkbookUtil.getWorkbookByIO(ioPut);
RestAssert.fail(null == xssfWorkbook,"模板获取失败");
Map<String,String> replaceMap = new HashMap<>();
Map<String, String> mapReplace = new HashMap<>();
mapReplace.put("#{projectName}",StringHandleUtils.getString(entrust.getProjectName()));
mapReplace.put("#{reportCode}","报告编号:"+entrust.getEntrustCode());
mapReplace.put("#{client}",StringHandleUtils.getString(entrust.getClient()));
mapReplace.put("#{boreholeName}",StringHandleUtils.getString(entrust.getBoreholeName()));
mapReplace.put("#{projectNo}",StringHandleUtils.getString(entrust.getProjectNo()));
mapReplace.put("#{testType}",StringHandleUtils.getString(entrust.getTestType()));
int sheetNums = xssfWorkbook.getNumberOfSheets();
if (CollectionUtils.isNotEmpty(reportRelExpList)){
List<Long> expIds = reportRelExpList.stream().map(r->{
return r.getExpId();
}).collect(Collectors.toList());
Integer sampleBeginRow = template.getSampleBeginRow();
Integer sampleMergerNum = template.getSampleMergerNum();
Integer templateSampleNum = template.getTemplateSampleNum();
appendixList = soilAppendixService.list(Condition.create().in("exp_id",expIds)); List<SoilExpReportTemplateConfig> configList = new ArrayList<>();
if (null!=sampleBeginRow && null != sampleMergerNum && null !=templateSampleNum){
configList = soilExpReportTemplateConfigService.list(Condition.create().eq("template_id",templateId));
}
Map<Integer,List<SoilExpReportTemplateConfig>> configSheetMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(configList)){
for (SoilExpReportTemplateConfig config:configList) {
if (null == config.getSheetNum()){
continue;
}
if (configSheetMap.containsKey(config.getSheetNum())){
List<SoilExpReportTemplateConfig> templateConfigsList = configSheetMap.get(config.getSheetNum());
templateConfigsList.add(config);
configSheetMap.put(config.getSheetNum(),templateConfigsList);
}else {
List<SoilExpReportTemplateConfig> templateConfigsList = new ArrayList<>();
templateConfigsList.add(config);
configSheetMap.put(config.getSheetNum(),templateConfigsList);
}
List<SoilExperimentVO> experimentList = soilExperimentService.listVOByIdsContainsItem(expIds); }
if (CollectionUtils.isNotEmpty(experimentList)){ }
List<Long> sampelIds = experimentList.stream().map(e->{ List<SoilExpReportRelExp> reportRelExpList = soilExpReportRelExpService.list(Condition.create().in("exp_report_id",expReportIds));
return e.getSampleId();
}).collect(Collectors.toList());
List<SoilSampleVO> voList = new ArrayList<>();
List<SoilSample> sampleList = soilSampleService.list(Condition.create().in("id",sampelIds)); List<SoilAppendix> appendixList = new ArrayList<>();
for (SoilSample sample:sampleList) {
List<SoilExperimentVO> vosList = new ArrayList<>();
for (SoilExperimentVO soilExperimentVO:experimentList) {
if (sample.getId().equals(soilExperimentVO.getSampleId())){
vosList.add(soilExperimentVO);
}
}
SoilSampleVO vo = sample.convert(SoilSampleVO.class);
vo.setExperimentVOList(vosList);
vo.setBoreholeName(entrust.getBoreholeName());
voList.add(vo);
}
}
}
if (CollectionUtils.isNotEmpty(reportRelExpList)){
List<Long> expIds = reportRelExpList.stream().map(r->{
return r.getExpId();
}).collect(Collectors.toList());
for (int i = 0; i < sheetNums; i++) { appendixList = soilAppendixService.list(Condition.create().in("exp_id",expIds));
if (!xssfWorkbook.isSheetHidden(i)){
HSSFWorkbookUtil.replaceModel(mapReplace,xssfWorkbook,i);
List<SoilExpReportTemplateConfig> templateConfigsList = configSheetMap.get(i);
if (CollectionUtils.isEmpty(templateConfigsList)){
continue;
}
XSSFSheet sheetOne = xssfWorkbook.getSheetAt(i);
Integer beginRow = sampleBeginRow;
if (voList.size()<templateSampleNum){
for (SoilSampleVO vo:voList) {
List<SoilExperimentVO> experimentVOList = vo.getExperimentVOList();
XSSFRow xssfRow = sheetOne.getRow(beginRow);
for (SoilExpReportTemplateConfig config:configList) {
if ("sn".equals(config.getDataAttribute())){
continue;
}
setExcelCellValueForSummary(config.getDataAttribute(),vo,xssfRow.getCell(config.getColumnPlace()),experimentVOList);
}
beginRow+=sampleMergerNum;
}
}else{
int insertRow = beginRow+sampleMergerNum*templateSampleNum;
XSSFRow zeroRow = sheetOne.getRow(beginRow);
XSSFCellStyle cellStyle = zeroRow.getCell(0).getCellStyle();
int lastCellNum = zeroRow.getLastCellNum();
int insertCount = voList.size()-templateSampleNum;
for (int m = 0 ; m<insertCount ;m++) {
for (int k = 0;k < sampleMergerNum; k++) {
sheetOne.shiftRows(insertRow, sheetOne.getLastRowNum(), 1,true,false);
XSSFRow row = sheetOne.createRow(insertRow);
row.setHeight(zeroRow.getHeight());
for (int j = 0; j < lastCellNum; j++) {
XSSFCell xssfCell = row.createCell(j);
xssfCell.setCellStyle(cellStyle);
}
insertRow++;
}
}
int sn = 1;
for (SoilSampleVO vo:voList) {
XSSFRow xssfRow = sheetOne.getRow(beginRow);
List<SoilExperimentVO> experimentVOList = vo.getExperimentVOList();
for (SoilExpReportTemplateConfig config:configList) {
if (null == config.getColumnPlace()){
continue;
}
XSSFCell cell = xssfRow.getCell(config.getColumnPlace());
if ("sn".equals(config.getDataAttribute())){
cell.setCellValue(sn);
continue;
}
setExcelCellValueForSummary(config.getDataAttribute(),vo,cell,experimentVOList);
}
beginRow+=sampleMergerNum;
sn++;
}
for (SoilExpReportTemplateConfig config:configList) {
if (null==config.getMergeRowNum()){
config.setMergeRowNum(1);
}
if (null == config.getMergeBegin()){
continue;
}
if (null == config.getMergeEnd()){
continue;
}
int step= config.getMergeRowNum();
if (step==1 && config.getMergeEnd() == config.getMergeBegin()){
continue;
}
if (null != config.getColumnPlace() && null != config.getMergeRowNum()){
Integer sampleBgMum = template.getSampleBeginRow()+templateSampleNum*sampleMergerNum;
Integer sampleEnMum = template.getSampleBeginRow()+voList.size()*sampleMergerNum-1;
while (sampleBgMum<=sampleEnMum) {
sheetOne.addMergedRegion(new CellRangeAddress(sampleBgMum,sampleBgMum+step-1,config.getMergeBegin(),config.getMergeEnd()));
sampleBgMum=sampleBgMum+step;
}
}
}
}
}
}
List<Workbook> bookList = new ArrayList<>();
Workbook workbook =null;
if (null !=xssfWorkbook){
try {
workbook = new Workbook(exportToExcelInputStream(xssfWorkbook));
}catch (Exception e){
} List<SoilExperimentVO> experimentList = soilExperimentService.listVOByIdsContainsItem(expIds);
}
for (SoilExpReport report:reportList) {
try {
Workbook book = new Workbook(ossClient.download(report.getObjectKey()));
if (null!=book){
bookList.add(book);
}
}catch (Exception e){
} if (CollectionUtils.isNotEmpty(experimentList)){
} List<Long> sampelIds = experimentList.stream().map(e->{
for (SoilAppendix appendix:appendixList) { return e.getSampleId();
}).collect(Collectors.toList());
try {
Workbook book = new Workbook(ossClient.download(appendix.getObjectKey()));
if (null!=book){
bookList.add(book);
}
}catch (Exception e){
} List<SoilSample> sampleList = soilSampleService.list(Condition.create().in("id",sampelIds));
} for (SoilSample sample:sampleList) {
if (CollectionUtils.isNotEmpty(bookList)){ List<SoilExperimentVO> vosList = new ArrayList<>();
for (SoilExperimentVO soilExperimentVO:experimentList) {
try { if (sample.getId().equals(soilExperimentVO.getSampleId())){
File allFileName = AsposeUtil.mergeWork(entrust.getEntrustCode(),workbook,bookList); vosList.add(soilExperimentVO);
OssFileResult result = ossClient.upload(allFileName); }
}
SoilReport soilReport = new SoilReport(); SoilSampleVO vo = sample.convert(SoilSampleVO.class);
soilReport.setUname(LoginHelper.getAccount().getUserName()); vo.setExperimentVOList(vosList);
soilReport.setRemark("报告生成"); vo.setBoreholeName(entrust.getBoreholeName());
soilReport.setVersionId(result.getVersionId()); voList.add(vo);
soilReport.setObjectKey(result.getObjectKey()); }
soilReport.setBucketName(result.getBucketName()); }
soilReport.setEntrustId(entrustId); }
soilReport.setUri(result.getUri());
soilReport.setReportType(template.getClassType());
if (soilReportService.save(soilReport)){ for (int i = 0; i < sheetNums; i++) {
FileUtils.deleteFiles(allFileName); if (!xssfWorkbook.isSheetHidden(i)){
HSSFWorkbookUtil.replaceModel(mapReplace,xssfWorkbook,i);
return soilReport;
} List<SoilExpReportTemplateConfig> templateConfigsList = configSheetMap.get(i);
}catch (Exception e){ if (CollectionUtils.isEmpty(templateConfigsList)){
logger.error("生成汇总报告失败"+e.getMessage()); continue;
return null; }
XSSFSheet sheetOne = xssfWorkbook.getSheetAt(i);
Integer beginRow = sampleBeginRow;
if (voList.size()<templateSampleNum){
for (SoilSampleVO vo:voList) {
List<SoilExperimentVO> experimentVOList = vo.getExperimentVOList();
XSSFRow xssfRow = sheetOne.getRow(beginRow);
for (SoilExpReportTemplateConfig config:configList) {
if ("sn".equals(config.getDataAttribute())){
continue;
}
setExcelCellValueForSummary(config.getDataAttribute(),vo,xssfRow.getCell(config.getColumnPlace()),experimentVOList);
}
beginRow+=sampleMergerNum;
}
}else{
int insertRow = beginRow+sampleMergerNum*templateSampleNum;
XSSFRow zeroRow = sheetOne.getRow(beginRow);
XSSFCellStyle cellStyle = zeroRow.getCell(0).getCellStyle();
int lastCellNum = zeroRow.getLastCellNum();
int insertCount = voList.size()-templateSampleNum;
for (int m = 0 ; m<insertCount ;m++) {
for (int k = 0;k < sampleMergerNum; k++) {
sheetOne.shiftRows(insertRow, sheetOne.getLastRowNum(), 1,true,false);
XSSFRow row = sheetOne.createRow(insertRow);
row.setHeight(zeroRow.getHeight());
for (int j = 0; j < lastCellNum; j++) {
XSSFCell xssfCell = row.createCell(j);
xssfCell.setCellStyle(cellStyle);
}
insertRow++;
}
}
int sn = 1;
for (SoilSampleVO vo:voList) {
XSSFRow xssfRow = sheetOne.getRow(beginRow);
List<SoilExperimentVO> experimentVOList = vo.getExperimentVOList();
for (SoilExpReportTemplateConfig config:configList) {
if (null == config.getColumnPlace()){
continue;
}
XSSFCell cell = xssfRow.getCell(config.getColumnPlace());
if ("sn".equals(config.getDataAttribute())){
cell.setCellValue(sn);
continue;
}
setExcelCellValueForSummary(config.getDataAttribute(),vo,cell,experimentVOList);
}
beginRow+=sampleMergerNum;
sn++;
}
for (SoilExpReportTemplateConfig config:configList) {
if (null==config.getMergeRowNum()){
config.setMergeRowNum(1);
}
if (null == config.getMergeBegin()){
continue;
}
if (null == config.getMergeEnd()){
continue;
}
int step= config.getMergeRowNum();
if (step==1 && config.getMergeEnd() == config.getMergeBegin()){
continue;
}
if (null != config.getColumnPlace() && null != config.getMergeRowNum()){
Integer sampleBgMum = template.getSampleBeginRow()+templateSampleNum*sampleMergerNum;
Integer sampleEnMum = template.getSampleBeginRow()+voList.size()*sampleMergerNum-1;
while (sampleBgMum<=sampleEnMum) {
sheetOne.addMergedRegion(new CellRangeAddress(sampleBgMum,sampleBgMum+step-1,config.getMergeBegin(),config.getMergeEnd()));
sampleBgMum=sampleBgMum+step;
}
}
}
}
}
}
List<Workbook> bookList = new ArrayList<>();
Workbook workbook =null;
if (null !=xssfWorkbook){
try {
workbook = new Workbook(exportToExcelInputStream(xssfWorkbook));
}catch (Exception e){
logger.error(" workbook = new Workbook(exportToExcelInputStream(xssfWorkbook));"+e.getMessage());
}
}
for (SoilExpReport report:reportList) {
try {
Workbook book = new Workbook(ossClient.download(report.getObjectKey()));
if (null!=book){
bookList.add(book);
}
}catch (Exception e){
logger.error(" Workbook book = new Workbook(ossClient.download(report.getObjectKey()));"+e.getMessage());
}
}
for (SoilAppendix appendix:appendixList) {
try {
Workbook book = new Workbook(ossClient.download(appendix.getObjectKey()));
if (null!=book){
bookList.add(book);
}
}catch (Exception e){
logger.error(" Workbook book = new Workbook(ossClient.download(appendix.getObjectKey()));;"+e.getMessage());
}
}
if (CollectionUtils.isNotEmpty(bookList)){
try {
File allFileName = AsposeUtil.mergeWork(entrust.getEntrustCode(),workbook,bookList);
OssFileResult result = ossClient.upload(allFileName);
SoilReport soilReport = new SoilReport();
soilReport.setUname(LoginHelper.getAccount().getUserName());
soilReport.setRemark("报告生成");
soilReport.setVersionId(result.getVersionId());
soilReport.setObjectKey(result.getObjectKey());
soilReport.setBucketName(result.getBucketName());
soilReport.setEntrustId(entrustId);
soilReport.setUri(result.getUri());
soilReport.setReportType(template.getClassType());
if (soilReportService.save(soilReport)){
FileUtils.deleteFiles(allFileName);
return soilReport;
}
}catch (Exception e){
logger.error("生成汇总报告失败"+e.getMessage());
return null;
}
}else{
return null;
}
}catch (Exception e){
logger.error("生成汇总报告失败------"+e.getMessage());
RestAssert.fail("生成失败,请联系管理员!");
}
}
}else{
return null;
}
return null; return null;
} }
......
...@@ -3168,6 +3168,8 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap ...@@ -3168,6 +3168,8 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
replaceMap.put("#{title}","附录"+(count)+" "+type.getExperiment()+"试验成果图\n" + replaceMap.put("#{title}","附录"+(count)+" "+type.getExperiment()+"试验成果图\n" +
"APPENDIX "+count+" "+testEnglish); "APPENDIX "+count+" "+testEnglish);
replaceMap.put("#{reportCode}",StringHandleUtils.getString(type.getEntrustCode()));
try { try {
HSSFWorkbookUtil.replaceModel(replaceMap,xssfWorkbook); HSSFWorkbookUtil.replaceModel(replaceMap,xssfWorkbook);
HSSFWorkbookUtil.insertImage(xssfWorkbook,fileMap,true); HSSFWorkbookUtil.insertImage(xssfWorkbook,fileMap,true);
......
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