Commit d45df8fc by wangweidong

土工平台修改

parent c7157f8d
......@@ -24,6 +24,9 @@ public class CollectDataType {
private String entrustCode;
private String experiment;
public Long getEquipId() {
return equipId;
}
......@@ -128,4 +131,12 @@ public class CollectDataType {
public void setExpId(Long expId) {
this.expId = expId;
}
public String getExperiment() {
return experiment;
}
public void setExperiment(String experiment) {
this.experiment = experiment;
}
}
......@@ -27,6 +27,7 @@ public class PngReportHandle implements ICollectHandler {
}
for (SmbFile smbFile:list) {
String name = StringHandleUtils.getFileNameNoEx(smbFile.getName());
name = name.replace(request.getExperiment(),"");
if (!name.equals(sampleCode)){
continue;
}
......
......@@ -2,6 +2,7 @@ package com.patzn.cloud.service.lims.common;
import com.patzn.cloud.service.lims.collect.statics.StaticsData;
import com.patzn.cloud.service.soil.entity.SoilExperimentCollectData;
import org.apache.commons.lang3.StringUtils;
import java.io.BufferedReader;
import java.io.InputStream;
......@@ -19,43 +20,172 @@ public class CollectUtil {
BufferedReader br = new BufferedReader(inputReader);//构造一个BufferedReader类来读取文件
String s = null;
List<String> titleList = new ArrayList<>();
while((s = br.readLine())!=null){//使用readLine方法,一次读一行
String content = s;
if (checkContent(content, StaticsData.parseTxtList)){
String njl= subString(s,"凝 聚 力","内摩擦角");
SoilExperimentCollectData njlData = new SoilExperimentCollectData();
njlData.setName("凝聚力");
njlData.setTestValue(njl);
String nmcj= subString(s,"内摩擦角","有效凝聚力");
SoilExperimentCollectData nmcjData = new SoilExperimentCollectData();
nmcjData.setName("内摩擦角");
nmcjData.setTestValue(nmcj);
content = content.replace("凝 聚 力","凝聚力");
content = content.replace("灵 敏 度","灵敏度");
String[] dataArray = content.split(" ");
for (String handleS:dataArray) {
handleS=handleS.trim();
handleS =handleS.replace(":","").replace(":","");
if ("".equals(handleS)){
continue;
}
if (handleS.contains("─")){
continue;
}
if (handleS.contains("│")){
continue;
}
titleList.add(handleS);
}
// if (checkContent(content, StaticsData.parseTxtList)){
// String njl= subString(s,"凝 聚 力","内摩擦角");
// SoilExperimentCollectData njlData = new SoilExperimentCollectData();
// njlData.setName("凝聚力");
// njlData.setTestValue(njl);
//
// String nmcj= subString(s,"内摩擦角","有效凝聚力");
// SoilExperimentCollectData nmcjData = new SoilExperimentCollectData();
// nmcjData.setName("内摩擦角");
// nmcjData.setTestValue(nmcj);
//
//
// String yxnjl= subString(s,"有效凝聚力","有效摩擦角");
// SoilExperimentCollectData yxnjlData = new SoilExperimentCollectData();
// yxnjlData.setName("有效凝聚力");
// yxnjlData.setTestValue(yxnjl);
//
//
// String yxmcj= subString(s,"有效摩擦角");
//
// SoilExperimentCollectData yxmcjData = new SoilExperimentCollectData();
// yxmcjData.setName("有效摩擦角");
// yxmcjData.setTestValue(yxmcj);
//
//
//
// dataList.add(njlData);
// dataList.add(yxmcjData);
// dataList.add(nmcjData);
// dataList.add(yxnjlData);
//
// }
String yxnjl= subString(s,"有效凝聚力","有效摩擦角");
SoilExperimentCollectData yxnjlData = new SoilExperimentCollectData();
yxnjlData.setName("有效凝聚力");
yxnjlData.setTestValue(yxnjl);
System.out.println(s);
result.append(System.lineSeparator()+s);
}
int size = titleList.size();
String ningjuli = "";
String neimochajiao = "";
String yasuozhishu = "";
String xianqigujieyali = "";
String yasuoxishu100to200 = "";
String sampleCode = "";
String yasuomoliang100to200 = "";
String testMethod = "";
for (int i = 0; i < size; i++) {
String str = titleList.get(i);
if ("凝聚力".equals(str)){
ningjuli = titleList.get(i+1);
if (StringUtils.isNotBlank(ningjuli)){
SoilExperimentCollectData njlData = new SoilExperimentCollectData();
njlData.setName("凝聚力");
njlData.setTestValue(ningjuli);
if (i+2<size){
njlData.setUnit(titleList.get(i+2));
}
dataList.add(njlData);
}
}
if ("内摩擦角".equals(str)){
neimochajiao = titleList.get(i+1);
if (StringUtils.isNotBlank(neimochajiao)){
SoilExperimentCollectData collectData = new SoilExperimentCollectData();
collectData.setName("内摩擦角");
collectData.setTestValue(neimochajiao);
if (i+2<size){
collectData.setUnit(titleList.get(i+2));
}
dataList.add(collectData);
}
}
String yxmcj= subString(s,"有效摩擦角");
if ("压缩指数".equals(str)){
yasuozhishu = titleList.get(i+1);
if (StringUtils.isNotBlank(yasuozhishu)){
SoilExperimentCollectData collectData = new SoilExperimentCollectData();
collectData.setName("压缩指数");
collectData.setTestValue(yasuozhishu);
if (i+2<size){
collectData.setUnit(titleList.get(i+2));
}
dataList.add(collectData);
}
}
SoilExperimentCollectData yxmcjData = new SoilExperimentCollectData();
yxmcjData.setName("有效摩擦角");
yxmcjData.setTestValue(yxmcj);
if ("先期固结压力".equals(str)){
xianqigujieyali = titleList.get(i+1);
if (StringUtils.isNotBlank(xianqigujieyali)){
SoilExperimentCollectData collectData = new SoilExperimentCollectData();
collectData.setName("先期固结压力");
collectData.setTestValue(xianqigujieyali);
if (i+2<size){
collectData.setUnit(titleList.get(i+2));
}
dataList.add(collectData);
}
}
if ("压缩系数(100-200KPa)".equals(str)){
yasuoxishu100to200 = titleList.get(i+1);
if (StringUtils.isNotBlank(yasuoxishu100to200)){
SoilExperimentCollectData collectData = new SoilExperimentCollectData();
collectData.setName("压缩系数(100-200KPa)");
collectData.setTestValue(yasuoxishu100to200);
if (i+2<size){
collectData.setUnit(titleList.get(i+2));
}
dataList.add(collectData);
}
}
if ("压缩模量(100-200KPa)".equals(str)){
yasuomoliang100to200 = titleList.get(i+1);
if (StringUtils.isNotBlank(yasuomoliang100to200)){
SoilExperimentCollectData collectData = new SoilExperimentCollectData();
collectData.setName("压缩模量(100-200KPa)");
collectData.setTestValue(yasuomoliang100to200);
if (i+2<size){
collectData.setUnit(titleList.get(i+2));
}
dataList.add(collectData);
}
}
dataList.add(njlData);
dataList.add(yxmcjData);
dataList.add(nmcjData);
dataList.add(yxnjlData);
if ("试验编号".equals(str)){
sampleCode = titleList.get(i+1);
}
if ("试验方法".equals(str)){
testMethod = titleList.get(i+1);
if (StringUtils.isNotBlank(testMethod)){
SoilExperimentCollectData collectData = new SoilExperimentCollectData();
collectData.setName("试验方法");
collectData.setTestValue(testMethod);
dataList.add(collectData);
}
}
System.out.println(s);
result.append(System.lineSeparator()+s);
}
br.close();
}catch(Exception e){
......
package com.patzn.cloud.service.lims.common;
import com.google.common.collect.Maps;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.math.BigInteger;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
public class HSSFWorkbookUtil {
public static HSSFWorkbook replaceModel(Map item, HSSFWorkbook wb) {
try {
HSSFSheet sheet = wb.getSheetAt(0);
Iterator rows = sheet.rowIterator();
while(rows.hasNext()){
HSSFRow row = (HSSFRow) rows.next();
if(row!=null) {
int num = row.getLastCellNum();
for(int i=0;i<num;i++) {
HSSFCell cell= row.getCell(i);
if(cell!=null) {
cell.setCellType(CellType.STRING);
}
if(cell==null || cell.getStringCellValue()==null) {
continue;
}
String value= cell.getStringCellValue();
if(!"".equals(value)) {
Set<String> keySet = item.keySet();
Iterator<String> it = keySet.iterator();
while (it.hasNext()) {
String text = it.next();
if(value.equalsIgnoreCase(text)) {
cell.setCellValue((String)item.get(text));
break;
}
}
} else {
cell.setCellValue("");
}
}
}
}
// 输出文件
} catch (Exception e) {
e.printStackTrace();
}
return wb;
}
public static XSSFWorkbook replaceModel(Map item, XSSFWorkbook wb) {
try {
XSSFSheet sheet = wb.getSheetAt(0);
Iterator rows = sheet.rowIterator();
while(rows.hasNext()){
XSSFRow row = (XSSFRow) rows.next();
if(row!=null) {
int num = row.getLastCellNum();
for(int i=0;i<num;i++) {
XSSFCell cell= row.getCell(i);
if(cell!=null) {
cell.setCellType(CellType.STRING);
}
if(cell==null || cell.getStringCellValue()==null) {
continue;
}
String value= cell.getStringCellValue();
if(!"".equals(value)) {
Set<String> keySet = item.keySet();
Iterator<String> it = keySet.iterator();
while (it.hasNext()) {
String text = it.next();
if(value.equalsIgnoreCase(text)) {
cell.setCellValue((String)item.get(text));
break;
}
}
} else {
cell.setCellValue("");
}
}
}
}
// 输出文件
} catch (Exception e) {
e.printStackTrace();
}
return wb;
}
public static String getRawValue(XSSFCell cell) {
if (null == cell) {
return "";
}
return cell.getRawValue();
}
public static Object getJavaValue(XSSFCell cell) {
if (null==cell){
return "";
}
Object o = null;
CellType cellType = cell.getCellType();
if (cellType.equals(CellType.BLANK)){
o = "";
}else if (cellType.equals(CellType.BOOLEAN)){
o = cell.getBooleanCellValue();
}else if (cellType.equals(CellType.ERROR)){
o = "";
}else if (cellType.equals(CellType.NUMERIC)){
o = getValueOfNumericCell(cell);
}else if (cellType.equals(CellType.FORMULA)){
try {
o = getValueOfNumericCell(cell);
} catch (IllegalStateException e) {
try {
o = cell.getRichStringCellValue().toString();
} catch (IllegalStateException e2) {
o = cell.getErrorCellString();
}
} catch (Exception e) {
e.printStackTrace();
}
}else {
o = cell.getRichStringCellValue().getString();
}
return o;
}
public static Object getJavaCellValue(Cell cell) {
Object o = null;
CellType cellType = cell.getCellTypeEnum();
if (cellType.equals(CellType.BLANK)){
o = "";
}else if (cellType.equals(CellType.BOOLEAN)){
o = cell.getBooleanCellValue();
}else if (cellType.equals(CellType.ERROR)){
o = "";
}else if (cellType.equals(CellType.NUMERIC)){
o = cell.getNumericCellValue();
}else if (cellType.equals(CellType.FORMULA)){
try {
o = cell.getStringCellValue();
} catch (IllegalStateException e) {
try {
o = cell.getRichStringCellValue().toString();
} catch (IllegalStateException e2) {
o ="";
}
} catch (Exception e) {
e.printStackTrace();
}
}else {
o = cell.getRichStringCellValue().getString();
}
return o;
}
public static Object getCellValue(Cell cell) {
Object o = null;
CellType cellType = cell.getCellType();
if (cellType.equals(CellType.BLANK)){
o = "";
}else if (cellType.equals(CellType.BOOLEAN)){
o = cell.getBooleanCellValue();
}else if (cellType.equals(CellType.ERROR)){
o = "";
}else if (cellType.equals(CellType.NUMERIC)){
DecimalFormat df = new DecimalFormat("0");
o = df.format(cell.getNumericCellValue());
}else if (cellType.equals(CellType.FORMULA)){
try {
o = cell.getStringCellValue();
} catch (IllegalStateException e) {
try {
o = cell.getRichStringCellValue().toString();
} catch (IllegalStateException e2) {
o ="";
}
} catch (Exception e) {
e.printStackTrace();
}
}else {
o = cell.getRichStringCellValue().getString();
}
return o;
}
// 获取数字类型的cell值
private static Object getValueOfNumericCell(XSSFCell cell) {
Boolean isDate = DateUtil.isCellDateFormatted(cell);
Double d = cell.getNumericCellValue();
Object o = null;
if (isDate) {
o = DateFormat.getDateTimeInstance()
.format(cell.getDateCellValue());
} else {
o = getRealStringValueOfDouble(d);
}
return o;
}
// 处理科学计数法与普通计数法的字符串显示,尽最大努力保持精度
private static String getRealStringValueOfDouble(Double d) {
String doubleStr = d.toString();
boolean b = doubleStr.contains("E");
int indexOfPoint = doubleStr.indexOf('.');
if (b) {
int indexOfE = doubleStr.indexOf('E');
// 小数部分
BigInteger xs = new BigInteger(doubleStr.substring(indexOfPoint
+ BigInteger.ONE.intValue(), indexOfE));
// 指数
int pow = Integer.valueOf(doubleStr.substring(indexOfE
+ BigInteger.ONE.intValue()));
int xsLen;
if(xs.compareTo(new BigInteger("0"))==0){
//小数部分为0要单独处理,不然最后会多出一个0
xsLen = 0;
}else{
xsLen = xs.toByteArray().length;
}
int scale = xsLen - pow > 0 ? xsLen - pow : 0;
doubleStr = String.format("%." + scale + "f", d);
} else {
Pattern p = Pattern.compile(".0$");
java.util.regex.Matcher m = p.matcher(doubleStr);
if (m.find()) {
doubleStr = doubleStr.replace(".0", "");
}
}
return doubleStr;
}
/**
* 图片插入到excel固定的cell
* @throws IOException
* @throws FileNotFoundException
*/
public static XSSFWorkbook insertImage( XSSFWorkbook wb,Map<String,File> imageFileMap) throws FileNotFoundException, IOException {
XSSFSheet sheet = wb.getSheetAt(0);
//数据行数
int n = sheet.getLastRowNum();
Map<String, Integer> nameIndex = addPicture2Workbook(wb,imageFileMap);
CreationHelper helper = wb.getCreationHelper();
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
for (int i = 0; i < n; i++) {
XSSFRow xssfRow=sheet.getRow(i);
if (null!=xssfRow){
int column0=xssfRow.getFirstCellNum();
int column1=xssfRow.getLastCellNum();
for (int j=column0 ;j<column1;j++) {
XSSFCell cell= xssfRow.getCell(j);
if (null!=cell){
String qrcodeName=cell.getStringCellValue();
if (nameIndex.containsKey(qrcodeName)) {
anchor.setCol1(j);
anchor.setRow1(i);
System.out.println("setCol1:"+j);
System.out.println("setRow1:"+i);
Picture pict = drawing.createPicture(anchor, nameIndex.get(qrcodeName));
// 计算单元格的长宽
// 指定我想要的长宽
double standardWidth = 600;
double standardHeight = 830;
double w = sheet.getColumnWidth(cell.getColumnIndex());
double h = cell.getRow().getHeight();
double cellWidth = sheet.getColumnWidthInPixels(cell.getColumnIndex());
double cellHeight = cell.getRow().getHeightInPoints()/72*96;
// 计算需要的长宽比例的系数
double a = standardWidth / cellWidth;
double b = standardHeight / cellHeight;
pict.resize(a,b);
}
}
}
}
}
return wb;
}
private static Map<String, Integer> addPicture2Workbook(XSSFWorkbook wb, Map<String, File> qr) throws FileNotFoundException, IOException {
Map<String, Integer> indx = Maps.newHashMap();
for (Map.Entry<String, File> kv : qr.entrySet()) {
indx.put(kv.getKey(), wb.addPicture(new FileInputStream(kv.getValue()), XSSFWorkbook.PICTURE_TYPE_PNG));
}
System.out.println("pictures : " + indx.size());
return indx;
}
}
package com.patzn.cloud.service.lims.soil.controller;
import com.patzn.cloud.service.soil.entity.SoilAppendix;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.lims.soil.service.ISoilAppendixService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* 报告附件表 前端控制器
*
* @author wwd
* @since 2020-12-24
*/
@Api(tags = "报告附件表")
@RestController
@RequestMapping("/v1/appendix")
public class SoilAppendixController extends ServiceController {
@Autowired
private ISoilAppendixService soilAppendixService;
@ApiOperation("分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page")
public RestResult<Page<SoilAppendix>> getPage(SoilAppendix soilAppendix) {
return success(soilAppendixService.page(getPage(), soilAppendix));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<SoilAppendix> get(@PathVariable("id") Long id) {
return success(soilAppendixService.getById(id));
}
@ApiOperation("根据 id 修改信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@PutMapping("/{id}")
public RestResult<Boolean> edit(@PathVariable("id") Long id, SoilAppendix soilAppendix) {
soilAppendix.setId(id);
return success(soilAppendixService.updateById(soilAppendix));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(SoilAppendix soilAppendix) {
return success(soilAppendixService.save(soilAppendix));
}
@ApiOperation("根据 ids 删除")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "主键列表", required = true, paramType = "query", allowMultiple = true, dataTypeClass = Long.class),
})
@DeleteMapping("/")
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(soilAppendixService.removeByIds(ids));
}
}
......@@ -20,6 +20,9 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
/**
* <p>
* 土工试验-委托附件表 前端控制器
......@@ -94,4 +97,26 @@ public class SoilEntrustAnnexController extends ServiceController {
return success(soilEntrustAnnexService.remove(Condition.create().in("id", ids)));
}
@ApiOperation(value = "附件上传", notes = "附件上传")
@PostMapping("/upload/{entrustId}")
public RestResult<Boolean> upload(@PathVariable("entrustId") Long entrustId, MultipartFile file) {
return success(soilEntrustAnnexService.upload(file, entrustId));
}
@ApiOperation(value = "附件批量上传", notes = "附件批量上传")
@PostMapping("/upload_bath/{entrustId}")
public RestResult<Boolean> uploadBath(@PathVariable("entrustId") Long entrustId, MultipartHttpServletRequest httpServletRequest) {
return success(soilEntrustAnnexService.uploadBath(httpServletRequest, entrustId,getAccount()));
}
@ApiOperation(value = "下载附件", notes = "下载指定附件")
@GetMapping("/download/{id}")
public void downloadFile(@PathVariable("id")Long id) {
soilEntrustAnnexService.downloadFile(id, response);
}
}
......@@ -257,6 +257,23 @@ public class SoilExperimentController extends ServiceController {
@ApiOperation(value = "试验项目按照试验项目分配(右侧数据)分配分页列表", notes = "分页查询数据列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataType = "String"),
})
@PostMapping("/page_exp_allot_bath")
public RestResult<Page<SoilExperimentVO>> getPageExpAllotBath(SoilExperimentVO vo) {
vo.setStatus(SoilExpStatusEnum.ALLOT);
return success(soilExperimentService.pageExpRight(getPage(),vo));
}
@ApiOperation(value = "试验项目按照试验项目分配(右侧数据)分配历史分页列表", notes = "分页查询数据列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataType = "int"),
......
package com.patzn.cloud.service.lims.soil.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.soil.entity.SoilAppendix;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wwd
* @since 2020-12-24
*/
public interface SoilAppendixMapper extends BatchMapper<SoilAppendix> {
}
package com.patzn.cloud.service.lims.soil.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.soil.entity.SoilAppendix;
import java.util.List;
/**
* 服务类
*
* @author wwd
* @since 2020-12-24
*/
public interface ISoilAppendixService extends IBaseService<SoilAppendix> {
Page<SoilAppendix> page(Page<SoilAppendix> page, SoilAppendix soilAppendix);
boolean removeByIds(List<Long> ids);
int countByEntrustId(Long entrustId);
SoilAppendix getByExpId(Long expId);
}
......@@ -3,8 +3,13 @@ package com.patzn.cloud.service.lims.soil.service;
import java.util.List;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.soil.entity.SoilEntrustAnnex;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* <p>
......@@ -21,4 +26,14 @@ public interface ISoilEntrustAnnexService extends IBaseService<SoilEntrustAnnex>
List<SoilEntrustAnnex> list(SoilEntrustAnnex soilEntrustAnnex);
boolean upload(MultipartFile file, Long entrustId);
void downloadFile(Long id, HttpServletResponse response);
void view(HttpServletResponse response, String objectKey);
boolean uploadBath(MultipartHttpServletRequest httpServletRequest, Long entrustId, Account account);
}
......@@ -78,4 +78,6 @@ public interface ISoilSampleService extends IBaseService<SoilSample> {
boolean prepareCheckOk(Long[] ids, Account account);
boolean prepareCheckBack(Long[] ids, String remark, Account account);
SoilSample getBySampleCode(String sampleCode);
}
package com.patzn.cloud.service.lims.soil.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.patzn.cloud.service.lims.soil.mapper.SoilAppendixMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilAppendixService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.SoilAppendix;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import java.util.List;
/**
* 服务实现类
*
* @author wwd
* @since 2020-12-24
*/
@Service
public class SoilAppendixServiceImpl extends BaseServiceImpl<SoilAppendixMapper, SoilAppendix> implements ISoilAppendixService {
@Override
public Page<SoilAppendix> page(Page<SoilAppendix> page, SoilAppendix soilAppendix) {
Wrapper wrapper = new EntityWrapper<>(soilAppendix);
wrapper.orderBy("ctime");
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public int countByEntrustId(Long entrustId) {
return super.count(Condition.create().eq("entrust_id",entrustId));
}
@Override
public SoilAppendix getByExpId(Long expId) {
return super.getOne(Condition.create().eq("exp_id",expId).last("LIMIT 1"));
}
}
package com.patzn.cloud.service.lims.soil.service.impl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.lims.soil.mapper.SoilEntrustAnnexMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilEntrustAnnexService;
import com.patzn.cloud.service.soil.entity.SoilEntrustAnnex;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
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.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* <p>
......@@ -23,6 +36,12 @@ import com.baomidou.mybatisplus.plugins.Page;
public class SoilEntrustAnnexServiceImpl extends BaseServiceImpl<SoilEntrustAnnexMapper, SoilEntrustAnnex> implements ISoilEntrustAnnexService {
@Autowired
private OssClient ossClient;
@Override
public Page<SoilEntrustAnnex> page(Page<SoilEntrustAnnex> page, SoilEntrustAnnex soilEntrustAnnex) {
Wrapper wrapper = new EntityWrapper<>(soilEntrustAnnex);
......@@ -35,4 +54,57 @@ public class SoilEntrustAnnexServiceImpl extends BaseServiceImpl<SoilEntrustAnne
public List<SoilEntrustAnnex> list(SoilEntrustAnnex soilEntrustAnnex) {
return this.list(new EntityWrapper<>(soilEntrustAnnex));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean upload(MultipartFile file, Long entrustId) {
RestAssert.fail(null == entrustId,"请选择试验委托单");
String fileName = file.getOriginalFilename();
RestAssert.fail(StringUtils.isBlank(fileName), "请上传文件");
OssFileResult result = ossClient.upload(file);
if (null == result) {
return false;
}
SoilEntrustAnnex soilEntrustAnnex = new SoilEntrustAnnex();
soilEntrustAnnex.setBucketName(result.getBucketName());
soilEntrustAnnex.setType(result.getType());
soilEntrustAnnex.setFileName(result.getName());
soilEntrustAnnex.setObjectKey(result.getObjectKey());
soilEntrustAnnex.setVersionId(result.getVersionId());
soilEntrustAnnex.setEntrustId(entrustId);
return save(soilEntrustAnnex);
}
@Override
public void downloadFile(Long id, HttpServletResponse response) {
SoilEntrustAnnex attachment = super.getById(id);
if (null == attachment) {
RestAssert.fail("抱歉!该照片不存在");
}
ossClient.download(attachment.getObjectKey(), attachment.getFileName() + "." + attachment.getType(), response);
}
@Override
public void view(HttpServletResponse response, String objectKey) {
ossClient.download(objectKey, response);
}
@Override
public boolean uploadBath(MultipartHttpServletRequest multipartHttpServletRequest, Long entrustId, Account account) {
// 先拿到文件名称的迭代器
Iterator<String> fileNamesIt = multipartHttpServletRequest.getFileNames();
List<String> failedNameList = new ArrayList<>();
while (fileNamesIt.hasNext()) {
String fileName = fileNamesIt.next();
// 获取文件
MultipartFile multipartFile = multipartHttpServletRequest.getFile(fileName);
upload(multipartFile,entrustId);
failedNameList.add(fileName);
}
return true;
}
}
......@@ -24,7 +24,7 @@ public class SoilExpReportTemplateConfigServiceImpl extends BaseServiceImpl<Soil
@Override
public Page<SoilExpReportTemplateConfig> page(Page<SoilExpReportTemplateConfig> page, SoilExpReportTemplateConfig soilExpReportTemplateConfig) {
Wrapper wrapper = new EntityWrapper<>(soilExpReportTemplateConfig);
wrapper.orderBy("ctime");
return this.page(page, wrapper);
}
......
......@@ -108,7 +108,6 @@ public class SoilExperimentRelEquipServiceImpl extends BaseServiceImpl<SoilExper
chain.addHandler(new PngReportHandle());
chain.addHandler(new GdsFileHandle());
for (SoilExperimentRelEquip equip:saveRelEquipList) {
SoilExperimentVO experimentVO = expMap.get(equip.getExpId());
CollectDataType collectDataType = new CollectDataType();
collectDataType.setEquipId(equip.getEquipId());
......@@ -123,12 +122,9 @@ public class SoilExperimentRelEquipServiceImpl extends BaseServiceImpl<SoilExper
collectDataType.setSampleCode(experimentVO.getSampleCode());
collectDataType.setEntrustCode(experimentVO.getEntrustCode());
collectDataType.setExpId(equip.getExpId());
collectDataType.setExperiment(experimentVO.getName());
chain.process(collectDataType,soilExperimentService);
}
return saveBatch(saveRelEquipList);
}
......
......@@ -18,10 +18,8 @@ import com.patzn.cloud.commons.toolkit.FileUtils;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.lims.collect.core.CollectDataType;
import com.patzn.cloud.service.lims.common.CollectUtil;
import com.patzn.cloud.service.lims.common.PoiUtil2007;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.common.StringStaticDataUtils;
import com.patzn.cloud.service.lims.common.*;
import com.patzn.cloud.service.lims.common.service.IExportService;
import com.patzn.cloud.service.lims.soil.service.*;
import com.patzn.cloud.service.meter.entity.MeterEntrust;
import com.patzn.cloud.service.soil.entity.*;
......@@ -31,18 +29,13 @@ import com.patzn.cloud.service.soil.enums.SoilEntrustStatusEnum;
import com.patzn.cloud.service.soil.enums.SoilExpStatusEnum;
import com.patzn.cloud.service.soil.enums.SoilSampleStatusEnum;
import com.patzn.cloud.service.soil.statistics.SoilEntrustItemNumVO;
import com.patzn.cloud.service.soil.vo.SoilEntrustVO;
import com.patzn.cloud.service.soil.vo.SoilExperimentVO;
import com.patzn.cloud.service.soil.vo.SoilItemVO;
import jcifs.smb.SmbFile;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -50,12 +43,6 @@ 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 javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
/**
* <p>
* 土工-样品试验表 服务实现类
......@@ -120,6 +107,9 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
@Autowired
private ISoilAppendixService soilAppendixService;
@Autowired
private ISoilOriginalRecordService soilOriginalRecordService;
......@@ -134,6 +124,10 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
@Autowired
private ISoilDataGdsService soilDataGdsService;
@Autowired
private IExportService exportService;
@Override
public Page<SoilExperiment> page(Page<SoilExperiment> page, SoilExperiment soilExperiment) {
Wrapper wrapper = new EntityWrapper<>(soilExperiment);
......@@ -316,6 +310,9 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
beginRow+=sampleMergerNum;
}
for (SoilOriginalTemplateConfig config:configList) {
if (null == config.getMergeRowNum()){
config.setMergeRowNum(1);
}
if (StringUtils.isNotBlank(config.getFormula())&&null != config.getColumnPlace() && null != config.getMergeRowNum()){
Integer sampleBgMum = template.getSampleBeginRow();
Integer mergeRowNum = config.getMergeRowNum();
......@@ -394,6 +391,7 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
for (int i = 0; i < sampleMergerNum; i++) {
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);
......@@ -580,19 +578,6 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
}
}
// XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheetOne);
// DataValidationConstraint dvConstraint= dvHelper.createFormulaListConstraint("现用盒号盒重!$A$2:$A$567");
//
// CellRangeAddressList addressList = new CellRangeAddressList((short) beginRow.intValue(), (short) sheetOne.getLastRowNum(), (short) 3, (short)4);
// XSSFDataValidation validation = (XSSFDataValidation) dvHelper.createValidation(dvConstraint, addressList);
// sheetOne.addValidationData(validation);
FileOutputStream os = null;
File file = null;
String generated="原始记录";
......@@ -638,18 +623,18 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
SoilEntrust entrust = soilEntrustService.getById(entrustId);
RestAssert.fail(null ==entrust,"委托单不存在");
List<SoilExperimentVO> expVOList = soilExperimentService.listVOByIds(ids);
if (CollectionUtils.isEmpty(expVOList)){
List<SoilExperimentVO> voList = soilExperimentService.listVOByIds(ids);
if (CollectionUtils.isEmpty(voList)){
RestAssert.fail("试验项目不存在");
}
List<Long> expIdsList = expVOList.stream().map(e->{
List<Long> expIdsList = voList.stream().map(e->{
return e.getId();
}).collect(Collectors.toList());
List<SoilItem> soilItemList = soilItemService.list(Condition.create().in("experiment_id",expIdsList));
if (CollectionUtils.isNotEmpty(soilItemList)){
for (SoilExperimentVO experimentVO:expVOList) {
for (SoilExperimentVO experimentVO:voList) {
List<SoilItem> itemList = new ArrayList<>();
Long expId = experimentVO.getId();
for (SoilItem soilItem:soilItemList) {
......@@ -672,134 +657,117 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
logger.error("获取报告模板错误"+e.getMessage());
e.printStackTrace();
}
XSSFSheet sheetOne = xssfWorkbook.getSheetAt(0);
Map<String, String> mapReplace = new HashMap<>();
mapReplace.put("#{projectName}",StringHandleUtils.getString(entrust.getProjectName()));
mapReplace.put("#{client}",StringHandleUtils.getString(entrust.getClient()));
replaceModel(mapReplace,xssfWorkbook,0);
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
Integer templateSampleNum = template.getTemplateSampleNum();
Integer sampleBeginRow = template.getSampleBeginRow();
Integer dataTotalRow = template.getDataTotalRow();
Integer totalColumn = template.getTotalColumn();
if (null != templateSampleNum &&
null != sampleBeginRow &&
null !=dataTotalRow && null!=totalColumn
){
List<SoilExpReportTemplateConfig> configList = soilExpReportTemplateConfigService.list(Condition.create().eq("template_id",templateId));
if (expVOList.size()<templateSampleNum){
int rowBegin = sampleBeginRow;
for (SoilExperimentVO vo:expVOList) {
XSSFRow row = xssfSheet.getRow(rowBegin);
List<SoilItem> itemList = vo.getItemList();
mapReplace.put("#{projectName}",entrust.getProjectName());
mapReplace.put("#{reportCode}","报告编号:"+entrust.getEntrustCode());
mapReplace.put("#{client}",entrust.getClient());
mapReplace.put("#{boreholeName}",entrust.getBoreholeName());
mapReplace.put("#{projectNo}",entrust.getProjectNo());
if (null==template.getMoreSheet() || 0 == template.getMoreSheet()){
replaceModel(mapReplace,xssfWorkbook,0);
sheetOne.setForceFormulaRecalculation(true);
Integer beginRow = template.getSampleBeginRow();
Integer sampleMergerNumOri = template.getSampleMergerNum();
int templateSampleNum = template.getTemplateSampleNum();
if (null != beginRow
&& null!=sampleMergerNumOri
&& null!=template.getTemplateSampleNum()){
List<SoilExpReportTemplateConfig> configList = soilExpReportTemplateConfigService.list(Condition.create().eq("template_id",templateId));
for (SoilExpReportTemplateConfig config:configList) {
XSSFCell cell = row.getCell(config.getColumnPlace());
String prepory = config.getDataAttribute();
if (voList.size()<templateSampleNum){
int sampleMergerNum =sampleMergerNumOri;
for (SoilExperimentVO vo:voList) {
if (StringUtils.isNotBlank(prepory)){
if (StringHandleUtils.is_alpha(prepory)){
cell.setCellValue(StringHandleUtils.getFieldIfNummReturnBlankValueByFieldName(prepory,vo));
}else{
if (CollectionUtils.isNotEmpty(itemList)){
for (SoilItem item:itemList) {
if (prepory.equals(item.getName())){
cell.setCellValue(item.getTestValue());
break;
}
}
}
List<SoilItem> itemList = vo.getItemList();
XSSFRow xssfRow = sheetOne.getRow(beginRow);
for (SoilExpReportTemplateConfig config:configList) {
if ("sn".equals(config.getDataAttribute())){
continue;
}
setExcellCellValue(config.getDataAttribute(),vo,xssfRow.getCell(config.getColumnPlace()),itemList);
}
}
rowBegin+=dataTotalRow;
}
}else{
int insertRowNum = expVOList.size() - templateSampleNum;
int insertBegin = sampleBeginRow+templateSampleNum*dataTotalRow;
XSSFRow zeroRow = xssfSheet.getRow(sampleBeginRow);
XSSFCellStyle cellStyle = zeroRow.getCell(0).getCellStyle();
int sn = template.getTemplateSampleNum()+1;
int mergerB=insertBegin;
List<Integer> integerList = new ArrayList<>();
for (SoilExpReportTemplateConfig config:configList) {
int a = config.getMergeBegin();
int b = config.getMergeEnd();
for (int i = a; i <= b ; i++) {
integerList.add(i) ;
beginRow+=sampleMergerNum;
}
}
}else{
for (int i = 0; i < insertRowNum; i++) {
for (int j = 0; j < dataTotalRow; j++) {
xssfSheet.shiftRows(insertBegin, xssfSheet.getLastRowNum(), 1,true,false);
XSSFRow xssfRow = xssfSheet.createRow(insertBegin);
for (int k = 0; k < totalColumn; k++) {
XSSFCell xssfCell = xssfRow.createCell(k);
xssfCell.setCellStyle(cellStyle);
if (j==0&&k==0){
xssfCell.setCellValue(sn);
int sampleMergerNum = sampleMergerNumOri;
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 i = 0; i < sampleMergerNum; i++) {
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++;
}
insertBegin++;
}
for (int j = 0; j < totalColumn; j++) {
if (!integerList.contains(j)){
xssfSheet.addMergedRegion(new CellRangeAddress(mergerB,mergerB+dataTotalRow-1,j,j));
int sn = 1;
for (SoilExperimentVO vo:voList) {
XSSFRow xssfRow = sheetOne.getRow(beginRow);
List<SoilItem> itemList = vo.getItemList();
for (SoilExpReportTemplateConfig config:configList) {
if (null == config.getColumnPlace()){
continue;
}
XSSFCell cell = xssfRow.getCell(config.getColumnPlace());
if ("sn".equals(config.getDataAttribute())){
cell.setCellValue(sn);
continue;
}
setExcellCellValue(config.getDataAttribute(),vo,cell,itemList);
}
beginRow+=sampleMergerNum;
sn++;
}
for (SoilExpReportTemplateConfig config:configList) {
xssfSheet.addMergedRegion(new CellRangeAddress(mergerB,mergerB+dataTotalRow-1,config.getMergeBegin(),config.getMergeEnd()));
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;
}
}
}
mergerB = mergerB+dataTotalRow;
sn++;
logger.error("----------------------15");
}
int rowBegin = sampleBeginRow;
for (SoilExperimentVO vo:expVOList) {
XSSFRow row = xssfSheet.getRow(rowBegin);
List<SoilItem> itemList = vo.getItemList();
for (SoilExpReportTemplateConfig config:configList) {
XSSFCell cell = row.getCell(config.getColumnPlace());
String prepory = config.getDataAttribute();
if (StringUtils.isNotBlank(prepory)){
if (StringHandleUtils.is_alpha(prepory)){
cell.setCellValue(StringHandleUtils.getFieldIfNummReturnBlankValueByFieldName(prepory,vo));
}else{
if (CollectionUtils.isNotEmpty(itemList)){
for (SoilItem item:itemList) {
if (prepory.equals(item.getName())){
cell.setCellValue(item.getTestValue());
break;
}
}
}
}
}
}
}
rowBegin+=dataTotalRow;
}else{
int index = 0;
for (SoilExperimentVO vo:voList) {
if (index==0){
xssfWorkbook.setSheetName(index,vo.getSampleCode());
index++;
continue;
}
xssfWorkbook.setSheetName(index,vo.getSampleCode());
index++;
}
}
......@@ -831,6 +799,33 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
return objectKey;
}
public void setExcellCellValue (String prepory,SoilExperimentVO vo,XSSFCell cell,List<SoilItem> itemList){
if (StringUtils.isNotBlank(prepory)){
if (prepory.equals("{appendix}")){
SoilAppendix soilAppendix = soilAppendixService.getByExpId(vo.getId());
if (null != soilAppendix){
cell.setCellValue(soilAppendix.getTitle());
}
}else{
if (StringHandleUtils.is_alpha(prepory)){
cell.setCellValue(StringHandleUtils.getFieldIfNummReturnBlankValueByFieldName(prepory,vo));
}else{
if (CollectionUtils.isNotEmpty(itemList)){
for (SoilItem item:itemList) {
if (prepory.equals(item.getName())){
cell.setCellValue(item.getTestValue());
break;
}
}
}
}
}
}
}
@Override
public void uploadCollectGds(SmbFile smbFile, CollectDataType request) {
InputStream is = null;
......@@ -1167,6 +1162,7 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
collectFile.setBrand(type.getBrand());
collectFile.setSpec(type.getSpec());
InputStream is = null;
File fileNew = null;
try {
is= smbFile.getInputStream();
......@@ -1178,6 +1174,69 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
fos.write(bytes, 0, index);
fos.flush();
}
String name = smbFile.getName();
if (name.contains(type.getExperiment())){
SoilSample sample = soilSampleService.getBySampleCode(type.getSampleCode());
if (null !=sample){
XSSFWorkbook xssfWorkbook= exportService.getXSSFWorkbook("AttachmentTemplateSZYS.xlsx");
Map<String,File> fileMap=new HashMap<>();
fileMap.put("${picTest}",file);
int count = soilAppendixService.countByEntrustId(sample.getEntrustId())+1;
Map<String,String> replaceMap=new HashMap<>();
String testEnglish = "";
if("三轴压缩".equals(type.getExperiment())||type.getExperiment().contains("三轴压缩")){
testEnglish = "FIGURE OF TRIAXIAL COMPRESSION TEST";
}else if("直接剪切".equals(type.getExperiment())||"直剪".equals(type.getExperiment())){
testEnglish = "FIGURE OF DIRECT SHEAR TEST";
}else if("固结".equals(type.getExperiment())||"固结试验".equals(type.getExperiment())){
testEnglish = "FIGURE OF CONSOLIDATION TEST";
}else{
testEnglish = "FIGURE OF TRIAXIAL COMPRESSION TEST";
}
replaceMap.put("#{title}","附录"+(count)+" "+type.getExperiment()+"试验成果图\n" +
"APPENDIX "+count+" "+testEnglish);
try {
HSSFWorkbookUtil.replaceModel(replaceMap,xssfWorkbook);
HSSFWorkbookUtil.insertImage(xssfWorkbook,fileMap);
}catch (Exception e){
logger.error("generateExcelReport错误"+e.getMessage());
}
xssfWorkbook.setSheetName(0,"附录"+count+type.getExperiment());
FileOutputStream os;
fileNew = File.createTempFile(type.getSampleCode()+type.getExperiment(), ".xlsx");
os = new FileOutputStream(fileNew);
xssfWorkbook.write(os);
os.flush();
os.close();
xssfWorkbook.close();
OssFileResult result = ossClient.upload(fileNew);
SoilAppendix appendix = new SoilAppendix();
appendix.setSampleId(sample.getId());
appendix.setEntrustId(sample.getEntrustId());
appendix.setUname(LoginHelper.getAccount().getUserName());
appendix.setObjectKey(result.getObjectKey());
appendix.setTitle("附录"+count+" "+type.getExperiment()+"试验成果图");
appendix.setExpId(type.getExpId());
appendix.setSampleCode(type.getSampleCode());
appendix.setEntrustCode(type.getEntrustCode());
soilAppendixService.save(appendix);
}
}
is.close();
fos.close();
......@@ -1190,6 +1249,9 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
collectFile.setFileName(result.getName());
soilExperimentCollectFileService.save(collectFile);
FileUtils.deleteFiles(file);
if (null!=fileNew){
FileUtils.deleteFiles(fileNew);
}
}catch (Exception e){
e.printStackTrace();
}
......@@ -1238,13 +1300,45 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
try {
List<SoilExperimentCollectData> dataList= CollectUtil.txt2String(smbFile.getInputStream());
if (CollectionUtils.isNotEmpty(dataList)){
List<SoilItem> saveSoilItemList = new ArrayList<>();
String testMethod = null;
for (SoilExperimentCollectData collectData:dataList) {
collectData.setEquipName(request.getEquipName());
collectData.setLabNum(request.getLabNum());
collectData.setEquipNum(request.getEquipNum());
collectData.setExpId(request.getExpId());
collectData.setSpec(request.getSpec());
if ("试验方法".equals(collectData.getName())){
if (StringUtils.isNotBlank(testMethod)){
continue;
}
testMethod = collectData.getTestValue();
continue;
}
SoilItem item = new SoilItem();
item.setName(collectData.getName());
item.setTestValue(collectData.getTestValue());
item.setExperimentId(request.getExpId());
item.setUnit(collectData.getUnit());
saveSoilItemList.add(item);
}
if (CollectionUtils.isNotEmpty(saveSoilItemList)){
soilItemService.saveBatch(saveSoilItemList);
}
if (StringUtils.isNotBlank(testMethod)){
SoilExperiment experiment = new SoilExperiment();
experiment.setTestMethod(testMethod);
experiment.setId(request.getExpId());
super.updateById(experiment);
}
return soilExperimentCollectDataService.saveBatch(dataList);
}
}catch (Exception e){
......
......@@ -78,6 +78,11 @@ public class SoilOriginalTemplateServiceImpl extends BaseServiceImpl<SoilOrigina
soilOriginalTemplate.setName(null);
}
if (StringUtils.isNotBlank(soilOriginalTemplate.getAlias())){
wrapper.like("alias",soilOriginalTemplate.getAlias());
soilOriginalTemplate.setAlias(null);
}
if (StringUtils.isNotBlank(soilOriginalTemplate.getClassType())){
wrapper.like("class_type",soilOriginalTemplate.getClassType());
soilOriginalTemplate.setClassType(null);
......
......@@ -254,6 +254,13 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
}
@Override
public SoilSample getBySampleCode(String sampleCode) {
return super.getOne(Condition.create().eq("sample_code",sampleCode).last("LIMIT 1"));
}
@Override
public boolean checkEntrustHaveSample(Long[] entrustIds) {
if (ArrayUtils.isEmpty(entrustIds)){
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.patzn.cloud.service.lims.soil.mapper.SoilAppendixMapper">
</mapper>
......@@ -94,7 +94,7 @@
</select>
<select id="selectTestByExp" resultType="com.patzn.cloud.service.soil.vo.SoilExperimentVO">
SELECT t.name,t.test_basis,t.test_method FROM soil_experiment t
SELECT t.name FROM soil_experiment t
JOIN soil_sample s ON t.sample_id = s.id
WHERE t.deleted = 0
......@@ -115,7 +115,7 @@
<if test="vo.testerId!=null">
AND t.tester_id = #{vo.testerId}
</if>
GROUP BY t.name,t.test_basis,t.test_method
GROUP BY t.name
</select>
......@@ -234,7 +234,7 @@
<select id="selectListVOByIds" resultType="com.patzn.cloud.service.soil.vo.SoilExperimentVO">
SELECT t.id,s.sample_code,s.site_no,s.sample_depth,s.sample_pack,e.entrust_code,e.id AS "entrustId",e.borehole_name,t.sample_id FROM soil_experiment t
SELECT t.id,t.name,s.sample_code,s.site_no,s.sample_depth,s.sample_pack,e.entrust_code,e.id AS "entrustId",e.borehole_name,t.sample_id,t.test_method FROM soil_experiment t
JOIN soil_sample s ON t.sample_id = s.id
JOIN soil_entrust e ON s.entrust_id = e.id
......
......@@ -2,13 +2,36 @@ package com.patzn.cloud.service.lims.test;
import com.patzn.cloud.service.lims.common.OrderNumUtil;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("12.011");
Integer i = bigDecimal.intValue();
System.out.println(i);
String aaa= "D:\\242398行.gds" ;
readFileByLine(aaa);
}
/**
* 按行读取文件
* @param strFile
*/
public static void readFileByLine(String strFile){
try {
File file = new File(strFile);
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String strLine = null;
int lineCount = 1;
while(null != (strLine = bufferedReader.readLine())){
System.out.println("第[" + lineCount + "]行数据:[" + strLine + "]");
lineCount++;
}
}catch(Exception e){
e.printStackTrace();
}
}
}
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