Commit a9301ff7 by wangweidong

土工平台修改

parent d45df8fc
......@@ -11,10 +11,7 @@ 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.io.*;
import java.math.BigInteger;
import java.text.DateFormat;
import java.text.DecimalFormat;
......@@ -318,4 +315,82 @@ public class HSSFWorkbookUtil {
return indx;
}
public static void insertImageByRowColFile(XSSFWorkbook wb ,XSSFSheet sheet, int row, int col, File file) {
XSSFRow xssfRow=sheet.getRow(row);
if (null!=xssfRow){
XSSFCell cell= xssfRow.getCell(col);
if (null!=cell){
CreationHelper helper = wb.getCreationHelper();
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(row);
anchor.setRow1(col);
try {
Picture pict = drawing.createPicture(anchor, wb.addPicture(new FileInputStream(file), XSSFWorkbook.PICTURE_TYPE_PNG));
// 计算单元格的长宽
pict.resize();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
public static XSSFWorkbook replaceModel(Map item, XSSFWorkbook wb,int index) {
try {
XSSFSheet sheet = wb.getSheetAt(index);
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 XSSFWorkbook getWorkbookByIO(InputStream io) {
try {
XSSFWorkbook xssfWorkbook= new XSSFWorkbook(io);
io.close();
return xssfWorkbook;
}catch (Exception e){
e.printStackTrace();
return null;
}finally {
try {
io.close();
}catch (Exception e){
}
}
}
}
package com.patzn.cloud.service.lims.common;
import com.google.common.collect.Lists;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Workbook;
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;
import org.apache.poi.xssf.usermodel.*;
import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
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;
public static void copyCellStyle(XSSFCellStyle fromStyle, XSSFCellStyle toStyle) {
toStyle.cloneStyleFrom(fromStyle);
}
public static void mergeSheetAllRegion(XSSFSheet fromSheet, XSSFSheet toSheet) {
int num = fromSheet.getNumMergedRegions();
CellRangeAddress cellR ;
for (int i = 0; i < num; i++) {
cellR = fromSheet.getMergedRegion(i);
toSheet.addMergedRegion(cellR);
}
// 拷贝合并的单元格
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);
}
}
public static void copyCell(XSSFWorkbook wb, XSSFCell fromCell, XSSFCell toCell) {
XSSFCellStyle newstyle = wb.createCellStyle();
copyCellStyle(fromCell.getCellStyle(), newstyle);
//样式
toCell.setCellStyle(newstyle);
if (fromCell.getCellComment() != null) {
toCell.setCellComment(fromCell.getCellComment());
}
// 设置列宽
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);
}
}
// 不同数据类型处理
CellType cellType = fromCell.getCellType();
toCell.setCellType(cellType);
if (fromCell == null || fromCell.equals(null) || fromCell.getCellType() == CellType.BLANK) {
toCell.setCellValue("");
} else {
//判断数据类型
switch (cellType) {
case FORMULA:
toCell.setCellValue(fromCell.getCellFormula());
break;
case NUMERIC:
toCell.setCellValue(fromCell.getNumericCellValue());
break;
case STRING:
toCell.setCellValue(fromCell.getStringCellValue());
break;
default:
break;
}
}
}
/**
* 复制单元格
* @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());
public static void copyRow(XSSFWorkbook wb, XSSFRow oldRow, XSSFRow toRow) {
toRow.setHeight(oldRow.getHeight());
for (Iterator cellIt = oldRow.cellIterator(); cellIt.hasNext(); ) {
XSSFCell tmpCell = (XSSFCell) cellIt.next();
XSSFCell newCell = toRow.createCell(tmpCell.getColumnIndex());
copyCell(wb, tmpCell, newCell);
}
else if(srcCellType==CellType.ERROR){
distCell.setCellErrorValue(srcCell.getErrorCellValue());
}
public static void copySheet(XSSFWorkbook wb, XSSFSheet fromSheet, XSSFSheet toSheet) {
mergeSheetAllRegion(fromSheet, toSheet);
//设置列宽
for (int i = 0; i <= fromSheet.getRow(fromSheet.getFirstRowNum()).getLastCellNum(); i++) {
toSheet.setColumnWidth(i, fromSheet.getColumnWidth(i));
}
else if(srcCellType==CellType.FORMULA){
distCell.setCellFormula(srcCell.getCellFormula());
for (Iterator rowIt = fromSheet.rowIterator(); rowIt.hasNext(); ) {
XSSFRow oldRow = (XSSFRow) rowIt.next();
XSSFRow newRow = toSheet.createRow(oldRow.getRowNum());
copyRow(wb, oldRow, newRow);
}
else{ // nothing29
}
public static String hc(List<Workbook> workbooks, String uuid) {
ByteArrayOutputStream bos = null;
InputStream is = null;
FileOutputStream fileOut=null;
String filepath;
File file1 = new File("D://excel//封面.xlsx");
File file2 = new File("D://excel//检测报告(力学试验)三轴.xlsx");
File file3 = new File("D://excel//检测报告(力学试验)手动十字板.xlsx");
File file4 = new File("D://excel//检测报告(力学试验)休止角.xlsx");
File file5 = new File("D://excel//检测报告(力学试验)袖珍贯入仪.xlsx");
File file6 = new File("D://excel//检测报告(力学试验)直剪.xlsx");
try {
XSSFWorkbook workbook1 = new XSSFWorkbook(file1);
XSSFWorkbook workbook2 = new XSSFWorkbook(file2);
XSSFWorkbook workbook3 = new XSSFWorkbook(file3);
XSSFWorkbook workbook4 = new XSSFWorkbook(file4);
XSSFWorkbook workbook5 = new XSSFWorkbook(file5);
XSSFWorkbook workbook6 = new XSSFWorkbook(file6);
workbooks.add(workbook1);
workbooks.add(workbook2);
workbooks.add(workbook3);
workbooks.add(workbook4);
workbooks.add(workbook5);
workbooks.add(workbook6);
XSSFWorkbook newExcelCreat = new XSSFWorkbook();
for (Workbook workbook : workbooks) {
bos = new ByteArrayOutputStream();
workbook.write(bos);
byte[] barray = bos.toByteArray();
is = new ByteArrayInputStream(barray);
XSSFWorkbook fromExcel = new XSSFWorkbook(is);
int sheetNum = fromExcel.getNumberOfSheets();
for (int i = 0; i < sheetNum; i++) {
if (!fromExcel.isSheetHidden(i)){
XSSFSheet oldSheet = fromExcel.getSheetAt(i);
XSSFSheet newSheet = newExcelCreat.createSheet(oldSheet.getSheetName());
copySheet(newExcelCreat, oldSheet, newSheet);
}
}
}
int sheetNs = newExcelCreat.getNumberOfSheets();
for (int i = 0; i < sheetNs; i++) {
if (!newExcelCreat.isSheetHidden(i)){
HSSFWorkbookUtil.insertImageByRowColFile(newExcelCreat,newExcelCreat.getSheetAt(i),0,0, new File("D://excel//图片1.png"));
}
}
String allFileName = "d:/excel/0.xlsx";
fileOut = new FileOutputStream(allFileName);
newExcelCreat.write(fileOut);
fileOut.flush();
/* bos = new ByteArrayOutputStream();
newExcelCreat.write(bos);
byte[] barray = bos.toByteArray();
is = new ByteArrayInputStream(barray);
filepath = hdfsPath + "twentyTwo/" + uuid + ".xls";
HdfsUtil.createFile(is, filepath);
log.info("文件路径为{}", filepath);*/
} catch (Exception i) {
return null;
} finally {
try {
fileOut.close();
is.close();
bos.close();
} catch (IOException i) {
i.printStackTrace();
}
}
return null;
}
/**
* 表格中指定位置插入行
* @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;
public static void main(String[] args) {
hc(Lists.newArrayList(),"1212");
}
}
\ No newline at end of file
package com.patzn.cloud.service.lims.soil.controller;
import com.patzn.cloud.service.soil.entity.SoilAloneInOutStock;
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.ISoilAloneInOutStockService;
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-28
*/
@Api(tags = "独立样品出入库")
@RestController
@RequestMapping("/v1/alone_in_out_stock")
public class SoilAloneInOutStockController extends ServiceController {
@Autowired
private ISoilAloneInOutStockService soilAloneInOutStockService;
@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<SoilAloneInOutStock>> getPage(SoilAloneInOutStock soilAloneInOutStock) {
return success(soilAloneInOutStockService.page(getPage(), soilAloneInOutStock));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<SoilAloneInOutStock> get(@PathVariable("id") Long id) {
return success(soilAloneInOutStockService.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, SoilAloneInOutStock soilAloneInOutStock) {
soilAloneInOutStock.setId(id);
return success(soilAloneInOutStockService.updateById(soilAloneInOutStock));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(SoilAloneInOutStock soilAloneInOutStock) {
return success(soilAloneInOutStockService.save(soilAloneInOutStock));
}
@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(soilAloneInOutStockService.removeByIds(ids));
}
}
package com.patzn.cloud.service.lims.soil.controller;
import com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex;
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.ISoilAloneSampleAnnexService;
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-28
*/
@Api(tags = "收样管理附件")
@RestController
@RequestMapping("/v1/alone_sample_annex")
public class SoilAloneSampleAnnexController extends ServiceController {
@Autowired
private ISoilAloneSampleAnnexService soilAloneSampleAnnexService;
@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<SoilAloneSampleAnnex>> getPage(SoilAloneSampleAnnex soilAloneSampleAnnex) {
return success(soilAloneSampleAnnexService.page(getPage(), soilAloneSampleAnnex));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<SoilAloneSampleAnnex> get(@PathVariable("id") Long id) {
return success(soilAloneSampleAnnexService.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, SoilAloneSampleAnnex soilAloneSampleAnnex) {
soilAloneSampleAnnex.setId(id);
return success(soilAloneSampleAnnexService.updateById(soilAloneSampleAnnex));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(SoilAloneSampleAnnex soilAloneSampleAnnex) {
return success(soilAloneSampleAnnexService.save(soilAloneSampleAnnex));
}
@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(soilAloneSampleAnnexService.removeByIds(ids));
}
}
package com.patzn.cloud.service.lims.soil.controller;
import com.patzn.cloud.service.soil.entity.SoilAloneInOutStock;
import com.patzn.cloud.service.soil.entity.SoilAloneSample;
import com.patzn.cloud.service.soil.enums.SoilAloneStatusEnum;
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.ISoilAloneSampleService;
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-28
*/
@Api(tags = "收样登记表")
@RestController
@RequestMapping("/v1/alone_sample")
public class SoilAloneSampleController extends ServiceController {
@Autowired
private ISoilAloneSampleService soilAloneSampleService;
@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<SoilAloneSample>> getPage(SoilAloneSample soilAloneSample) {
soilAloneSample.setStatus(SoilAloneStatusEnum.DRAFT);
return success(soilAloneSampleService.page(getPage(), soilAloneSample));
}
@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_wait_storage")
public RestResult<Page<SoilAloneSample>> getPageWaitStorage(SoilAloneSample soilAloneSample) {
soilAloneSample.setStatus(SoilAloneStatusEnum.WAIT_STORAGE);
return success(soilAloneSampleService.page(getPage(), soilAloneSample));
}
@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_wait_delivery")
public RestResult<Page<SoilAloneSample>> getPageWaitDelivery(SoilAloneSample soilAloneSample) {
soilAloneSample.setStatus(SoilAloneStatusEnum.WAIT_DELIVERY);
return success(soilAloneSampleService.page(getPage(), soilAloneSample));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<SoilAloneSample> get(@PathVariable("id") Long id) {
return success(soilAloneSampleService.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, SoilAloneSample soilAloneSample) {
soilAloneSample.setId(id);
return success(soilAloneSampleService.updateById(soilAloneSample));
}
@ApiOperation("提交至出库")
@PostMapping("/submit_to_out_storage")
public RestResult<Boolean> submitToOutStorage(@RequestParam("ids") Long [] ids) {
return success(soilAloneSampleService.submitToOutStorage(ids,getAccount()));
}
@ApiOperation("入库提交")
@PostMapping("/in_storage_submit")
public RestResult<Boolean> inStorageSubmit(@RequestParam("ids") Long [] ids, SoilAloneInOutStock aloneInOutStock) {
return success(soilAloneSampleService.inStorageSubmit(ids,aloneInOutStock,getAccount()));
}
@ApiOperation("出库提交")
@PostMapping("/out_storage_submit")
public RestResult<Boolean> outStorageSubmit(@RequestParam("ids") Long [] ids, SoilAloneInOutStock aloneInOutStock) {
return success(soilAloneSampleService.outStorageSubmit(ids,aloneInOutStock,getAccount()));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(SoilAloneSample soilAloneSample) {
return success(soilAloneSampleService.save(soilAloneSample));
}
@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(soilAloneSampleService.removeByIds(ids));
}
}
package com.patzn.cloud.service.lims.soil.controller;
import com.patzn.cloud.service.soil.entity.SoilAloneWarehouseLocation;
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.ISoilAloneWarehouseLocationService;
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-28
*/
@Api(tags = "库房位置管理")
@RestController
@RequestMapping("/v1/alone_warehouse_location")
public class SoilAloneWarehouseLocationController extends ServiceController {
@Autowired
private ISoilAloneWarehouseLocationService soilAloneWarehouseLocationService;
@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<SoilAloneWarehouseLocation>> getPage(SoilAloneWarehouseLocation soilAloneWarehouseLocation) {
return success(soilAloneWarehouseLocationService.page(getPage(), soilAloneWarehouseLocation));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<SoilAloneWarehouseLocation> get(@PathVariable("id") Long id) {
return success(soilAloneWarehouseLocationService.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, SoilAloneWarehouseLocation soilAloneWarehouseLocation) {
soilAloneWarehouseLocation.setId(id);
return success(soilAloneWarehouseLocationService.updateById(soilAloneWarehouseLocation));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(SoilAloneWarehouseLocation soilAloneWarehouseLocation) {
return success(soilAloneWarehouseLocationService.save(soilAloneWarehouseLocation));
}
@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(soilAloneWarehouseLocationService.removeByIds(ids));
}
}
package com.patzn.cloud.service.lims.soil.controller;
import com.patzn.cloud.service.soil.entity.SoilExpReport;
import com.patzn.cloud.service.soil.entity.SoilReport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -83,4 +84,12 @@ public class SoilExpReportController extends ServiceController {
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(soilExpReportService.removeByIds(ids));
}
@ApiOperation("生成报告汇总表")
@PostMapping("/generate_report")
public RestResult<SoilReport> generateReport(@RequestParam("entrustId")Long entrustId, @RequestParam("templateId")Long templateId, @RequestParam("expReportIds")Long[] expReportIds ) {
return success(soilExpReportService.generateReport(entrustId,templateId,expReportIds));
}
}
package com.patzn.cloud.service.lims.soil.controller;
import com.patzn.cloud.service.soil.entity.SoilExpReportRelExp;
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.ISoilExpReportRelExpService;
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-26
*/
@Api(tags = "试验项目报告关联项目表")
@RestController
@RequestMapping("/v1/exp_report_rel_exp")
public class SoilExpReportRelExpController extends ServiceController {
@Autowired
private ISoilExpReportRelExpService soilExpReportRelExpService;
@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<SoilExpReportRelExp>> getPage(SoilExpReportRelExp soilExpReportRelExp) {
return success(soilExpReportRelExpService.page(getPage(), soilExpReportRelExp));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<SoilExpReportRelExp> get(@PathVariable("id") Long id) {
return success(soilExpReportRelExpService.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, SoilExpReportRelExp soilExpReportRelExp) {
soilExpReportRelExp.setId(id);
return success(soilExpReportRelExpService.updateById(soilExpReportRelExp));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(SoilExpReportRelExp soilExpReportRelExp) {
return success(soilExpReportRelExpService.save(soilExpReportRelExp));
}
@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(soilExpReportRelExpService.removeByIds(ids));
}
}
......@@ -44,9 +44,27 @@ public class SoilExpReportTemplateController extends ServiceController {
})
@PostMapping("/page")
public RestResult<Page<SoilExpReportTemplate>> getPage(SoilExpReportTemplate soilExpReportTemplate) {
soilExpReportTemplate.setTemplateType(0);
return success(soilExpReportTemplateService.page(getPage(), soilExpReportTemplate));
}
@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_summary_template")
public RestResult<Page<SoilExpReportTemplate>> getPageSummaryTemplate(SoilExpReportTemplate soilExpReportTemplate) {
soilExpReportTemplate.setTemplateType(1);
return success(soilExpReportTemplateService.page(getPage(), soilExpReportTemplate));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
......@@ -88,7 +106,14 @@ public class SoilExpReportTemplateController extends ServiceController {
@ApiOperation(value = "附件上传", notes = "附件上传")
@PostMapping("/upload_template/")
public RestResult<Boolean> uploadTemplate(@RequestParam("classType") String classType,@RequestParam("name") String name,@RequestParam("remark") String remark, MultipartFile file) {
return success(soilExpReportTemplateService.uploadTemplate(file, classType,name,remark));
return success(soilExpReportTemplateService.uploadTemplate(file, classType,name,remark,0));
}
@ApiOperation(value = "上传报告汇总报告模板", notes = "附件上传")
@PostMapping("/upload_template_summary/")
public RestResult<Boolean> uploadTemplateSummary(@RequestParam("classType") String classType,@RequestParam("name") String name,@RequestParam("remark") String remark, MultipartFile file) {
return success(soilExpReportTemplateService.uploadTemplate(file, classType,name,remark,1));
}
......
......@@ -4,10 +4,16 @@ import java.util.List;
import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.service.base.entity.SysUser;
import com.patzn.cloud.service.base.vo.SysUserVO;
import com.patzn.cloud.service.lims.base.entity.LmsUserGroup;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
import com.patzn.cloud.service.soil.entity.SoilExpReport;
import com.patzn.cloud.service.soil.entity.SoilOriginalRecord;
import com.patzn.cloud.service.soil.enums.SoilExpStatusEnum;
import com.patzn.cloud.service.soil.vo.SoilExperimentVO;
import com.patzn.cloud.service.soil.vo.SoilUserVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -61,6 +67,24 @@ 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_group_user")
public RestResult<Page<LmsUserRelGroupVO>> getPageGroupUser(LmsUserRelGroup soilExperiment) {
return success(soilExperimentService.pageGroupUser(getPage(), soilExperiment));
}
@ApiOperation(value = "查询列表", notes = "查询数据列表")
@PostMapping("/list")
public RestResult<List<SoilExperiment>> getList(SoilExperiment soilExperiment) {
......@@ -127,6 +151,15 @@ public class SoilExperimentController extends ServiceController {
@ApiOperation(value = "试验项目数据录入退回", notes = "试验项目数据录入退回")
@PostMapping("/exp_data_input_back")
public RestResult<Boolean> expDataInputBack(@RequestParam("ids") Long [] ids,@RequestParam("reason") String reason) {
return success(soilExperimentService.expDataInputBack(ids,getAccount(),reason));
}
@ApiOperation(value = "试验项目检测完成", notes = "试验项目检测完成")
@PostMapping("/end_exp")
public RestResult<Boolean> endExp(@RequestParam("ids") Long [] ids) {
......
package com.patzn.cloud.service.lims.soil.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.soil.entity.SoilAloneInOutStock;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wwd
* @since 2020-12-28
*/
public interface SoilAloneInOutStockMapper extends BatchMapper<SoilAloneInOutStock> {
}
package com.patzn.cloud.service.lims.soil.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex;
/**
* <p>
* 收样管理附件 Mapper 接口
* </p>
*
* @author wwd
* @since 2020-12-28
*/
public interface SoilAloneSampleAnnexMapper extends BatchMapper<SoilAloneSampleAnnex> {
}
package com.patzn.cloud.service.lims.soil.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.soil.entity.SoilAloneSample;
/**
* <p>
* 收样登记表 Mapper 接口
* </p>
*
* @author wwd
* @since 2020-12-28
*/
public interface SoilAloneSampleMapper extends BatchMapper<SoilAloneSample> {
}
package com.patzn.cloud.service.lims.soil.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.soil.entity.SoilAloneWarehouseLocation;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wwd
* @since 2020-12-28
*/
public interface SoilAloneWarehouseLocationMapper extends BatchMapper<SoilAloneWarehouseLocation> {
}
package com.patzn.cloud.service.lims.soil.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.soil.entity.SoilExpReportRelExp;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wwd
* @since 2020-12-26
*/
public interface SoilExpReportRelExpMapper extends BatchMapper<SoilExpReportRelExp> {
}
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.SoilAloneInOutStock;
import java.util.List;
/**
* 服务类
*
* @author wwd
* @since 2020-12-28
*/
public interface ISoilAloneInOutStockService extends IBaseService<SoilAloneInOutStock> {
Page<SoilAloneInOutStock> page(Page<SoilAloneInOutStock> page, SoilAloneInOutStock soilAloneInOutStock);
boolean removeByIds(List<Long> ids);
}
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.SoilAloneSampleAnnex;
import java.util.List;
/**
* 收样管理附件 服务类
*
* @author wwd
* @since 2020-12-28
*/
public interface ISoilAloneSampleAnnexService extends IBaseService<SoilAloneSampleAnnex> {
Page<SoilAloneSampleAnnex> page(Page<SoilAloneSampleAnnex> page, SoilAloneSampleAnnex soilAloneSampleAnnex);
boolean removeByIds(List<Long> ids);
}
package com.patzn.cloud.service.lims.soil.service;
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.SoilAloneInOutStock;
import com.patzn.cloud.service.soil.entity.SoilAloneSample;
import java.util.List;
/**
* 收样登记表 服务类
*
* @author wwd
* @since 2020-12-28
*/
public interface ISoilAloneSampleService extends IBaseService<SoilAloneSample> {
Page<SoilAloneSample> page(Page<SoilAloneSample> page, SoilAloneSample soilAloneSample);
boolean removeByIds(List<Long> ids);
boolean submitToOutStorage(Long[] ids, Account account);
boolean inStorageSubmit(Long[] ids, SoilAloneInOutStock aloneInOutStock, Account account);
boolean outStorageSubmit(Long[] ids, SoilAloneInOutStock aloneInOutStock, Account account);
}
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.SoilAloneWarehouseLocation;
import java.util.List;
/**
* 服务类
*
* @author wwd
* @since 2020-12-28
*/
public interface ISoilAloneWarehouseLocationService extends IBaseService<SoilAloneWarehouseLocation> {
Page<SoilAloneWarehouseLocation> page(Page<SoilAloneWarehouseLocation> page, SoilAloneWarehouseLocation soilAloneWarehouseLocation);
boolean removeByIds(List<Long> ids);
}
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.SoilExpReportRelExp;
import java.util.List;
/**
* 服务类
*
* @author wwd
* @since 2020-12-26
*/
public interface ISoilExpReportRelExpService extends IBaseService<SoilExpReportRelExp> {
Page<SoilExpReportRelExp> page(Page<SoilExpReportRelExp> page, SoilExpReportRelExp soilExpReportRelExp);
boolean removeByIds(List<Long> ids);
}
......@@ -6,6 +6,7 @@ import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.soil.entity.SoilEntrust;
import com.patzn.cloud.service.soil.entity.SoilExpReport;
import com.patzn.cloud.service.soil.entity.SoilExpReportTemplate;
import com.patzn.cloud.service.soil.entity.SoilReport;
import java.io.File;
import java.util.List;
......@@ -23,4 +24,6 @@ public interface ISoilExpReportService extends IBaseService<SoilExpReport> {
boolean removeByIds(List<Long> ids);
SoilExpReport uploadExpReportGenerate(Long[] ids, SoilExpReportTemplate template, SoilEntrust entrust, String expName, Account account, String report, File file);
SoilReport generateReport(Long entrustId, Long templateId, Long[] expReportIds);
}
......@@ -23,7 +23,7 @@ public interface ISoilExpReportTemplateService extends IBaseService<SoilExpRepor
String getKeyByBusinessId(String businessId);
boolean uploadTemplate(MultipartFile file, String classType, String name, String remark);
boolean uploadTemplate(MultipartFile file, String classType, String name, String remark,Integer type);
boolean editTemplate(String someParam, OssFileResult obsFileResult);
......
......@@ -5,12 +5,15 @@ 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.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
import com.patzn.cloud.service.lims.collect.core.CollectDataType;
import com.patzn.cloud.service.soil.entity.SoilExpReport;
import com.patzn.cloud.service.soil.entity.SoilExperiment;
import com.patzn.cloud.service.soil.entity.SoilOriginalRecord;
import com.patzn.cloud.service.soil.statistics.SoilEntrustItemNumVO;
import com.patzn.cloud.service.soil.vo.SoilExperimentVO;
import com.patzn.cloud.service.soil.vo.SoilUserVO;
import jcifs.smb.SmbFile;
/**
......@@ -61,6 +64,8 @@ public interface ISoilExperimentService extends IBaseService<SoilExperiment> {
List<SoilExperimentVO> listVOByIds(List<Long> expIds);
List<SoilExperimentVO> listVOByIdsContainsItem(List<Long> expIds);
List<SoilExperimentVO> listVOByIds(Long [] expIds);
boolean parseTxt(SmbFile smbFile, CollectDataType request);
......@@ -77,4 +82,9 @@ public interface ISoilExperimentService extends IBaseService<SoilExperiment> {
SoilExpReport saveExcelExpReport(String expName, Long entrustId, Long[] ids, Long templateId, Account account);
void uploadCollectGds(SmbFile smbFile, CollectDataType request);
boolean expDataInputBack(Long[] ids, Account account, String reason);
Page<LmsUserRelGroupVO> pageGroupUser(Page<LmsUserRelGroupVO> page, LmsUserRelGroup soilExperiment);
}
package com.patzn.cloud.service.lims.soil.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.patzn.cloud.service.lims.soil.mapper.SoilAloneInOutStockMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilAloneInOutStockService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.SoilAloneInOutStock;
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-28
*/
@Service
public class SoilAloneInOutStockServiceImpl extends BaseServiceImpl<SoilAloneInOutStockMapper, SoilAloneInOutStock> implements ISoilAloneInOutStockService {
@Override
public Page<SoilAloneInOutStock> page(Page<SoilAloneInOutStock> page, SoilAloneInOutStock soilAloneInOutStock) {
Wrapper wrapper = new EntityWrapper<>(soilAloneInOutStock);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
}
package com.patzn.cloud.service.lims.soil.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.patzn.cloud.service.lims.soil.mapper.SoilAloneSampleAnnexMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilAloneSampleAnnexService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex;
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-28
*/
@Service
public class SoilAloneSampleAnnexServiceImpl extends BaseServiceImpl<SoilAloneSampleAnnexMapper, SoilAloneSampleAnnex> implements ISoilAloneSampleAnnexService {
@Override
public Page<SoilAloneSampleAnnex> page(Page<SoilAloneSampleAnnex> page, SoilAloneSampleAnnex soilAloneSampleAnnex) {
Wrapper wrapper = new EntityWrapper<>(soilAloneSampleAnnex);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
}
package com.patzn.cloud.service.lims.soil.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.service.lims.soil.mapper.SoilAloneSampleMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilAloneInOutStockService;
import com.patzn.cloud.service.lims.soil.service.ISoilAloneSampleService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.SoilAloneInOutStock;
import com.patzn.cloud.service.soil.entity.SoilAloneSample;
import com.patzn.cloud.service.soil.enums.SoilAloneStatusEnum;
import org.apache.commons.lang3.ArrayUtils;
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 java.util.ArrayList;
import java.util.List;
/**
* 收样登记表 服务实现类
*
* @author wwd
* @since 2020-12-28
*/
@Service
public class SoilAloneSampleServiceImpl extends BaseServiceImpl<SoilAloneSampleMapper, SoilAloneSample> implements ISoilAloneSampleService {
@Autowired
private ISoilAloneInOutStockService soilAloneInOutStockService;
@Override
public Page<SoilAloneSample> page(Page<SoilAloneSample> page, SoilAloneSample soilAloneSample) {
Wrapper wrapper = new EntityWrapper<>(soilAloneSample);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitToOutStorage(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要出库的数据");
SoilAloneSample soilAloneSample = new SoilAloneSample();
soilAloneSample.setStatus(SoilAloneStatusEnum.WAIT_STORAGE);
soilAloneSample.setProgress(SoilAloneStatusEnum.WAIT_STORAGE);
return super.update(soilAloneSample,Condition.create().in("id",ids));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean inStorageSubmit(Long[] ids, SoilAloneInOutStock aloneInOutStock, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要入库的样品");
if (null == aloneInOutStock) {
RestAssert.fail("请填写入库信息!");
}
RestAssert.fail(StringUtils.isBlank(aloneInOutStock.getStorehouse()),"请填写库房号");
RestAssert.fail(StringUtils.isBlank(aloneInOutStock.getShelfCode()),"请填写货架号");
RestAssert.fail(null == aloneInOutStock.getKeepLimitTime(),"请填写留存有效期");
RestAssert.fail(null == aloneInOutStock.getStorehouse(),"请填写库房号");
RestAssert.fail(null == aloneInOutStock.getInStockerId(),"请选择入库人");
RestAssert.fail(StringUtils.isBlank(aloneInOutStock.getInStocker()),"请选择入库人");
RestAssert.fail(null == aloneInOutStock.getInstockTime() ,"请填写入库时间");
List<SoilAloneInOutStock> saveList = new ArrayList<>();
for (Long id:ids) {
SoilAloneInOutStock stock = aloneInOutStock.convert(SoilAloneInOutStock.class);
stock.setAloneSampleId(id);
saveList.add(stock);
}
SoilAloneSample soilAloneSample = new SoilAloneSample();
soilAloneSample.setStatus(SoilAloneStatusEnum.WAIT_DELIVERY);
soilAloneSample.setProgress(SoilAloneStatusEnum.WAIT_DELIVERY);
if (super.update(soilAloneSample,Condition.create().in("id",ids))){
return soilAloneInOutStockService.saveBatch(saveList);
}
return false;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean outStorageSubmit(Long[] ids, SoilAloneInOutStock aloneInOutStock, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要出库的样品");
if (null == aloneInOutStock) {
RestAssert.fail("请填写出库信息!");
}
RestAssert.fail(StringUtils.isBlank(aloneInOutStock.getOutStockReceiver()),"请填写出库接收方");
RestAssert.fail(null == aloneInOutStock.getOutStock(),"请填写出库时间");
RestAssert.fail(StringUtils.isBlank(aloneInOutStock.getEntrustCode()),"请填写委托编号");
aloneInOutStock.setOutStocker(account.getUserName());
aloneInOutStock.setOutStockerId(account.getUserId());
SoilAloneSample soilAloneSample = new SoilAloneSample();
soilAloneSample.setStatus(SoilAloneStatusEnum.DELIVERY_OK);
soilAloneSample.setProgress(SoilAloneStatusEnum.DELIVERY_OK);
if (super.update(soilAloneSample,Condition.create().in("id",ids))){
return soilAloneInOutStockService.update(aloneInOutStock,Condition.create().in("alone_sample_id",ids));
}
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.SoilAloneWarehouseLocationMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilAloneWarehouseLocationService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.SoilAloneWarehouseLocation;
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-28
*/
@Service
public class SoilAloneWarehouseLocationServiceImpl extends BaseServiceImpl<SoilAloneWarehouseLocationMapper, SoilAloneWarehouseLocation> implements ISoilAloneWarehouseLocationService {
@Override
public Page<SoilAloneWarehouseLocation> page(Page<SoilAloneWarehouseLocation> page, SoilAloneWarehouseLocation soilAloneWarehouseLocation) {
Wrapper wrapper = new EntityWrapper<>(soilAloneWarehouseLocation);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
}
package com.patzn.cloud.service.lims.soil.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.patzn.cloud.service.lims.soil.mapper.SoilExpReportRelExpMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilExpReportRelExpService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.SoilExpReportRelExp;
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-26
*/
@Service
public class SoilExpReportRelExpServiceImpl extends BaseServiceImpl<SoilExpReportRelExpMapper, SoilExpReportRelExp> implements ISoilExpReportRelExpService {
@Override
public Page<SoilExpReportRelExp> page(Page<SoilExpReportRelExp> page, SoilExpReportRelExp soilExpReportRelExp) {
Wrapper wrapper = new EntityWrapper<>(soilExpReportRelExp);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
}
package com.patzn.cloud.service.lims.soil.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.lims.common.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.common.POIUtil;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.soil.mapper.SoilExpReportMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilExpReportService;
import com.patzn.cloud.service.lims.soil.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.SoilEntrust;
import com.patzn.cloud.service.soil.entity.SoilExpReport;
import com.patzn.cloud.service.soil.entity.SoilExpReportTemplate;
import com.patzn.cloud.service.soil.entity.*;
import com.patzn.cloud.service.soil.vo.SoilExperimentVO;
import com.patzn.cloud.service.soil.vo.SoilSampleVO;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
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 java.io.File;
import java.util.List;
import java.io.*;
import java.net.URL;
import java.util.*;
import java.util.stream.Collectors;
/**
* 服务实现类
......@@ -33,8 +49,38 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
@Autowired
private OssClient ossClient;
@Autowired
private ISoilEntrustService soilEntrustService;
@Autowired
private ISoilSampleService soilSampleService;
@Autowired
private ISoilExperimentService soilExperimentService;
@Autowired
private ISoilExpReportRelExpService soilExpReportRelExpService;
@Autowired
private ISoilReportService soilReportService;
@Autowired
private ISoilExpReportTemplateService soilExpReportTemplateService;
@Autowired
private ISoilExpReportTemplateConfigService soilExpReportTemplateConfigService;
@Autowired
private ISoilAppendixService soilAppendixService;
@Autowired
private ISoilExpReportService soilExpReportService;
@Override
public Page<SoilExpReport> page(Page<SoilExpReport> page, SoilExpReport soilExpReport) {
Wrapper wrapper = new EntityWrapper<>(soilExpReport);
......@@ -51,21 +97,418 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
public SoilExpReport uploadExpReportGenerate(Long[] ids, SoilExpReportTemplate template, SoilEntrust entrust, String expName, Account account, String remark, File file) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择试验项目");
RestAssert.fail(null == entrust.getId(), "试验委托单ID不能为空");
SoilExperiment soilExperiment =soilExperimentService.getById(ids[0]);
RestAssert.fail(null == soilExperiment, "请选择试验项目");
SoilExpReport soilOriginalRecord = new SoilExpReport();
soilOriginalRecord.setEntrustId(entrust.getId());
soilOriginalRecord.setRemark(remark);
soilOriginalRecord.setUname(account.getUserName());
soilOriginalRecord.setGroupId(soilExperiment.getGroupId());
soilOriginalRecord.setGroupName(soilExperiment.getGroupName());
OssFileResult obsFileResult = ossClient.upload(file);
if (null == obsFileResult) {
return null;
}
soilOriginalRecord.setObjectKey(obsFileResult.getObjectKey());
soilOriginalRecord.setExpName(expName);
List<SoilExpReportRelExp> saveRelList = new ArrayList<>();
if (save(soilOriginalRecord)){
for (Long expId:ids) {
SoilExpReportRelExp relExp = new SoilExpReportRelExp();
relExp.setExpReportId(soilOriginalRecord.getId());
relExp.setExpId(expId);
saveRelList.add(relExp);
}
if (CollectionUtils.isNotEmpty(saveRelList)){
soilExpReportRelExpService.saveBatch(saveRelList);
}
return soilOriginalRecord;
}
return soilOriginalRecord;
}
@Transactional(rollbackFor = Exception.class)
@Override
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));
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}",entrust.getProjectName());
mapReplace.put("#{reportCode}","报告编号:"+entrust.getEntrustCode());
mapReplace.put("#{client}",entrust.getClient());
mapReplace.put("#{boreholeName}",entrust.getBoreholeName());
mapReplace.put("#{projectNo}",entrust.getProjectNo());
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<>();
if (CollectionUtils.isNotEmpty(reportRelExpList)){
List<Long> expIds = reportRelExpList.stream().map(r->{
return r.getExpId();
}).collect(Collectors.toList());
appendixList = soilAppendixService.list(Condition.create().in("exp_id",expIds));
List<SoilExperimentVO> experimentList = soilExperimentService.listVOByIdsContainsItem(expIds);
if (CollectionUtils.isNotEmpty(experimentList)){
List<Long> sampelIds = experimentList.stream().map(e->{
return e.getSampleId();
}).collect(Collectors.toList());
List<SoilSample> sampleList = soilSampleService.list(Condition.create().in("id",sampelIds));
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);
voList.add(vo);
}
}
}
for (int i = 0; i < sheetNums; i++) {
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<XSSFWorkbook> bookList = new ArrayList<>();
if (null !=xssfWorkbook){
bookList.add(xssfWorkbook);
}
for (SoilExpReport report:reportList) {
XSSFWorkbook workbook = HSSFWorkbookUtil.getWorkbookByIO(ossClient.download(report.getObjectKey()));
if (null!=workbook){
bookList.add(workbook);
}
}
for (SoilAppendix appendix:appendixList) {
XSSFWorkbook workbook = HSSFWorkbookUtil.getWorkbookByIO(ossClient.download(appendix.getObjectKey()));
if (null!=workbook){
bookList.add(workbook);
}
}
if (CollectionUtils.isNotEmpty(bookList)){
ZipSecureFile.setMinInflateRatio(-1.0d);
XSSFWorkbook newExcelCreat = new XSSFWorkbook();
ByteArrayOutputStream bos = null;
InputStream is = null;
FileOutputStream fileOut=null;
try {
for (Workbook workbook : bookList) {
bos = new ByteArrayOutputStream();
workbook.write(bos);
byte[] barray = bos.toByteArray();
is = new ByteArrayInputStream(barray);
XSSFWorkbook fromExcel = new XSSFWorkbook(is);
int sheetNum = fromExcel.getNumberOfSheets();
for (int i = 0; i < sheetNum; i++) {
if (!fromExcel.isSheetHidden(i)){
XSSFSheet oldSheet = fromExcel.getSheetAt(i);
if (null == newExcelCreat.getName(oldSheet.getSheetName())){
XSSFSheet newSheet = newExcelCreat.createSheet(oldSheet.getSheetName());
POIUtil.copySheet(newExcelCreat, oldSheet, newSheet);
}else{
XSSFSheet newSheet = newExcelCreat.createSheet(oldSheet.getSheetName()+i);
POIUtil.copySheet(newExcelCreat, oldSheet, newSheet);
}
}
}
}
int sheetNs = newExcelCreat.getNumberOfSheets();
for (int i = 0; i < sheetNs; i++) {
if (!newExcelCreat.isSheetHidden(i)){
HSSFWorkbookUtil.insertImageByRowColFile(newExcelCreat,newExcelCreat.getSheetAt(i),0,0, new File(fileFolderPath("logo.png")));
}
}
File allFileName = File.createTempFile(entrust.getEntrustCode()+"report",".xlsx");
fileOut = new FileOutputStream(allFileName);
newExcelCreat.write(fileOut);
fileOut.flush();
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());
if (soilReportService.save(soilReport)){
return soilReport;
}
}catch (Exception e){
logger.error("生成汇总报告失败"+e.getMessage());
return null;
}
}else{
return null;
}
return null;
}
private Map<Integer, Map<Integer, byte[]>> picture(Sheet sheet) {
//map 返回值
Map<Integer, Map<Integer, byte[]>> map = new LinkedHashMap<>();
//sheet.getDrawingPatriarch() 返回工作表现有的图形,如果还没有,则返回null。
if (sheet.getDrawingPatriarch() != null) {
//甄别07
if (sheet instanceof XSSFSheet) {
XSSFSheet sheetTemp = (XSSFSheet) sheet;
//此形状组中的形状列表
for (XSSFShape shape : sheetTemp.getDrawingPatriarch().getShapes()) {
// 若果形状组是图片 还有自定义图形的情况。
if (shape instanceof XSSFPicture) {
XSSFPicture picture = (XSSFPicture) shape;
// 获取图片的锚点
XSSFAnchor anchor = picture.getAnchor();
if (anchor instanceof XSSFClientAnchor) {
int row1 = ((XSSFClientAnchor) anchor).getRow1();
int cell1 = ((XSSFClientAnchor) anchor).getCol1();
setByte(map, row1, cell1, picture.getPictureData().getData());
map.put(row1, map.get(row1));
}
}
}
} else {
//甄别03
HSSFSheet sheetTemp = (HSSFSheet) sheet;
//sheet.getDrawingPatriarch() 获取drawingPatriarch的区域。
Spliterator<HSSFShape> spliterator = sheetTemp.getDrawingPatriarch().spliterator();
spliterator.forEachRemaining(shape -> {
if (shape instanceof HSSFPicture) {
HSSFPicture picture = (HSSFPicture) shape;
HSSFAnchor anchor = picture.getAnchor();
if (anchor instanceof HSSFClientAnchor) {
int row1 = ((HSSFClientAnchor) anchor).getRow1();
int cell1 = ((HSSFClientAnchor) anchor).getCol1();
setByte(map, row1, cell1, picture.getPictureData().getData());
map.put(row1, map.get(row1));
}
}
});
}
}
return map;
}
private void setByte(Map<Integer, Map<Integer, byte[]>> map, int row1, int cell1, byte[] data) {
if (!map.containsKey(row1)) {
Map<Integer, byte[]> map1 = new LinkedHashMap();
map1.put(cell1, data);
map.put(row1, map1);
} else {
Map<Integer, byte[]> integerMap = map.get(row1);
if (!integerMap.containsKey(cell1)) {
integerMap.put(cell1, data);
}
}
}
public String fileFolderPath(String fileName) {
URL url = this.getClass().getClassLoader().getResource("templates/png/"+fileName);
RestAssert.fail(null == url, fileName + "不存在");
return url.getPath();
}
private void setExcelCellValueForSummary(String dataAttribute, SoilSampleVO vo, XSSFCell cell, List<SoilExperimentVO> experimentVOList) {
if (StringUtils.isNotBlank(dataAttribute)){
if (StringHandleUtils.is_alpha(dataAttribute)){
cell.setCellValue(StringHandleUtils.getFieldIfNummReturnBlankValueByFieldName(dataAttribute,vo));
}else{
if (dataAttribute.contains("-")){
String [] attrArrray = dataAttribute.split("-");
if (attrArrray.length !=2){
return;
}
String expName = attrArrray [0];
String itemName = attrArrray [1];
if (CollectionUtils.isNotEmpty(experimentVOList)){
for (SoilExperimentVO experiment:experimentVOList) {
if (vo.getSampleCode().equals(experiment.getSampleCode())&&expName.equals(experiment.getName())){
List<SoilItem> itemList = experiment.getItemList();
if (CollectionUtils.isNotEmpty(itemList)){
for (SoilItem item:itemList) {
if (itemName.equals(item.getName())){
cell.setCellValue(item.getTestValue());
break;
}
}
}
}
}
}
}
}
}
}
}
......@@ -65,7 +65,7 @@ public class SoilExpReportTemplateServiceImpl extends BaseServiceImpl<SoilExpRep
@Override
public boolean uploadTemplate(MultipartFile file, String classType, String name, String remark) {
public boolean uploadTemplate(MultipartFile file, String classType, String name, String remark,Integer type) {
RestAssert.fail(StringUtils.isBlank(classType),"模板类别不能为空");
RestAssert.fail(StringUtils.isBlank(name),"请填写原始记录名称");
String fileName = file.getOriginalFilename();
......@@ -83,6 +83,7 @@ public class SoilExpReportTemplateServiceImpl extends BaseServiceImpl<SoilExpRep
attachment.setName(result.getName());
attachment.setObjectKey(result.getObjectKey());
attachment.setVersionId(result.getVersionId());
attachment.setTemplateType(type);
return super.save(attachment);
}
......
......@@ -15,8 +15,15 @@ import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.toolkit.FileUtils;
import com.patzn.cloud.feign.base.client.SysOrgClient;
import com.patzn.cloud.feign.base.client.SysUserClient;
import com.patzn.cloud.feign.lims.base.client.LmsUserGroupClient;
import com.patzn.cloud.feign.lims.base.client.LmsUserRelGroupClient;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.base.entity.SysUser;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
import com.patzn.cloud.service.lims.collect.core.CollectDataType;
import com.patzn.cloud.service.lims.common.*;
import com.patzn.cloud.service.lims.common.service.IExportService;
......@@ -31,6 +38,7 @@ import com.patzn.cloud.service.soil.enums.SoilSampleStatusEnum;
import com.patzn.cloud.service.soil.statistics.SoilEntrustItemNumVO;
import com.patzn.cloud.service.soil.vo.SoilExperimentVO;
import com.patzn.cloud.service.soil.vo.SoilItemVO;
import com.patzn.cloud.service.soil.vo.SoilUserVO;
import jcifs.smb.SmbFile;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.lang3.StringUtils;
......@@ -128,6 +136,16 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
@Autowired
private IExportService exportService;
@Autowired
private LmsUserRelGroupClient lmsUserRelGroupClient;
@Autowired
private SysUserClient sysUserClient;
@Autowired
private SysOrgClient sysOrgClient;
@Override
public Page<SoilExperiment> page(Page<SoilExperiment> page, SoilExperiment soilExperiment) {
Wrapper wrapper = new EntityWrapper<>(soilExperiment);
......@@ -282,7 +300,7 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
if (null==template.getMoreSheet() || 0 == template.getMoreSheet()){
logger.error("----------------------3");
replaceModel(mapReplace,xssfWorkbook,0);
HSSFWorkbookUtil.replaceModel(mapReplace,xssfWorkbook,0);
logger.error("----------------------4");
XSSFSheet sheetOne = xssfWorkbook.getSheetAt(0);
sheetOne.setForceFormulaRecalculation(true);
......@@ -573,7 +591,7 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
mapReplace.put("#{含水率}","");
}
mapReplace.put("#{sampleCode}",experimentVO.getSampleCode());
replaceModel(mapReplace,xssfWorkbook,i);
HSSFWorkbookUtil.replaceModel(mapReplace,xssfWorkbook,i);
}
......@@ -665,7 +683,7 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
mapReplace.put("#{boreholeName}",entrust.getBoreholeName());
mapReplace.put("#{projectNo}",entrust.getProjectNo());
if (null==template.getMoreSheet() || 0 == template.getMoreSheet()){
replaceModel(mapReplace,xssfWorkbook,0);
HSSFWorkbookUtil.replaceModel(mapReplace,xssfWorkbook,0);
sheetOne.setForceFormulaRecalculation(true);
Integer beginRow = template.getSampleBeginRow();
Integer sampleMergerNumOri = template.getSampleMergerNum();
......@@ -903,46 +921,64 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
}
public static XSSFWorkbook replaceModel(Map item, XSSFWorkbook wb,int index) {
try {
XSSFSheet sheet = wb.getSheetAt(index);
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("");
}
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean expDataInputBack(Long[] ids, Account account, String reason) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的试验项目");
int count = super.count(Condition.create().eq("status",SoilExpStatusEnum.TEST).in("id",ids));
RestAssert.fail(count!=ids.length,"请退回试验检测状态的试验项目");
SoilExperiment experiment = new SoilExperiment();
experiment.setStatus(SoilExpStatusEnum.ALLOT);
experiment.setProgress(SoilExpStatusEnum.BACK_TEST);
if (super.update(experiment,Condition.create().in("id",ids))){
soilExperimentRecordService.record(ids,SoilExpStatusEnum.TEST,SoilExpStatusEnum.ALLOT,1,account,reason);
return true;
}
return false;
}
@Override
public Page<LmsUserRelGroupVO> pageGroupUser(Page<LmsUserRelGroupVO> page, LmsUserRelGroup soilExperiment) {
Page<LmsUserRelGroup> relGroupPage = lmsUserRelGroupClient.getPageUser(soilExperiment).serviceData();
List<LmsUserRelGroup> groupList = relGroupPage.getRecords();
if (CollectionUtils.isEmpty(groupList)){
return page;
}
List<Long> userIdsList = groupList.stream().map(r->{
return r.getUserId();
}).collect(Collectors.toList());
List<SoilExperiment> experimentList = super.list(Condition.create().in("tester_id",userIdsList).eq("status",SoilExpStatusEnum.TEST));
List<LmsUserRelGroupVO> groupVOS = new ArrayList<>();
for (LmsUserRelGroup group:groupList) {
LmsUserRelGroupVO vo = group.convert(LmsUserRelGroupVO.class);
int num = 0;
for (SoilExperiment experiment:experimentList) {
if (experiment.getTesterId().equals(group.getUserId())){
num++;
}
}
// 输出文件
} catch (Exception e) {
e.printStackTrace();
vo.setTotal(num);
groupVOS.add(vo);
}
return wb;
page.setRecords(groupVOS);
page.setCurrent(relGroupPage.getCurrent());
page.setSize(relGroupPage.getSize());
page.setTotal(relGroupPage.getTotal());
return page;
}
@Override
public Page<SoilExperimentVO> pageBySampleIds(Page<SoilExperimentVO> page, Long[] sampleIds, SoilExperimentVO vo) {
return page.setRecords(initOriginalRecord(baseMapper.selectListBySampleIds(page,sampleIds,vo)));
......@@ -1226,7 +1262,8 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
appendix.setEntrustId(sample.getEntrustId());
appendix.setUname(LoginHelper.getAccount().getUserName());
appendix.setObjectKey(result.getObjectKey());
appendix.setTitle("附录"+count+" "+type.getExperiment()+"试验成果图");
appendix.setName("附录"+count+" "+type.getExperiment()+"试验成果图");
appendix.setTitle("附录"+count);
appendix.setExpId(type.getExpId());
appendix.setSampleCode(type.getSampleCode());
appendix.setEntrustCode(type.getEntrustCode());
......@@ -1290,6 +1327,23 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
@Override
public List<SoilExperimentVO> listVOByIdsContainsItem(List<Long> expIds) {
List<SoilExperimentVO> list = baseMapper.selectListVOByIds(expIds);
List<SoilItem> itemList = soilItemService.list(Condition.create().in("experiment_id",expIds));
for (SoilExperimentVO soilExperimentVO:list) {
List<SoilItem> soilItemsList= new ArrayList<>();
for (SoilItem item:itemList) {
if (soilExperimentVO.getId().equals(item.getExperimentId())){
soilItemsList.add(item);
}
}
soilExperimentVO.setItemList(soilItemsList);
}
return list;
}
@Override
public List<SoilExperimentVO> listVOByIds(Long [] expIds) {
return baseMapper.selectListVOByIds(expIds);
}
......
<?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.SoilAloneInOutStockMapper">
</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.SoilAloneSampleAnnexMapper">
</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.SoilAloneSampleMapper">
</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.SoilAloneWarehouseLocationMapper">
</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.SoilExpReportRelExpMapper">
</mapper>
CREATE TABLE "public"."soil_appendix" (
CREATE TABLE "public"."soil_appendix" (
"id" int8 NOT NULL DEFAULT NULL,
"entrust_id" int8 DEFAULT NULL,
"title" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"company_id" int8 DEFAULT NULL,
"uid" int8 DEFAULT NULL,
"ctime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"lid" int8 DEFAULT NULL,
"ltime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"deleted" int2 DEFAULT 0,
"uname" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"remark" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"object_key" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"sample_id" int8 DEFAULT NULL,
"type" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL,
"exp_id" int8 DEFAULT NULL,
"sample_code" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL,
"entrust_code" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL,
"name" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL
)
;
COMMENT ON COLUMN "public"."soil_appendix"."id" IS '主键';
COMMENT ON COLUMN "public"."soil_appendix"."entrust_id" IS '试验委托单ID';
COMMENT ON COLUMN "public"."soil_appendix"."title" IS '标题';
COMMENT ON COLUMN "public"."soil_appendix"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."soil_appendix"."uid" IS '创建人';
COMMENT ON COLUMN "public"."soil_appendix"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."soil_appendix"."lid" IS '最后修改时间';
COMMENT ON COLUMN "public"."soil_appendix"."ltime" IS '最后修改人ID';
COMMENT ON COLUMN "public"."soil_appendix"."deleted" IS '是否删除';
COMMENT ON COLUMN "public"."soil_appendix"."uname" IS '创建人';
COMMENT ON COLUMN "public"."soil_appendix"."remark" IS '备注';
COMMENT ON COLUMN "public"."soil_appendix"."object_key" IS '原始记录key';
COMMENT ON COLUMN "public"."soil_appendix"."sample_id" IS '样品ID';
COMMENT ON COLUMN "public"."soil_appendix"."type" IS '附录类型';
COMMENT ON COLUMN "public"."soil_appendix"."sample_code" IS '样品编号';
COMMENT ON COLUMN "public"."soil_appendix"."entrust_code" IS '委托编号';
COMMENT ON COLUMN "public"."soil_appendix"."name" IS '附录名称';
CREATE TABLE "public"."soil_exp_report_rel_exp" (
"id" int8 NOT NULL DEFAULT NULL,
"exp_report_id" int8 NOT NULL DEFAULT NULL,
"exp_id" int8 DEFAULT NULL,
"company_id" int8 DEFAULT NULL,
"uid" int8 DEFAULT NULL,
"ctime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"lid" int8 DEFAULT NULL,
"ltime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"deleted" int2 DEFAULT 0
)
;
COMMENT ON COLUMN "public"."soil_exp_report_rel_exp"."id" IS '主键';
COMMENT ON COLUMN "public"."soil_exp_report_rel_exp"."exp_report_id" IS '试验项目报告ID';
COMMENT ON COLUMN "public"."soil_exp_report_rel_exp"."exp_id" IS '试验委托单ID';
COMMENT ON COLUMN "public"."soil_exp_report_rel_exp"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."soil_exp_report_rel_exp"."uid" IS '创建人';
COMMENT ON COLUMN "public"."soil_exp_report_rel_exp"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."soil_exp_report_rel_exp"."lid" IS '最后修改时间';
COMMENT ON COLUMN "public"."soil_exp_report_rel_exp"."ltime" IS '最后修改人ID';
COMMENT ON COLUMN "public"."soil_exp_report_rel_exp"."deleted" IS '是否删除';
-- ----------------------------
-- Primary Key structure for table soil_appendix
-- ----------------------------
ALTER TABLE "public"."soil_appendix" ADD CONSTRAINT "soil_appendix_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table soil_exp_report_rel_exp
-- ----------------------------
ALTER TABLE "public"."soil_exp_report_rel_exp" ADD CONSTRAINT "soil_exp_report_rel_exp_pkey" PRIMARY KEY ("id");
CREATE TABLE "public"."soil_alone_sample" (
"id" int8 NOT NULL DEFAULT NULL,
"receiver" varchar(150) COLLATE "pg_catalog"."default" NOT NULL DEFAULT NULL,
"receive_time" timestamp(6) DEFAULT NULL,
"project_name" varchar(120) COLLATE "pg_catalog"."default" DEFAULT NULL,
"project_leader" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL,
"project_leader_id" int8 DEFAULT NULL,
"borehole_name" varchar(150) COLLATE "pg_catalog"."default" DEFAULT NULL,
"borehole_number" varchar(150) COLLATE "pg_catalog"."default" DEFAULT NULL,
"cases_num" int2 DEFAULT NULL,
"registrant_id" int8 DEFAULT NULL,
"registrant" varchar(100) COLLATE "pg_catalog"."default" DEFAULT NULL,
"regist_time" timestamp(6) DEFAULT NULL,
"company_id" int8 DEFAULT NULL,
"uid" int8 DEFAULT NULL,
"ctime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"lid" int8 DEFAULT NULL,
"ltime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"deleted" int2 DEFAULT 0,
"status" int2 DEFAULT NULL,
"progress" int2 DEFAULT NULL
)
;
COMMENT ON COLUMN "public"."soil_alone_sample"."id" IS '主键';
COMMENT ON COLUMN "public"."soil_alone_sample"."receiver" IS '收样人';
COMMENT ON COLUMN "public"."soil_alone_sample"."receive_time" IS '收样时间';
COMMENT ON COLUMN "public"."soil_alone_sample"."project_name" IS '项目名称';
COMMENT ON COLUMN "public"."soil_alone_sample"."project_leader" IS '项目负责人';
COMMENT ON COLUMN "public"."soil_alone_sample"."project_leader_id" IS '项目负责人ID';
COMMENT ON COLUMN "public"."soil_alone_sample"."borehole_name" IS '钻孔名称';
COMMENT ON COLUMN "public"."soil_alone_sample"."borehole_number" IS '钻孔孔号';
COMMENT ON COLUMN "public"."soil_alone_sample"."cases_num" IS '箱数';
COMMENT ON COLUMN "public"."soil_alone_sample"."registrant_id" IS '登记人ID';
COMMENT ON COLUMN "public"."soil_alone_sample"."registrant" IS '登记人';
COMMENT ON COLUMN "public"."soil_alone_sample"."regist_time" IS '登记时间';
COMMENT ON COLUMN "public"."soil_alone_sample"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."soil_alone_sample"."uid" IS '创建人';
COMMENT ON COLUMN "public"."soil_alone_sample"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."soil_alone_sample"."lid" IS '最后修改时间';
COMMENT ON COLUMN "public"."soil_alone_sample"."ltime" IS '最后修改人ID';
COMMENT ON COLUMN "public"."soil_alone_sample"."deleted" IS '是否删除';
COMMENT ON COLUMN "public"."soil_alone_sample"."status" IS '状态';
COMMENT ON COLUMN "public"."soil_alone_sample"."progress" IS '进度';
COMMENT ON TABLE "public"."soil_alone_sample" IS '收样登记表';
CREATE TABLE "public"."soil_alone_sample_annex" (
"id" int8 NOT NULL DEFAULT NULL,
"alone_sample_id" int8 NOT NULL DEFAULT NULL,
"file_name" varchar(150) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"bucket_name" varchar(100) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"object_key" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"version_id" varchar(100) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"uid" int8 DEFAULT NULL,
"ctime" timestamp(0) DEFAULT NULL::timestamp without time zone,
"type" varchar(20) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"lid" int8 DEFAULT NULL,
"ltime" timestamp(0) DEFAULT NULL::timestamp without time zone,
"deleted" int2 DEFAULT 0,
"remark" varchar(200) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"company_id" int8 DEFAULT NULL
)
;
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."id" IS '主键';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."alone_sample_id" IS '委托ID';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."file_name" IS '文件名称';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."bucket_name" IS '桶名称';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."object_key" IS '对象key';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."version_id" IS '版本ID';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."uid" IS '创建者ID';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."type" IS '文件类型';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."lid" IS '最后修改人ID';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."ltime" IS '最后修改时间';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."deleted" IS '是否删除0否1是';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."remark" IS '备注';
COMMENT ON COLUMN "public"."soil_alone_sample_annex"."company_id" IS '企业ID';
COMMENT ON TABLE "public"."soil_alone_sample_annex" IS '收样管理附件';
-- ----------------------------
-- Primary Key structure for table soil_alone_sample_annex
-- ----------------------------
ALTER TABLE "public"."soil_alone_sample_annex" ADD CONSTRAINT "soil_alone_sample_annex_pkey" PRIMARY KEY ("id");
CREATE TABLE "public"."soil_alone_warehouse_location" (
"id" int8 NOT NULL DEFAULT NULL,
"name" varchar(100) COLLATE "pg_catalog"."default" NOT NULL DEFAULT NULL::character varying,
"remark" varchar(250) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"company_id" int8 DEFAULT NULL,
"uid" int8 DEFAULT NULL,
"lid" int8 DEFAULT NULL,
"ctime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"ltime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"deleted" int2 DEFAULT 0,
"manager" varchar(100) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"manager_id" int8 DEFAULT NULL,
"type" int2 DEFAULT 0,
"warehouse" varchar(150) COLLATE "pg_catalog"."default" DEFAULT NULL
)
;
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."id" IS '主键';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."name" IS '货架号';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."remark" IS '备注说明';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."uid" IS '创建人ID';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."lid" IS '最后修改人ID';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."ltime" IS '最后修改时间';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."deleted" IS '是否删除0否1是';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."manager" IS '位置管理人';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."manager_id" IS '位置管理人ID';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."type" IS '位置分类A待检 B备样 C备用';
COMMENT ON COLUMN "public"."soil_alone_warehouse_location"."warehouse" IS '库房号';
-- ----------------------------
-- Primary Key structure for table soil_alone_warehouse_location
-- ----------------------------
ALTER TABLE "public"."soil_alone_warehouse_location" ADD CONSTRAINT "soil_alone_warehouse_location_pkey" PRIMARY KEY ("id");
CREATE TABLE "public"."soil_alone_in_out_stock" (
"id" int8 NOT NULL DEFAULT NULL,
"company_id" int8 DEFAULT NULL,
"uid" int8 DEFAULT NULL,
"ctime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"lid" int8 DEFAULT NULL,
"ltime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"deleted" int2 DEFAULT 0,
"storehouse" varchar(100) COLLATE "pg_catalog"."default" DEFAULT NULL,
"shelf_code" varchar(100) COLLATE "pg_catalog"."default" DEFAULT NULL,
"in_stocker" varchar(100) COLLATE "pg_catalog"."default" DEFAULT NULL,
"in_stocker_id" int8 DEFAULT NULL,
"instock_time" timestamp(6) DEFAULT NULL,
"keep_limit_time" timestamp(6) DEFAULT NULL,
"out_stocker" varchar(100) COLLATE "pg_catalog"."default" DEFAULT NULL,
"out_stocker_id" int8 DEFAULT NULL,
"out_stock" timestamp(6) DEFAULT NULL,
"out_stock_receiver" varchar(100) COLLATE "pg_catalog"."default" DEFAULT NULL,
"out_stock_receiver_id" int8 DEFAULT NULL,
"entrust_code" varchar(100) COLLATE "pg_catalog"."default" DEFAULT NULL,
"alone_sample_id" int8 DEFAULT NULL
)
;
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."id" IS '主键';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."uid" IS '创建人';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."lid" IS '最后修改时间';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."ltime" IS '最后修改人ID';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."deleted" IS '是否删除';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."storehouse" IS '库房号';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."shelf_code" IS '架位号';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."in_stocker" IS '入库人';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."in_stocker_id" IS '入库人ID';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."instock_time" IS '入库时间';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."keep_limit_time" IS '留存有效期';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."out_stocker" IS '出库人';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."out_stocker_id" IS '出库人ID';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."out_stock" IS '出库时间';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."out_stock_receiver" IS '出库接收方';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."out_stock_receiver_id" IS '出库接收方ID';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."entrust_code" IS '委托编号';
COMMENT ON COLUMN "public"."soil_alone_in_out_stock"."alone_sample_id" IS '样品ID';
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