Commit a22a33fb by wangweidong

土工平台修改

parent 3ad9f07f
package com.patzn.cloud.service.lims.collect.handle;
import com.patzn.cloud.service.lims.collect.core.CollectDataType;
import com.patzn.cloud.service.lims.collect.core.ICollectHandler;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.soil.service.ISoilExperimentService;
import jcifs.smb.SmbFile;
public class GdsFileHandle implements ICollectHandler {
@Override
public Boolean process(CollectDataType request, ISoilExperimentService soilExperimentService) {
String type = request.getType();
String collectionAddress = request.getCollectionAddress();
String acquisitionCommand = request.getAcquisitionCommand();
String entrustCode = request.getEntrustCode();
String sampleCode = request.getSampleCode();
if (!"文件获取".equals(type)){
return null;
}
if (!"gds文件获取".equals(acquisitionCommand)){
return null;
}
SmbFile[] list=null;
try {
list= getShareFiles(collectionAddress+entrustCode+"/");
}catch (Exception e){
e.printStackTrace();
}
for (SmbFile smbFile:list) {
String name = StringHandleUtils.getFileNameNoEx(smbFile.getName());
if (!name.equals(sampleCode)){
continue;
}
if (smbFile.getName().contains(".gds")){
soilExperimentService.uploadCollectGds(smbFile,request);
}
}
return true;
}
public static SmbFile[] getShareFiles(String url) throws Exception {
SmbFile file = new SmbFile(url);
if(file.exists()){
SmbFile[] files = file.listFiles();
return files;
}
return null;
}
public static void main(String[] args) {
try {
SmbFile smbFile = new SmbFile("smb://administrator:www.163.com@192.168.0.115/土工试验数据/202010020/");
SmbFile[] smbFiles= smbFile.listFiles();
for (SmbFile file:smbFiles) {
String name = StringHandleUtils.getFileNameNoEx(file.getName());
if (!name.equals("YP202010426")){
continue;
}
if (file.getName().contains(".png")){
}else if (file.getName().contains(".txt")){
// txt2String(file.getInputStream());
System.out.println(file.getName());
}
}
System.out.println(smbFile);
}catch (Exception e){
e.printStackTrace();
}
}
}
package com.patzn.cloud.service.lims.common;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
public class POIUtil {
/**
* 复制行
* @param startRow 开始行
* @param endRow 结束行
* @param pPosition 目标行
* @param sheet 工作表对象
*/
public static void copyRows(int startRow, int endRow, int pPosition, XSSFSheet sheet){
int pStartRow=startRow;
int pEndRow=endRow;
int targetRowFrom;
int targetRowTo;
int columnCount;
CellRangeAddress region=null;
int i;
int j;
if(pStartRow == -1 || pEndRow == -1) {
return;
}
// 拷贝合并的单元格
for(i=0;i<sheet.getNumMergedRegions();i++){
region=sheet.getMergedRegion(i);
if((region.getFirstRow() >= pStartRow) && (region.getLastRow() <= pEndRow)) {
targetRowFrom=region.getFirstRow()-pStartRow+pPosition;
targetRowTo=region.getLastRow()-pStartRow+pPosition;
CellRangeAddress newRegion=region.copy();
newRegion.setFirstRow(targetRowFrom);
newRegion.setFirstColumn(region.getFirstColumn());
newRegion.setLastRow(targetRowTo);
newRegion.setLastColumn(region.getLastColumn());
sheet.addMergedRegion(newRegion);
}
}
// 设置列宽
for(i=pStartRow;i<=pEndRow;i++){
XSSFRow sourceRow=sheet.getRow(i);
columnCount=sourceRow.getLastCellNum();
if(sourceRow != null){
XSSFRow newRow=sheet.createRow(pPosition - pStartRow + i);
newRow.setHeight(sourceRow.getHeight());
for(j=0;j<columnCount;j++){
XSSFCell templateCell=sourceRow.getCell(j);
if(templateCell != null){
XSSFCell newCell=newRow.createCell(j);
copyCell(templateCell,newCell);
}
}
}
}
}
/**
* 复制单元格
* @param srcCell 原始单元格
* @param distCell 目标单元格
*/
public static void copyCell(XSSFCell srcCell,XSSFCell distCell){
distCell.setCellStyle(srcCell.getCellStyle());
if(srcCell.getCellComment() != null){
distCell.setCellComment(srcCell.getCellComment());
}
CellType srcCellType=srcCell.getCellType();
distCell.setCellType(srcCellType);
if(srcCellType==CellType.NUMERIC){
distCell.setCellValue(srcCell.getNumericCellValue());
}
else if(srcCellType==CellType.STRING){
distCell.setCellValue(srcCell.getRichStringCellValue());
}
else if(srcCellType==CellType.BLANK){
// nothing21
}
else if(srcCellType==CellType.BOOLEAN){
distCell.setCellValue(srcCell.getBooleanCellValue());
}
else if(srcCellType==CellType.ERROR){
distCell.setCellErrorValue(srcCell.getErrorCellValue());
}
else if(srcCellType==CellType.FORMULA){
distCell.setCellFormula(srcCell.getCellFormula());
}
else{ // nothing29
}
}
/**
* 表格中指定位置插入行
* @param sheet 工作表对象
* @param rowIndex 指定的行数
* @return 当前行对象
*/
public static XSSFRow insertRow(XSSFSheet sheet,int rowIndex) {
XSSFRow row=null;
if(sheet.getRow(rowIndex) != null) {
int lastRowNo=sheet.getLastRowNum();
sheet.shiftRows(rowIndex,lastRowNo,1);
}
row=sheet.createRow(rowIndex);
return row;
}
}
\ No newline at end of file
......@@ -67,6 +67,15 @@ public class StringHandleUtils {
}
public static boolean isEven(int a){
//是偶数
if((a&1) != 1){
return true;
}
return false;
}
public static boolean is_alpha(String str) {
if(str==null) return false;
String regex = "[\u4e00-\u9fa5]"; //汉字的Unicode取值范围
......@@ -338,6 +347,18 @@ public class StringHandleUtils {
}
public static void setFieldValueByFieldName(String fieldName, Object o,Object value) {
try {
Field objField = o.getClass().getDeclaredField(fieldName);
objField.setAccessible(true);
objField.set(o, value);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getFieldIfNummReturnBlankValueByFieldName(String fieldName, Object o) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
......
......@@ -251,4 +251,81 @@ public final class StringStaticDataUtils {
}
public static final Map<String,String> mapGdsColumnCheck=new LinkedHashMap<>();
static {
mapGdsColumnCheck.put("Stage Number","stageNumber");
mapGdsColumnCheck.put("Time since start of test (s)","timeSinceStartOfTest");
mapGdsColumnCheck.put("Time since start of stage (s)","timeSinceStartOfStage");
mapGdsColumnCheck.put("Axial Displacement (mm)","axialDisplacement");
mapGdsColumnCheck.put("Axial Load (kN)","axialLoad");
mapGdsColumnCheck.put("Horizontal Displacement (mm)","horizontalDisplacement");
mapGdsColumnCheck.put("Horizontal Load (kN)","horizontalLoad");
mapGdsColumnCheck.put("Pore Water Pressure (kPa)","poreWaterPressure");
mapGdsColumnCheck.put("Back Pressure (kPa)","backPressure");
mapGdsColumnCheck.put("Back Volume (mm3)","backVolume");
mapGdsColumnCheck.put("Undefined Transducer 1","undefinedTransducerOne");
mapGdsColumnCheck.put("Undefined Transducer 2","undefinedTransducerTwo");
mapGdsColumnCheck.put("Ring Shear Torque (Nm)","ringShearTorqueNm");
mapGdsColumnCheck.put("Ring Shear Angle (degs)","ringShearTorqueDegs");
mapGdsColumnCheck.put("Lower Chamber Pr (kPa)","lowerChamberPr");
mapGdsColumnCheck.put("Lower Chamber Vol (mm3)","lowerChamberVol");
mapGdsColumnCheck.put("Axial Displacement 2 (mm)","axialDisplacementTwo");
mapGdsColumnCheck.put("Horizontal Displacement 2 (mm)","horizontalDisplacementTwo");
mapGdsColumnCheck.put("Ring Shear Load 1 (kN)","ringShearLoadOne");
mapGdsColumnCheck.put("Ring Shear Load 2 (kN)","ringShearLoadTwo");
mapGdsColumnCheck.put("Axial Load 2 (kN)","axialLoadTwo");
mapGdsColumnCheck.put("Horizontal Load 2 (kN)","horizontalLoadTwo");
mapGdsColumnCheck.put("Horizontal Load 3 (kN)","horizontalLoadThree");
mapGdsColumnCheck.put("Axial Stroke (mm)","axialStroke");
mapGdsColumnCheck.put("Horizontal Stroke (mm)","horizontalStroke");
mapGdsColumnCheck.put("Pore Air Pressure (kPa)","poreAirPressure");
mapGdsColumnCheck.put("Pore Air Pressure 2 (kPa)","poreAirPressureTwo");
mapGdsColumnCheck.put("Atmospheric Pressure (kPa)","atmosphericPressure");
mapGdsColumnCheck.put("Back to Air differential (kPa)","backToAirDifferential");
mapGdsColumnCheck.put("Cell Pressure (kPa)","cellPressure");
mapGdsColumnCheck.put("Cell Volume (mm3)","cellVolume");
mapGdsColumnCheck.put("Pore Air Volume (mm3)","poreAirVolume");
mapGdsColumnCheck.put("Axial Strain (%)","axialStrain");
mapGdsColumnCheck.put("Normal Stress (kPa)","normalStress");
mapGdsColumnCheck.put("Horizontal Strain (%) or Horizontal Ring Displacement for Ring Shear Machine (mm)","hsohrdfrsm");
mapGdsColumnCheck.put("Horizontal Stress (kPa) or Shear Stress for Ring Shear Machine (kPa)","hsossfrsm");
mapGdsColumnCheck.put("Horizontal Eff Stress (kPa)","horizontalEffStress");
mapGdsColumnCheck.put("Effective Area (mm2)","effectiveArea");
mapGdsColumnCheck.put("Normal Effective Stress (kPa)","normalEffectiveStress");
mapGdsColumnCheck.put("Average Ring Shear Load (kN)","averageRingShearLoad");
}
public static final Map<String,String> mapGdsMain=new LinkedHashMap<>();
static {
mapGdsMain.put("Initial Height (mm)","initialHeight");
mapGdsMain.put("Initial Diameter (mm)","initialDiameter");
mapGdsMain.put("Specific Gravity (kN/m3):","specificGravityKn");
mapGdsMain.put("Job reference:","jobReference");
mapGdsMain.put("Borehole:","borehole");
mapGdsMain.put("Sample Name:","sampleName");
mapGdsMain.put("Depth:","depth");
mapGdsMain.put("Sample Date (dd/mm/yyyy):","sampleDate");
mapGdsMain.put("Description of Sample:","descriptionOfSample");
mapGdsMain.put("Initial mass (g):","initialMass");
mapGdsMain.put("Initial dry mass (g):","initialDryMass");
mapGdsMain.put("Specific Gravity (ass/meas):","specificGravityAss");
mapGdsMain.put("Test Clause:","testClause");
mapGdsMain.put("Date Test Started:","dateTestStarted");
mapGdsMain.put("Date Test Finished:","dateTestFinished");
mapGdsMain.put("Specimen Type (dis/undis):","specimenType");
mapGdsMain.put("Final Mass:","finalMass");
mapGdsMain.put("Final Dry Mass:","finalDryMass");
mapGdsMain.put("Machine no.:","machineNo");
mapGdsMain.put("Cell No.:","cellNo");
mapGdsMain.put("Job Location:","jobLocation");
mapGdsMain.put("Start of Repeated Data","startOfRepeatedData");
}
}
......@@ -8,6 +8,9 @@ public class ItemCollectEntity {
private Integer columnPlace;
private Integer itemMegerRow;
public String getItemName() {
return itemName;
}
......@@ -31,4 +34,12 @@ public class ItemCollectEntity {
public void setUnit(String unit) {
this.unit = unit;
}
public Integer getItemMegerRow() {
return itemMegerRow;
}
public void setItemMegerRow(Integer itemMegerRow) {
this.itemMegerRow = itemMegerRow;
}
}
package com.patzn.cloud.service.lims.soil.controller;
import com.patzn.cloud.service.soil.entity.SoilDataGds;
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.ISoilDataGdsService;
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-22
*/
@Api(tags = "静单剪数据")
@RestController
@RequestMapping("/v1/data_gds")
public class SoilDataGdsController extends ServiceController {
@Autowired
private ISoilDataGdsService soilDataGdsService;
@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<SoilDataGds>> getPage(SoilDataGds soilDataGds) {
return success(soilDataGdsService.page(getPage(), soilDataGds));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<SoilDataGds> get(@PathVariable("id") Long id) {
return success(soilDataGdsService.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, SoilDataGds soilDataGds) {
soilDataGds.setId(id);
return success(soilDataGdsService.updateById(soilDataGds));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(SoilDataGds soilDataGds) {
return success(soilDataGdsService.save(soilDataGds));
}
@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(soilDataGdsService.removeByIds(ids));
}
}
package com.patzn.cloud.service.lims.soil.controller;
import com.patzn.cloud.service.soil.entity.SoilDataGdsDetail;
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.ISoilDataGdsDetailService;
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-22
*/
@Api(tags = "静单剪试验数据")
@RestController
@RequestMapping("/v1/data_gds_detail")
public class SoilDataGdsDetailController extends ServiceController {
@Autowired
private ISoilDataGdsDetailService soilDataGdsDetailService;
@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<SoilDataGdsDetail>> getPage(SoilDataGdsDetail soilDataGdsDetail) {
return success(soilDataGdsDetailService.page(getPage(), soilDataGdsDetail));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<SoilDataGdsDetail> get(@PathVariable("id") Long id) {
return success(soilDataGdsDetailService.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, SoilDataGdsDetail soilDataGdsDetail) {
soilDataGdsDetail.setId(id);
return success(soilDataGdsDetailService.updateById(soilDataGdsDetail));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(SoilDataGdsDetail soilDataGdsDetail) {
return success(soilDataGdsDetailService.save(soilDataGdsDetail));
}
@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(soilDataGdsDetailService.removeByIds(ids));
}
}
package com.patzn.cloud.service.lims.soil.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.soil.entity.SoilDataGdsDetail;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wwd
* @since 2020-12-22
*/
public interface SoilDataGdsDetailMapper extends BatchMapper<SoilDataGdsDetail> {
int saveBatchCustom(@Param("list") List<SoilDataGdsDetail> list);
}
package com.patzn.cloud.service.lims.soil.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.soil.entity.SoilDataGds;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wwd
* @since 2020-12-22
*/
public interface SoilDataGdsMapper extends BatchMapper<SoilDataGds> {
}
......@@ -18,4 +18,6 @@ import java.util.List;
public interface SoilItemMapper extends BaseMapper<SoilItem> {
List<SoilItemVO> listVOByExpIds(@Param("expIds") List<Long> expIdsList);
List<SoilItemVO> listVOByExpSampleIds(@Param("sampleIds") List<Long> sampleIds);
}
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.SoilDataGdsDetail;
import java.util.List;
/**
* 服务类
*
* @author wwd
* @since 2020-12-22
*/
public interface ISoilDataGdsDetailService extends IBaseService<SoilDataGdsDetail> {
Page<SoilDataGdsDetail> page(Page<SoilDataGdsDetail> page, SoilDataGdsDetail soilDataGdsDetail);
boolean removeByIds(List<Long> ids);
boolean saveBatchCustom(List<SoilDataGdsDetail> saveDetailList);
}
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.SoilDataGds;
import java.util.List;
/**
* 服务类
*
* @author wwd
* @since 2020-12-22
*/
public interface ISoilDataGdsService extends IBaseService<SoilDataGds> {
Page<SoilDataGds> page(Page<SoilDataGds> page, SoilDataGds soilDataGds);
boolean removeByIds(List<Long> ids);
}
......@@ -75,4 +75,6 @@ public interface ISoilExperimentService extends IBaseService<SoilExperiment> {
SoilOriginalRecord saveExcelOriginalRecord(Long[] ids, Long templateId, Account account);
SoilExpReport saveExcelExpReport(String expName, Long entrustId, Long[] ids, Long templateId, Account account);
void uploadCollectGds(SmbFile smbFile, CollectDataType request);
}
......@@ -24,4 +24,6 @@ public interface ISoilItemService extends IBaseService<SoilItem> {
List<SoilItem> list(SoilItem soilItem);
List<SoilItemVO> listVOByExpIds(List<Long> expIdsList);
List<SoilItemVO> listVOByExpSampleIds(List<Long> sampleIdList);
}
package com.patzn.cloud.service.lims.soil.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.patzn.cloud.service.lims.soil.mapper.SoilDataGdsDetailMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilDataGdsDetailService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.SoilDataGdsDetail;
import lombok.ToString;
import org.apache.commons.collections4.ListUtils;
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.lang.reflect.Field;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 服务实现类
*
* @author wwd
* @since 2020-12-22
*/
@Service
public class SoilDataGdsDetailServiceImpl extends BaseServiceImpl<SoilDataGdsDetailMapper, SoilDataGdsDetail> implements ISoilDataGdsDetailService {
private static Pattern humpPattern = Pattern.compile("[A-Z]");
@Override
public Page<SoilDataGdsDetail> page(Page<SoilDataGdsDetail> page, SoilDataGdsDetail soilDataGdsDetail) {
Wrapper wrapper = new EntityWrapper<>(soilDataGdsDetail);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public boolean saveBatchCustom(List<SoilDataGdsDetail> saveDetailList) {
long startTime = System.currentTimeMillis();
int size=0;
List<List<SoilDataGdsDetail>> lists= ListUtils.partition(saveDetailList,600);
for (List<SoilDataGdsDetail> list:lists) {
size+=baseMapper.saveBatchCustom(list);
}
long endTime = System.currentTimeMillis();
System.out.println("总计耗时:"+(endTime-startTime));
return false;
}
}
package com.patzn.cloud.service.lims.soil.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.patzn.cloud.service.lims.soil.mapper.SoilDataGdsMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilDataGdsService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.SoilDataGds;
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-22
*/
@Service
public class SoilDataGdsServiceImpl extends BaseServiceImpl<SoilDataGdsMapper, SoilDataGds> implements ISoilDataGdsService {
@Override
public Page<SoilDataGds> page(Page<SoilDataGds> page, SoilDataGds soilDataGds) {
Wrapper wrapper = new EntityWrapper<>(soilDataGds);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
}
......@@ -6,6 +6,7 @@ import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.service.lims.collect.chain.CollectHandlerChain;
import com.patzn.cloud.service.lims.collect.core.CollectDataType;
import com.patzn.cloud.service.lims.collect.handle.GdsFileHandle;
import com.patzn.cloud.service.lims.collect.handle.PngReportHandle;
import com.patzn.cloud.service.lims.soil.mapper.SoilExperimentRelEquipMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilExperimentRelEquipService;
......@@ -105,6 +106,7 @@ public class SoilExperimentRelEquipServiceImpl extends BaseServiceImpl<SoilExper
}
CollectHandlerChain chain = new CollectHandlerChain();
chain.addHandler(new PngReportHandle());
chain.addHandler(new GdsFileHandle());
for (SoilExperimentRelEquip equip:saveRelEquipList) {
SoilExperimentVO experimentVO = expMap.get(equip.getExpId());
......
......@@ -41,4 +41,10 @@ public class SoilItemServiceImpl extends BaseServiceImpl<SoilItemMapper, SoilIte
public List<SoilItemVO> listVOByExpIds(List<Long> expIdsList) {
return baseMapper.listVOByExpIds(expIdsList);
}
@Override
public List<SoilItemVO> listVOByExpSampleIds(List<Long> expIdsList) {
return baseMapper.listVOByExpSampleIds(expIdsList);
}
}
......@@ -297,7 +297,7 @@ public class SoilOriginalTemplateServiceImpl extends BaseServiceImpl<SoilOrigina
collectEntity.setItemName(config.getAttributeName());
collectEntity.setColumnPlace(config.getColumnPlace());
collectEntity.setUnit(config.getUnit());
collectEntity.setItemMegerRow(config.getMergeRowNum());
collectEntitiesList.add(collectEntity);
}
......@@ -316,19 +316,83 @@ public class SoilOriginalTemplateServiceImpl extends BaseServiceImpl<SoilOrigina
XSSFCell sampleCodeCell = xssfRow.getCell(sampleCol);
String sampleCode = HSSFWorkbookUtil.getJavaValue(sampleCodeCell).toString();
for (ItemCollectEntity collectEntity:collectEntitiesList) {
XSSFCell itemCell = xssfRow.getCell(collectEntity.getColumnPlace());
String value = formatter.formatCellValue(itemCell, evaluator);
String itemName = collectEntity.getItemName();
if (StringUtils.isBlank(value)){
continue;
}
SoilItemCollectData soilItemCollectData = new SoilItemCollectData();
soilItemCollectData.setItemName(itemName);
soilItemCollectData.setTestValue(value);
soilItemCollectData.setSampleCode(sampleCode);
soilItemCollectData.setUnit(collectEntity.getUnit());
soilItemList.add(soilItemCollectData);
for (ItemCollectEntity collectEntity:collectEntitiesList) {
Integer itemValueIndex = collectEntity.getItemMegerRow();
if (null == itemValueIndex || itemValueIndex ==sampleMergerNum){
XSSFCell itemCell = xssfRow.getCell(collectEntity.getColumnPlace());
String value = formatter.formatCellValue(itemCell, evaluator);
String itemName = collectEntity.getItemName();
if (StringUtils.isBlank(value)){
continue;
}
SoilItemCollectData soilItemCollectData = new SoilItemCollectData();
soilItemCollectData.setItemName(itemName);
soilItemCollectData.setTestValue(value);
soilItemCollectData.setSampleCode(sampleCode);
soilItemCollectData.setUnit(collectEntity.getUnit());
soilItemList.add(soilItemCollectData);
}else{
if (sampleMergerNum%itemValueIndex==0){
int nums = sampleMergerNum/itemValueIndex;
for (int j = 0; j < nums; j++) {
int itemRow = i+j*itemValueIndex;
XSSFRow itemValueRow = sheet.getRow(itemRow);
if (null == itemValueRow){
continue;
}
XSSFCell itemCell = itemValueRow.getCell(collectEntity.getColumnPlace());
if (null == itemCell){
continue;
}
String value = formatter.formatCellValue(itemCell, evaluator);
String itemName = collectEntity.getItemName();
if (StringUtils.isBlank(value)){
continue;
}
String name = "";
String [] itemArray = itemName.split("&");
if (itemArray.length==2){
int suplus = j%2;
if (suplus==0){
name=itemArray[0];
}else if (suplus == 1){
name=itemArray[1];
}
}
SoilItemCollectData soilItemCollectData = new SoilItemCollectData();
soilItemCollectData.setItemName(name);
soilItemCollectData.setTestValue(value);
soilItemCollectData.setSampleCode(sampleCode);
soilItemCollectData.setUnit(collectEntity.getUnit());
soilItemList.add(soilItemCollectData);
}
}else {
XSSFCell itemCell = xssfRow.getCell(collectEntity.getColumnPlace());
String value = formatter.formatCellValue(itemCell, evaluator);
String itemName = collectEntity.getItemName();
if (StringUtils.isBlank(value)){
continue;
}
SoilItemCollectData soilItemCollectData = new SoilItemCollectData();
soilItemCollectData.setItemName(itemName);
soilItemCollectData.setTestValue(value);
soilItemCollectData.setSampleCode(sampleCode);
soilItemCollectData.setUnit(collectEntity.getUnit());
soilItemList.add(soilItemCollectData);
}
}
}
}
......
<?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.SoilDataGdsDetailMapper">
<insert id="saveBatchCustom" parameterType="java.util.List">
INSERT INTO soil_data_gds_detail (
id ,
gds_id ,
stage_number ,
time_since_start_of_test ,
time_since_start_of_stage ,
axial_displacement ,
axial_load ,
horizontal_displacement ,
horizontal_load ,
pore_water_pressure ,
back_pressure ,
back_volume ,
undefined_transducer_one ,
undefined_transducer_two ,
ring_shear_torque_nm ,
ring_shear_torque_degs ,
lower_chamber_pr ,
lower_chamber_vol ,
axial_displacement_two ,
horizontal_displacement_two ,
ring_shear_load_one ,
ring_shear_load_two ,
axial_load_two ,
horizontal_load_two ,
horizontal_load_three ,
axial_stroke ,
horizontal_stroke ,
pore_air_pressure ,
pore_air_pressure_two ,
atmospheric_pressure ,
back_to_air_differential ,
cell_pressure ,
cell_volume ,
pore_air_volume ,
axial_strain ,
normal_stress ,
hsohrdfrsm ,
hsossfrsm ,
horizontal_eff_stress ,
effective_area ,
normal_effective_stress ,
average_ring_shear_load ,
company_id ,
uid ,
ctime ,
lid ,
ltime ,
deleted ) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.id},
#{item.gdsId},
#{item.stageNumber},
#{item.timeSinceStartOfTest},
#{item.timeSinceStartOfStage},
#{item.axialDisplacement},
#{item.axialLoad},
#{item.horizontalDisplacement},
#{item.horizontalLoad},
#{item.poreWaterPressure},
#{item.backPressure},
#{item.backVolume},
#{item.undefinedTransducerOne},
#{item.undefinedTransducerTwo},
#{item.ringShearTorqueNm},
#{item.ringShearTorqueDegs},
#{item.lowerChamberPr},
#{item.lowerChamberVol},
#{item.axialDisplacementTwo},
#{item.horizontalDisplacementTwo},
#{item.ringShearLoadOne},
#{item.ringShearLoadTwo},
#{item.axialLoadTwo},
#{item.horizontalLoadTwo},
#{item.horizontalLoadThree},
#{item.axialStroke},
#{item.horizontalStroke},
#{item.poreAirPressure},
#{item.poreAirPressureTwo},
#{item.atmosphericPressure},
#{item.backToAirDifferential},
#{item.cellPressure},
#{item.cellVolume},
#{item.poreAirVolume},
#{item.axialStrain},
#{item.normalStress},
#{item.hsohrdfrsm},
#{item.hsossfrsm},
#{item.horizontalEffStress},
#{item.effectiveArea},
#{item.normalEffectiveStress},
#{item.averageRingShearLoad},
#{item.companyId},
#{item.uid},
#{item.ctime},
#{item.lid},
#{item.ltime},
#{item.deleted}
)
</foreach>
</insert>
</mapper>
<?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.SoilDataGdsMapper">
</mapper>
......@@ -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 FROM soil_experiment t
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
JOIN soil_sample s ON t.sample_id = s.id
JOIN soil_entrust e ON s.entrust_id = e.id
......
......@@ -16,4 +16,22 @@
#{id}
</foreach>
</select>
<select id="listVOByExpSampleIds" resultType="com.patzn.cloud.service.soil.vo.SoilItemVO">
SELECT i.id,i.name,i.experiment_id,s.sample_code,s.id AS sample_id,i.test_value FROM soil_item i JOIN
soil_experiment t ON i.experiment_id = t.id
JOIN soil_sample s ON t.sample_id = s.id
WHERE i.deleted =0 AND t.deleted = 0 AND s.deleted = 0
AND s.id IN
<foreach collection="sampleIds" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
</mapper>
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