Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
patzn-cloud-service-soil
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangweidong
patzn-cloud-service-soil
Commits
a9301ff7
Commit
a9301ff7
authored
Dec 28, 2020
by
wangweidong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
土工平台修改
parent
d45df8fc
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
2084 additions
and
145 deletions
+2084
-145
HSSFWorkbookUtil.java
...com/patzn/cloud/service/lims/common/HSSFWorkbookUtil.java
+79
-4
POIUtil.java
...ain/java/com/patzn/cloud/service/lims/common/POIUtil.java
+169
-90
SoilAloneInOutStockController.java
...e/lims/soil/controller/SoilAloneInOutStockController.java
+86
-0
SoilAloneSampleAnnexController.java
.../lims/soil/controller/SoilAloneSampleAnnexController.java
+86
-0
SoilAloneSampleController.java
...rvice/lims/soil/controller/SoilAloneSampleController.java
+147
-0
SoilAloneWarehouseLocationController.java
...soil/controller/SoilAloneWarehouseLocationController.java
+86
-0
SoilExpReportController.java
...service/lims/soil/controller/SoilExpReportController.java
+9
-0
SoilExpReportRelExpController.java
...e/lims/soil/controller/SoilExpReportRelExpController.java
+86
-0
SoilExpReportTemplateController.java
...lims/soil/controller/SoilExpReportTemplateController.java
+26
-1
SoilExperimentController.java
...ervice/lims/soil/controller/SoilExperimentController.java
+33
-0
SoilAloneInOutStockMapper.java
...d/service/lims/soil/mapper/SoilAloneInOutStockMapper.java
+16
-0
SoilAloneSampleAnnexMapper.java
.../service/lims/soil/mapper/SoilAloneSampleAnnexMapper.java
+16
-0
SoilAloneSampleMapper.java
...cloud/service/lims/soil/mapper/SoilAloneSampleMapper.java
+16
-0
SoilAloneWarehouseLocationMapper.java
...ce/lims/soil/mapper/SoilAloneWarehouseLocationMapper.java
+16
-0
SoilExpReportRelExpMapper.java
...d/service/lims/soil/mapper/SoilExpReportRelExpMapper.java
+16
-0
ISoilAloneInOutStockService.java
...ervice/lims/soil/service/ISoilAloneInOutStockService.java
+20
-0
ISoilAloneSampleAnnexService.java
...rvice/lims/soil/service/ISoilAloneSampleAnnexService.java
+20
-0
ISoilAloneSampleService.java
...ud/service/lims/soil/service/ISoilAloneSampleService.java
+28
-0
ISoilAloneWarehouseLocationService.java
...lims/soil/service/ISoilAloneWarehouseLocationService.java
+20
-0
ISoilExpReportRelExpService.java
...ervice/lims/soil/service/ISoilExpReportRelExpService.java
+20
-0
ISoilExpReportService.java
...loud/service/lims/soil/service/ISoilExpReportService.java
+3
-0
ISoilExpReportTemplateService.java
...vice/lims/soil/service/ISoilExpReportTemplateService.java
+1
-1
ISoilExperimentService.java
...oud/service/lims/soil/service/ISoilExperimentService.java
+10
-0
SoilAloneInOutStockServiceImpl.java
...ims/soil/service/impl/SoilAloneInOutStockServiceImpl.java
+34
-0
SoilAloneSampleAnnexServiceImpl.java
...ms/soil/service/impl/SoilAloneSampleAnnexServiceImpl.java
+35
-0
SoilAloneSampleServiceImpl.java
...ce/lims/soil/service/impl/SoilAloneSampleServiceImpl.java
+122
-0
SoilAloneWarehouseLocationServiceImpl.java
...l/service/impl/SoilAloneWarehouseLocationServiceImpl.java
+35
-0
SoilExpReportRelExpServiceImpl.java
...ims/soil/service/impl/SoilExpReportRelExpServiceImpl.java
+35
-0
SoilExpReportServiceImpl.java
...vice/lims/soil/service/impl/SoilExpReportServiceImpl.java
+451
-8
SoilExpReportTemplateServiceImpl.java
...s/soil/service/impl/SoilExpReportTemplateServiceImpl.java
+2
-1
SoilExperimentServiceImpl.java
...ice/lims/soil/service/impl/SoilExperimentServiceImpl.java
+94
-40
SoilAloneInOutStockMapper.xml
src/main/resources/mapper/soil/SoilAloneInOutStockMapper.xml
+5
-0
SoilAloneSampleAnnexMapper.xml
...main/resources/mapper/soil/SoilAloneSampleAnnexMapper.xml
+5
-0
SoilAloneSampleMapper.xml
src/main/resources/mapper/soil/SoilAloneSampleMapper.xml
+5
-0
SoilAloneWarehouseLocationMapper.xml
...esources/mapper/soil/SoilAloneWarehouseLocationMapper.xml
+5
-0
SoilExpReportRelExpMapper.xml
src/main/resources/mapper/soil/SoilExpReportRelExpMapper.xml
+5
-0
logo.png
src/main/resources/png/logo.png
+0
-0
logo.png
src/main/resources/templates/png/logo.png
+0
-0
新增表.sql
src/test/java/resources/db_sql/v1.0.8/新增表.sql
+242
-0
No files found.
src/main/java/com/patzn/cloud/service/lims/common/HSSFWorkbookUtil.java
View file @
a9301ff7
...
...
@@ -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
){
}
}
}
}
src/main/java/com/patzn/cloud/service/lims/common/POIUtil.java
View file @
a9301ff7
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
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilAloneInOutStockController.java
0 → 100644
View file @
a9301ff7
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
));
}
}
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilAloneSampleAnnexController.java
0 → 100644
View file @
a9301ff7
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
));
}
}
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilAloneSampleController.java
0 → 100644
View file @
a9301ff7
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
));
}
}
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilAloneWarehouseLocationController.java
0 → 100644
View file @
a9301ff7
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
));
}
}
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilExpReportController.java
View file @
a9301ff7
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
));
}
}
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilExpReportRelExpController.java
0 → 100644
View file @
a9301ff7
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
));
}
}
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilExpReportTemplateController.java
View file @
a9301ff7
...
...
@@ -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
));
}
...
...
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilExperimentController.java
View file @
a9301ff7
...
...
@@ -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
)
{
...
...
src/main/java/com/patzn/cloud/service/lims/soil/mapper/SoilAloneInOutStockMapper.java
0 → 100644
View file @
a9301ff7
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
>
{
}
src/main/java/com/patzn/cloud/service/lims/soil/mapper/SoilAloneSampleAnnexMapper.java
0 → 100644
View file @
a9301ff7
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
>
{
}
src/main/java/com/patzn/cloud/service/lims/soil/mapper/SoilAloneSampleMapper.java
0 → 100644
View file @
a9301ff7
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
>
{
}
src/main/java/com/patzn/cloud/service/lims/soil/mapper/SoilAloneWarehouseLocationMapper.java
0 → 100644
View file @
a9301ff7
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
>
{
}
src/main/java/com/patzn/cloud/service/lims/soil/mapper/SoilExpReportRelExpMapper.java
0 → 100644
View file @
a9301ff7
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
>
{
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilAloneInOutStockService.java
0 → 100644
View file @
a9301ff7
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
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilAloneSampleAnnexService.java
0 → 100644
View file @
a9301ff7
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
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilAloneSampleService.java
0 → 100644
View file @
a9301ff7
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
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilAloneWarehouseLocationService.java
0 → 100644
View file @
a9301ff7
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
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilExpReportRelExpService.java
0 → 100644
View file @
a9301ff7
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
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilExpReportService.java
View file @
a9301ff7
...
...
@@ -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
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilExpReportTemplateService.java
View file @
a9301ff7
...
...
@@ -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
);
...
...
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilExperimentService.java
View file @
a9301ff7
...
...
@@ -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
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilAloneInOutStockServiceImpl.java
0 → 100644
View file @
a9301ff7
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
;
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilAloneSampleAnnexServiceImpl.java
0 → 100644
View file @
a9301ff7
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
;
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilAloneSampleServiceImpl.java
0 → 100644
View file @
a9301ff7
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
;
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilAloneWarehouseLocationServiceImpl.java
0 → 100644
View file @
a9301ff7
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
;
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilExpReportRelExpServiceImpl.java
0 → 100644
View file @
a9301ff7
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
;
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilExpReportServiceImpl.java
View file @
a9301ff7
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
;
}
}
}
}
}
}
}
}
}
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilExpReportTemplateServiceImpl.java
View file @
a9301ff7
...
...
@@ -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
);
}
...
...
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilExperimentServiceImpl.java
View file @
a9301ff7
...
...
@@ -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
);
}
...
...
src/main/resources/mapper/soil/SoilAloneInOutStockMapper.xml
0 → 100644
View file @
a9301ff7
<?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>
src/main/resources/mapper/soil/SoilAloneSampleAnnexMapper.xml
0 → 100644
View file @
a9301ff7
<?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>
src/main/resources/mapper/soil/SoilAloneSampleMapper.xml
0 → 100644
View file @
a9301ff7
<?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>
src/main/resources/mapper/soil/SoilAloneWarehouseLocationMapper.xml
0 → 100644
View file @
a9301ff7
<?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>
src/main/resources/mapper/soil/SoilExpReportRelExpMapper.xml
0 → 100644
View file @
a9301ff7
<?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>
src/main/resources/png/logo.png
0 → 100644
View file @
a9301ff7
9.51 KB
src/main/resources/templates/png/logo.png
0 → 100644
View file @
a9301ff7
9.51 KB
src/test/java/resources/db_sql/v1.0.8/新增表.sql
0 → 100644
View file @
a9301ff7
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'
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment