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
9a10d877
Commit
9a10d877
authored
Dec 31, 2020
by
wangweidong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
土工平台修改
parent
51dc5098
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
495 additions
and
74 deletions
+495
-74
AsposeUtil.java
.../java/com/patzn/cloud/service/lims/common/AsposeUtil.java
+65
-0
POIUtil.java
...ain/java/com/patzn/cloud/service/lims/common/POIUtil.java
+16
-13
SoilAloneSampleAnnexController.java
.../lims/soil/controller/SoilAloneSampleAnnexController.java
+36
-0
SoilAloneSampleController.java
...rvice/lims/soil/controller/SoilAloneSampleController.java
+15
-0
SoilSampleController.java
...ud/service/lims/soil/controller/SoilSampleController.java
+18
-2
SoilAloneSampleMapper.java
...cloud/service/lims/soil/mapper/SoilAloneSampleMapper.java
+2
-0
ISoilAloneSampleAnnexService.java
...rvice/lims/soil/service/ISoilAloneSampleAnnexService.java
+13
-0
ISoilAloneSampleService.java
...ud/service/lims/soil/service/ISoilAloneSampleService.java
+2
-0
ISoilSampleService.java
...n/cloud/service/lims/soil/service/ISoilSampleService.java
+4
-1
SoilAloneSampleAnnexServiceImpl.java
...ms/soil/service/impl/SoilAloneSampleAnnexServiceImpl.java
+78
-0
SoilAloneSampleServiceImpl.java
...ce/lims/soil/service/impl/SoilAloneSampleServiceImpl.java
+19
-0
SoilExpReportServiceImpl.java
...vice/lims/soil/service/impl/SoilExpReportServiceImpl.java
+48
-50
SoilSampleServiceImpl.java
...service/lims/soil/service/impl/SoilSampleServiceImpl.java
+75
-3
SoilAloneSampleMapper.xml
src/main/resources/mapper/soil/SoilAloneSampleMapper.xml
+29
-0
SoilEntrustMapper.xml
src/main/resources/mapper/soil/SoilEntrustMapper.xml
+1
-0
SoilSampleMapper.xml
src/main/resources/mapper/soil/SoilSampleMapper.xml
+10
-0
Test.java
src/test/java/com/patzn/cloud/service/lims/test/Test.java
+41
-5
Ytest.java
src/test/java/com/patzn/cloud/service/lims/test/Ytest.java
+9
-0
新建菜单.sql
src/test/java/resources/db_base_sql/v1.0.9/新建菜单.sql
+2
-0
新增字段.sql
src/test/java/resources/db_sql/v1.0.9/新增字段.sql
+12
-0
No files found.
src/main/java/com/patzn/cloud/service/lims/common/AsposeUtil.java
0 → 100644
View file @
9a10d877
package
com
.
patzn
.
cloud
.
service
.
lims
.
common
;
import
com.aspose.cells.SaveFormat
;
import
com.aspose.cells.Workbook
;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.util.List
;
public
class
AsposeUtil
{
protected
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
AsposeUtil
.
class
);
public
static
File
mergeWork
(
String
name
,
Workbook
workbook
,
List
<
Workbook
>
workbooksList
){
if
(
CollectionUtils
.
isEmpty
(
workbooksList
)){
return
null
;
}
FileOutputStream
fileOutputStream
=
null
;
FileOutputStream
fileOut
=
null
;
try
{
for
(
Workbook
book:
workbooksList
)
{
workbook
.
combine
(
book
);
}
File
tempFile
=
File
.
createTempFile
(
name
+
"pre"
,
".xlsx"
);
fileOut
=
new
FileOutputStream
(
tempFile
);
workbook
.
save
(
fileOut
,
SaveFormat
.
XLSX
);
XSSFWorkbook
workbookOk
=
new
XSSFWorkbook
(
tempFile
);
workbookOk
.
setActiveSheet
(
0
);
workbookOk
.
removeSheetAt
(
workbookOk
.
getNumberOfSheets
()-
1
);
File
file
=
File
.
createTempFile
(
name
,
".xlsx"
);
fileOutputStream
=
new
FileOutputStream
(
file
);
workbookOk
.
write
(
fileOutputStream
);
fileOut
.
flush
();
return
file
;
}
catch
(
Exception
e
){
logger
.
error
(
"合并EXCEL失败"
+
e
.
getMessage
());
e
.
printStackTrace
();
}
finally
{
try
{
if
(
null
!=
fileOut
){
fileOut
.
close
();
}
if
(
null
!=
fileOutputStream
){
fileOutputStream
.
close
();
}
}
catch
(
Exception
e
){
}
}
return
null
;
}
}
src/main/java/com/patzn/cloud/service/lims/common/POIUtil.java
View file @
9a10d877
package
com
.
patzn
.
cloud
.
service
.
lims
.
common
;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
com.google.common.collect.Lists
;
import
com.spire.xls.Worksheet
;
import
org.apache.poi.ooxml.POIXMLDocumentPart
;
import
org.apache.poi.ss.usermodel.CellType
;
import
org.apache.poi.ss.usermodel.PictureData
;
...
...
@@ -87,6 +89,12 @@ public class POIUtil {
}
public
static
String
hc
(
List
<
Workbook
>
workbooks
,
String
uuid
)
{
ByteArrayOutputStream
bos
=
null
;
InputStream
is
=
null
;
...
...
@@ -229,19 +237,14 @@ public class POIUtil {
}
// public static void main(String[] args) {
// hc(Lists.newArrayList(),"1212");
//// File file2 = new File("D://excel//检测报告(力学试验)三轴.xlsx");
//// try {
//// XSSFWorkbook workbook = new XSSFWorkbook(file2);
//// Map<String, Object> map = getPicturesFromXSSFSheet(workbook.getSheetAt(0));
//// System.out.println(map);
//// }catch (Exception e){
////
//// }
//
//
// }
public
static
void
main
(
String
[]
args
)
{
File
file1
=
new
File
(
"D://excel//封面.xlsx"
);
File
file2
=
new
File
(
"D://excel//检测报告(力学试验)三轴.xlsx"
);
}
/**
...
...
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilAloneSampleAnnexController.java
View file @
9a10d877
package
com
.
patzn
.
cloud
.
service
.
lims
.
soil
.
controller
;
import
com.baomidou.kisso.annotation.Action
;
import
com.baomidou.kisso.annotation.Login
;
import
com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
...
...
@@ -21,6 +23,8 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartHttpServletRequest
;
import
java.util.List
;
...
...
@@ -83,4 +87,36 @@ public class SoilAloneSampleAnnexController extends ServiceController {
public
RestResult
<
Boolean
>
delete
(
@RequestParam
(
"ids"
)
List
<
Long
>
ids
)
{
return
success
(
soilAloneSampleAnnexService
.
removeByIds
(
ids
));
}
@ApiOperation
(
value
=
"附件上传"
,
notes
=
"附件上传"
)
@PostMapping
(
"/upload/{entrustId}"
)
public
RestResult
<
Boolean
>
upload
(
@PathVariable
(
"entrustId"
)
Long
entrustId
,
MultipartFile
file
)
{
return
success
(
soilAloneSampleAnnexService
.
upload
(
file
,
entrustId
));
}
@ApiOperation
(
value
=
"附件批量上传"
,
notes
=
"附件批量上传"
)
@PostMapping
(
"/upload_bath/{entrustId}"
)
public
RestResult
<
Boolean
>
uploadBath
(
@PathVariable
(
"entrustId"
)
Long
entrustId
,
MultipartHttpServletRequest
httpServletRequest
)
{
return
success
(
soilAloneSampleAnnexService
.
uploadBath
(
httpServletRequest
,
entrustId
,
getAccount
()));
}
@ApiOperation
(
value
=
"下载附件"
,
notes
=
"下载指定附件"
)
@GetMapping
(
"/download/{id}"
)
public
void
downloadFile
(
@PathVariable
(
"id"
)
Long
id
)
{
soilAloneSampleAnnexService
.
downloadFile
(
id
,
response
);
}
@ApiOperation
(
value
=
"预览图片"
,
notes
=
"预览图片"
)
@Login
(
action
=
Action
.
Skip
)
@GetMapping
(
"/view"
)
public
void
view
(
String
objectKey
)
{
soilAloneSampleAnnexService
.
view
(
response
,
objectKey
);
}
}
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilAloneSampleController.java
View file @
9a10d877
...
...
@@ -147,6 +147,21 @@ public class SoilAloneSampleController extends ServiceController {
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_SIDX
,
value
=
"排序字段"
,
paramType
=
"query"
,
dataTypeClass
=
String
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_SORD
,
value
=
"排序方式"
,
paramType
=
"query"
,
dataTypeClass
=
String
.
class
),
})
@PostMapping
(
"/page_sample_of_storehouse"
)
public
RestResult
<
Page
<
SoilAloneSampleVO
>>
getPageSampleOfStorehouse
(
SoilAloneSampleVO
soilAloneSample
)
{
return
success
(
soilAloneSampleService
.
pageVOSampleOfStorehouse
(
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_storehouse_sample"
)
public
RestResult
<
Page
<
SoilAloneSampleVO
>>
getPageStorehouseSample
(
SoilAloneSampleVO
soilAloneSample
)
{
return
success
(
soilAloneSampleService
.
pageVO
(
getPage
(),
soilAloneSample
));
...
...
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilSampleController.java
View file @
9a10d877
package
com
.
patzn
.
cloud
.
service
.
lims
.
soil
.
controller
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -9,6 +10,7 @@ import com.patzn.cloud.service.soil.dto.SoilPrepareDTO;
import
com.patzn.cloud.service.soil.enums.SoilExpStatusEnum
;
import
com.patzn.cloud.service.soil.enums.SoilPrepareStatusEnum
;
import
com.patzn.cloud.service.soil.enums.SoilSampleStatusEnum
;
import
com.patzn.cloud.service.soil.vo.SoilExperimentVO
;
import
com.patzn.cloud.service.soil.vo.SoilPrepareVO
;
import
com.patzn.cloud.service.soil.vo.SoilSampleVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -490,8 +492,8 @@ public class SoilSampleController extends ServiceController {
@ApiOperation
(
value
=
"样品留存"
,
notes
=
"样品留存"
)
@PostMapping
(
"/sample_retain"
)
public
RestResult
<
Boolean
>
sampleRetain
(
@RequestParam
(
"ids"
)
Long
[]
ids
,
@RequestParam
(
"locationId"
)
Long
locationId
,
@RequestParam
(
"receiveLocation"
)
String
receiveLocation
)
{
return
success
(
soilSampleService
.
sampleRetain
(
ids
,
locationId
,
receiveLocation
,
getAccount
()));
@RequestParam
(
"receiveLocation"
)
String
receiveLocation
,
@RequestParam
(
"keepLimitTime"
)
Date
keepLimitTime
)
{
return
success
(
soilSampleService
.
sampleRetain
(
ids
,
locationId
,
receiveLocation
,
keepLimitTime
,
getAccount
()));
}
...
...
@@ -523,4 +525,18 @@ public class SoilSampleController 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
(
"/list_sample_progress"
)
public
RestResult
<
Page
<
SoilSampleVO
>>
listSampleProgress
(
SoilSampleVO
vo
)
{
return
success
(
soilSampleService
.
listSampleProgress
(
getPage
(),
vo
));
}
}
src/main/java/com/patzn/cloud/service/lims/soil/mapper/SoilAloneSampleMapper.java
View file @
9a10d877
...
...
@@ -20,4 +20,6 @@ import java.util.List;
public
interface
SoilAloneSampleMapper
extends
BatchMapper
<
SoilAloneSample
>
{
List
<
SoilAloneSampleVO
>
selectVOList
(
RowBounds
rowBounds
,
@Param
(
"vo"
)
SoilAloneSampleVO
soilAloneSample
);
List
<
SoilAloneSampleVO
>
selectVOSampleOfStorehouseList
(
RowBounds
rowBounds
,
SoilAloneSampleVO
soilAloneSample
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilAloneSampleAnnexService.java
View file @
9a10d877
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.SoilAloneSampleAnnex
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartHttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
/**
...
...
@@ -17,4 +21,13 @@ public interface ISoilAloneSampleAnnexService extends IBaseService<SoilAloneSamp
Page
<
SoilAloneSampleAnnex
>
page
(
Page
<
SoilAloneSampleAnnex
>
page
,
SoilAloneSampleAnnex
soilAloneSampleAnnex
);
boolean
removeByIds
(
List
<
Long
>
ids
);
boolean
upload
(
MultipartFile
file
,
Long
entrustId
);
void
downloadFile
(
Long
id
,
HttpServletResponse
response
);
void
view
(
HttpServletResponse
response
,
String
objectKey
);
boolean
uploadBath
(
MultipartHttpServletRequest
httpServletRequest
,
Long
entrustId
,
Account
account
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilAloneSampleService.java
View file @
9a10d877
...
...
@@ -30,4 +30,6 @@ public interface ISoilAloneSampleService extends IBaseService<SoilAloneSample> {
Page
<
SoilAloneSampleVO
>
pageVO
(
Page
<
SoilAloneSampleVO
>
page
,
SoilAloneSampleVO
soilAloneSample
);
boolean
bathChangeStorehouse
(
Long
[]
ids
,
SoilAloneInOutStock
aloneInOutStock
,
Account
account
);
Page
<
SoilAloneSampleVO
>
pageVOSampleOfStorehouse
(
Page
<
SoilAloneSampleVO
>
page
,
SoilAloneSampleVO
soilAloneSample
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilSampleService.java
View file @
9a10d877
package
com
.
patzn
.
cloud
.
service
.
lims
.
soil
.
service
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -61,7 +62,7 @@ public interface ISoilSampleService extends IBaseService<SoilSample> {
Page
<
SoilSampleVO
>
pageLocationSample
(
Page
<
SoilSampleVO
>
page
,
SoilSampleVO
soilSample
);
boolean
sampleRetain
(
Long
[]
ids
,
Long
locationId
,
String
location
,
Account
account
);
boolean
sampleRetain
(
Long
[]
ids
,
Long
locationId
,
String
location
,
Date
keepLimitTime
,
Account
account
);
boolean
sampleBringOut
(
Long
[]
ids
,
Account
account
);
...
...
@@ -80,4 +81,6 @@ public interface ISoilSampleService extends IBaseService<SoilSample> {
boolean
prepareCheckBack
(
Long
[]
ids
,
String
remark
,
Account
account
);
SoilSample
getBySampleCode
(
String
sampleCode
);
Page
<
SoilSampleVO
>
listSampleProgress
(
Page
<
SoilSampleVO
>
page
,
SoilSampleVO
vo
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilAloneSampleAnnexServiceImpl.java
View file @
9a10d877
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.oss.starter.OssClient
;
import
com.patzn.cloud.oss.starter.OssFileResult
;
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.lims.soil.service.ISoilAloneSampleService
;
import
com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex
;
import
com.patzn.cloud.service.soil.entity.SoilSamplePhoto
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartHttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
/**
...
...
@@ -21,6 +35,14 @@ import java.util.List;
@Service
public
class
SoilAloneSampleAnnexServiceImpl
extends
BaseServiceImpl
<
SoilAloneSampleAnnexMapper
,
SoilAloneSampleAnnex
>
implements
ISoilAloneSampleAnnexService
{
@Autowired
private
OssClient
ossClient
;
@Autowired
private
ISoilAloneSampleService
soilAloneSampleService
;
@Override
public
Page
<
SoilAloneSampleAnnex
>
page
(
Page
<
SoilAloneSampleAnnex
>
page
,
SoilAloneSampleAnnex
soilAloneSampleAnnex
)
{
Wrapper
wrapper
=
new
EntityWrapper
<>(
soilAloneSampleAnnex
);
...
...
@@ -32,4 +54,60 @@ public class SoilAloneSampleAnnexServiceImpl extends BaseServiceImpl<SoilAloneSa
public
boolean
removeByIds
(
List
<
Long
>
ids
)
{
return
baseMapper
.
deleteBatchIds
(
ids
)
>
0
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
upload
(
MultipartFile
file
,
Long
entrustId
)
{
RestAssert
.
fail
(
null
==
entrustId
,
"请选择样品"
);
String
fileName
=
file
.
getOriginalFilename
();
RestAssert
.
fail
(
StringUtils
.
isBlank
(
fileName
),
"请上传文件"
);
if
(
null
==
soilAloneSampleService
.
getById
(
entrustId
)){
RestAssert
.
fail
(
"样品不存在"
);
}
OssFileResult
result
=
ossClient
.
upload
(
file
);
if
(
null
==
result
)
{
return
false
;
}
SoilAloneSampleAnnex
sampleAnnex
=
new
SoilAloneSampleAnnex
();
sampleAnnex
.
setBucketName
(
result
.
getBucketName
());
sampleAnnex
.
setType
(
result
.
getType
());
sampleAnnex
.
setFileName
(
result
.
getName
());
sampleAnnex
.
setObjectKey
(
result
.
getObjectKey
());
sampleAnnex
.
setVersionId
(
result
.
getVersionId
());
sampleAnnex
.
setAloneSampleId
(
entrustId
);
return
save
(
sampleAnnex
);
}
@Override
public
void
downloadFile
(
Long
id
,
HttpServletResponse
response
)
{
SoilAloneSampleAnnex
attachment
=
super
.
getById
(
id
);
if
(
null
==
attachment
)
{
RestAssert
.
fail
(
"抱歉!该照片不存在"
);
}
ossClient
.
download
(
attachment
.
getObjectKey
(),
attachment
.
getFileName
()
+
"."
+
attachment
.
getType
(),
response
);
}
@Override
public
void
view
(
HttpServletResponse
response
,
String
objectKey
)
{
ossClient
.
download
(
objectKey
,
response
);
}
@Override
public
boolean
uploadBath
(
MultipartHttpServletRequest
multipartHttpServletRequest
,
Long
entrustId
,
Account
account
)
{
// 先拿到文件名称的迭代器
Iterator
<
String
>
fileNamesIt
=
multipartHttpServletRequest
.
getFileNames
();
List
<
String
>
failedNameList
=
new
ArrayList
<>();
while
(
fileNamesIt
.
hasNext
())
{
String
fileName
=
fileNamesIt
.
next
();
// 获取文件
MultipartFile
multipartFile
=
multipartHttpServletRequest
.
getFile
(
fileName
);
upload
(
multipartFile
,
entrustId
);
failedNameList
.
add
(
fileName
);
}
return
true
;
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilAloneSampleServiceImpl.java
View file @
9a10d877
...
...
@@ -43,6 +43,20 @@ public class SoilAloneSampleServiceImpl extends BaseServiceImpl<SoilAloneSampleM
SoilAloneSample
sample
=
soilAloneSample
.
convert
(
SoilAloneSample
.
class
);
Wrapper
wrapper
=
new
EntityWrapper
<>(
sample
);
if
(
StringUtils
.
isNotBlank
(
sample
.
getBoreholeName
())){
wrapper
.
like
(
"borehole_name"
,
sample
.
getBoreholeName
());
sample
.
setBoreholeName
(
null
);
}
if
(
StringUtils
.
isNotBlank
(
sample
.
getProjectName
())){
wrapper
.
like
(
"project_name"
,
sample
.
getProjectName
());
sample
.
setProjectName
(
null
);
}
if
(
StringUtils
.
isNotBlank
(
sample
.
getProjectLeader
())){
wrapper
.
like
(
"project_leader"
,
sample
.
getProjectLeader
());
sample
.
setProjectLeader
(
null
);
}
if
(
CollectionUtils
.
isNotEmpty
(
soilAloneSample
.
getStatusList
())){
wrapper
.
in
(
"status"
,
soilAloneSample
.
getStatusList
());
}
...
...
@@ -141,4 +155,9 @@ public class SoilAloneSampleServiceImpl extends BaseServiceImpl<SoilAloneSampleM
RestAssert
.
fail
(
StringUtils
.
isBlank
(
aloneInOutStock
.
getShelfCode
()),
"请填写货架号"
);
return
soilAloneInOutStockService
.
update
(
aloneInOutStock
,
Condition
.
create
().
in
(
"alone_sample_id"
,
ids
));
}
@Override
public
Page
<
SoilAloneSampleVO
>
pageVOSampleOfStorehouse
(
Page
<
SoilAloneSampleVO
>
page
,
SoilAloneSampleVO
soilAloneSample
)
{
return
page
.
setRecords
(
baseMapper
.
selectVOSampleOfStorehouseList
(
page
,
soilAloneSample
));
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilExpReportServiceImpl.java
View file @
9a10d877
package
com
.
patzn
.
cloud
.
service
.
lims
.
soil
.
service
.
impl
;
import
com.aspose.cells.Workbook
;
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.commons.toolkit.FileUtils
;
import
com.patzn.cloud.oss.starter.OssClient
;
import
com.patzn.cloud.oss.starter.OssFileResult
;
import
com.patzn.cloud.service.lims.common.AsposeUtil
;
import
com.patzn.cloud.service.lims.common.HSSFWorkbookUtil
;
import
com.patzn.cloud.service.lims.common.POIUtil
;
import
com.patzn.cloud.service.lims.common.StringHandleUtils
;
...
...
@@ -22,7 +25,6 @@ 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
;
...
...
@@ -154,6 +156,7 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
mapReplace
.
put
(
"#{client}"
,
entrust
.
getClient
());
mapReplace
.
put
(
"#{boreholeName}"
,
entrust
.
getBoreholeName
());
mapReplace
.
put
(
"#{projectNo}"
,
entrust
.
getProjectNo
());
mapReplace
.
put
(
"#{testType}"
,
entrust
.
getTestType
());
int
sheetNums
=
xssfWorkbook
.
getNumberOfSheets
();
...
...
@@ -222,6 +225,7 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
}
SoilSampleVO
vo
=
sample
.
convert
(
SoilSampleVO
.
class
);
vo
.
setExperimentVOList
(
vosList
);
vo
.
setBoreholeName
(
entrust
.
getBoreholeName
());
voList
.
add
(
vo
);
}
}
...
...
@@ -319,66 +323,42 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
}
}
List
<
XSSFWorkbook
>
bookList
=
new
ArrayList
<>();
List
<
Workbook
>
bookList
=
new
ArrayList
<>();
Workbook
workbook
=
null
;
if
(
null
!=
xssfWorkbook
){
bookList
.
add
(
xssfWorkbook
);
try
{
workbook
=
new
Workbook
(
exportToExcelInputStream
(
xssfWorkbook
));
}
catch
(
Exception
e
){
}
}
for
(
SoilExpReport
report:
reportList
)
{
XSSFWorkbook
workbook
=
HSSFWorkbookUtil
.
getWorkbookByIO
(
ossClient
.
download
(
report
.
getObjectKey
()));
if
(
null
!=
workbook
){
bookList
.
add
(
workbook
);
try
{
Workbook
book
=
new
Workbook
(
ossClient
.
download
(
report
.
getObjectKey
()));
if
(
null
!=
book
){
bookList
.
add
(
book
);
}
}
catch
(
Exception
e
){
}
}
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
);
}
}
}
try
{
Workbook
book
=
new
Workbook
(
ossClient
.
download
(
appendix
.
getObjectKey
()));
if
(
null
!=
book
){
bookList
.
add
(
book
);
}
int
sheetNs
=
newExcelCreat
.
getNumberOfSheets
();
}
catch
(
Exception
e
){
for
(
int
i
=
0
;
i
<
sheetNs
;
i
++)
{
if
(!
newExcelCreat
.
isSheetHidden
(
i
)){
HSSFWorkbookUtil
.
insertImageByRowColFile
(
newExcelCreat
,
newExcelCreat
.
getSheetAt
(
i
),
0
,
0
,
new
File
(
fileFolderPath
(
"logo.png"
)));
}
}
}
}
if
(
CollectionUtils
.
isNotEmpty
(
bookList
)){
File
allFileName
=
File
.
createTempFile
(
entrust
.
getEntrustCode
()+
"report"
,
".xlsx"
);
fileOut
=
new
FileOutputStream
(
allFileName
);
newExcelCreat
.
write
(
fileOut
);
fileOut
.
flush
();
try
{
File
allFileName
=
AsposeUtil
.
mergeWork
(
entrust
.
getEntrustCode
(),
workbook
,
bookList
);
OssFileResult
result
=
ossClient
.
upload
(
allFileName
);
SoilReport
soilReport
=
new
SoilReport
();
...
...
@@ -389,7 +369,11 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
soilReport
.
setBucketName
(
result
.
getBucketName
());
soilReport
.
setEntrustId
(
entrustId
);
soilReport
.
setUri
(
result
.
getUri
());
soilReport
.
setReportType
(
template
.
getClassType
());
if
(
soilReportService
.
save
(
soilReport
)){
FileUtils
.
deleteFiles
(
allFileName
);
return
soilReport
;
}
}
catch
(
Exception
e
){
...
...
@@ -406,6 +390,20 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
}
public
InputStream
exportToExcelInputStream
(
XSSFWorkbook
workbook
)
{
try
{
ByteArrayOutputStream
bos
=
new
ByteArrayOutputStream
();
workbook
.
write
(
bos
);
byte
[]
array
=
bos
.
toByteArray
();
InputStream
is
=
new
ByteArrayInputStream
(
array
);
return
is
;
}
catch
(
Exception
e
){
logger
.
error
(
"exportToExcelInputStream转化失败"
+
e
.
getMessage
());
}
return
null
;
}
private
Map
<
Integer
,
Map
<
Integer
,
byte
[]>>
picture
(
Sheet
sheet
)
{
//map 返回值
Map
<
Integer
,
Map
<
Integer
,
byte
[]>>
map
=
new
LinkedHashMap
<>();
...
...
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilSampleServiceImpl.java
View file @
9a10d877
...
...
@@ -7,6 +7,7 @@ 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.commons.toolkit.DateUtils
;
import
com.patzn.cloud.commons.toolkit.StringHandleUtils
;
import
com.patzn.cloud.feign.lims.base.client.LmsUserGroupClient
;
import
com.patzn.cloud.service.lims.base.entity.LmsUserGroup
;
...
...
@@ -262,6 +263,49 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
@Override
public
Page
<
SoilSampleVO
>
listSampleProgress
(
Page
<
SoilSampleVO
>
page
,
SoilSampleVO
vo
)
{
List
<
SoilSampleVO
>
voList
=
baseMapper
.
selectVOList
(
page
,
vo
);
if
(
CollectionUtils
.
isEmpty
(
voList
)){
return
page
;
}
List
<
Long
>
sampelIds
=
voList
.
stream
().
map
(
s
->{
return
s
.
getId
();
}).
collect
(
Collectors
.
toList
());
List
<
SoilExperiment
>
experimentList
=
soilExperimentService
.
list
(
Condition
.
create
().
setSqlSelect
(
"id"
,
"sample_id"
,
"name"
,
"status"
).
in
(
"sample_id"
,
sampelIds
));
for
(
SoilSampleVO
sampleVO:
voList
)
{
List
<
String
>
notOkList
=
new
ArrayList
<>();
int
all
=
0
;
int
okNum
=
0
;
for
(
SoilExperiment
t:
experimentList
)
{
if
(
t
.
getSampleId
().
equals
(
sampleVO
.
getId
())){
all
++;
if
(
SoilExpStatusEnum
.
END
.
equals
(
t
.
getStatus
())){
okNum
++;
}
else
{
notOkList
.
add
(
t
.
getName
());
}
}
}
sampleVO
.
setTestProgress
(
okNum
+
"/"
+
all
);
if
(
all
==
0
){
sampleVO
.
setTestProgressPer
(
0
D
);
}
else
{
sampleVO
.
setTestProgressPer
((
Double
.
parseDouble
(
""
+
okNum
)/
Double
.
parseDouble
(
""
+
all
))*
100
);
}
sampleVO
.
setExpNotEnd
(
com
.
patzn
.
cloud
.
service
.
lims
.
common
.
StringHandleUtils
.
join
(
notOkList
));
}
return
page
.
setRecords
(
voList
);
}
@Override
public
boolean
checkEntrustHaveSample
(
Long
[]
entrustIds
)
{
if
(
ArrayUtils
.
isEmpty
(
entrustIds
)){
return
true
;
...
...
@@ -286,10 +330,35 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
@Override
public
Page
<
SoilSampleVO
>
pageVO
(
Page
<
SoilSampleVO
>
page
,
SoilSampleVO
soilSample
)
{
return
page
.
setRecords
(
init
ItemInfo
(
baseMapper
.
selectVOList
(
page
,
soilSample
)));
return
page
.
setRecords
(
init
KeepRemind
(
initItemInfo
(
baseMapper
.
selectVOList
(
page
,
soilSample
)
)));
}
public
List
<
SoilSampleVO
>
initKeepRemind
(
List
<
SoilSampleVO
>
sampleVOList
){
if
(
CollectionUtils
.
isEmpty
(
sampleVOList
)){
return
sampleVOList
;
}
Date
date
=
new
Date
();
Date
dateT
=
DateUtils
.
dateAddDays
(
date
,
2
);
for
(
SoilSampleVO
soilSampleVO:
sampleVOList
)
{
if
(
null
!=
soilSampleVO
.
getKeepLimitTime
()){
if
(
date
.
after
(
soilSampleVO
.
getKeepLimitTime
())){
soilSampleVO
.
setKeepReminder
(
1
);
}
else
if
(
dateT
.
after
(
soilSampleVO
.
getKeepLimitTime
())){
soilSampleVO
.
setKeepReminder
(
1
);
}
else
{
soilSampleVO
.
setKeepReminder
(
0
);
}
}
else
{
soilSampleVO
.
setKeepReminder
(
0
);
}
}
return
sampleVOList
;
}
public
List
<
SoilSampleVO
>
initItemInfo
(
List
<
SoilSampleVO
>
sampleVOList
){
if
(
CollectionUtils
.
isEmpty
(
sampleVOList
)){
return
sampleVOList
;
...
...
@@ -329,6 +398,8 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
}
Date
date
=
new
Date
();
Date
dateT
=
DateUtils
.
dateAddDays
(
date
,
2
);
for
(
SoilSampleVO
soilSampleVO:
sampleVOList
)
{
Set
<
String
>
nameSet
=
nameMap
.
get
(
soilSampleVO
.
getId
());
Set
<
String
>
shortNameSet
=
shortNameMap
.
get
(
soilSampleVO
.
getId
());
...
...
@@ -690,8 +761,9 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
sampleRetain
(
Long
[]
ids
,
Long
locationId
,
String
location
,
Account
account
)
{
public
boolean
sampleRetain
(
Long
[]
ids
,
Long
locationId
,
String
location
,
Date
keepLimitTime
,
Account
account
)
{
RestAssert
.
fail
(
ArrayUtils
.
isEmpty
(
ids
),
"请选择试样"
);
RestAssert
.
fail
(
null
==
keepLimitTime
,
"请选择留存有效期"
);
List
<
SoilExperiment
>
experimentList
=
soilExperimentService
.
list
(
Condition
.
create
().
setSqlSelect
(
"id"
).
in
(
"sample_id"
,
ids
));
RestAssert
.
fail
(
null
==
locationId
||
StringUtils
.
isBlank
(
location
),
"请选择要存放的位置"
);
if
(
CollectionUtils
.
isNotEmpty
(
experimentList
)){
...
...
@@ -700,7 +772,7 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
SoilSample
sample
=
new
SoilSample
();
sample
.
setStatus
(
SoilSampleStatusEnum
.
RETAIN
);
sample
.
setProgress
(
SoilSampleStatusEnum
.
RETAIN
);
sample
.
setKeepLimitTime
(
keepLimitTime
);
soilSampleRecordService
.
record
(
SoilSampleStatusEnum
.
RECEIVE
,
SoilSampleStatusEnum
.
RECEIVE
,
ids
,
0
,
account
,
"不含有试验项目的样品进行留存"
);
soilSampleOperationService
.
recordReceiveInfo
(
ids
,
locationId
,
location
,
account
);
return
super
.
update
(
sample
,
Condition
.
create
().
in
(
"id"
,
ids
));
...
...
src/main/resources/mapper/soil/SoilAloneSampleMapper.xml
View file @
9a10d877
...
...
@@ -21,4 +21,33 @@
</select>
<select
id=
"selectVOSampleOfStorehouseList"
resultType=
"com.patzn.cloud.service.soil.vo.SoilAloneSampleVO"
>
SELECT
s.id,s.receiver,s.receive_time,s.project_name,s.project_leader,s.borehole_name,s.cases_num,s.registrant,s.regist_time,
o.storehouse,o.shelf_code,o.instock_time,o.keep_limit_time
FROM
soil_alone_sample s
JOIN soil_alone_in_out_stock o ON s.ID = o.alone_sample_id
WHERE s.deleted = 0
<if
test=
"vo.boreholeName"
>
AND s.borehole_name LIKE CONCAT('%',#{vo.boreholeName},'%')
</if>
<if
test=
"vo.storehouse"
>
AND o.storehouse = #{vo.storehouse}
</if>
<if
test=
"vo.shelfCode"
>
AND o.shelf_code = #{vo.shelfCode}
</if>
</select>
</mapper>
src/main/resources/mapper/soil/SoilEntrustMapper.xml
View file @
9a10d877
...
...
@@ -142,6 +142,7 @@
WHERE e.deleted = 0
<include
refid=
"sqlWhere"
/>
ORDER BY e.ctime DESC
</select>
...
...
src/main/resources/mapper/soil/SoilSampleMapper.xml
View file @
9a10d877
...
...
@@ -15,6 +15,7 @@
s.site_no,
s.sample_code,
s.sample_depth,
s.keep_limit_time,
s.sample_pack,
s.sample_describe,
s.describe_detail,
...
...
@@ -26,6 +27,7 @@
e.client,
e.project_no,
e.borehole_name,
e.project_name,
e.borehole_location,
e.water_depth,
e.entrust_code,
...
...
@@ -62,6 +64,14 @@
</sql>
<sql
id=
"eWhere"
>
<if
test=
"null!=vo.entrustCode"
>
AND e.entrust_code LIKE CONCAT('%',#{vo.entrustCode},'%')
</if>
<if
test=
"null!=vo.projectName"
>
AND e.project_name LIKE CONCAT('%',#{vo.projectName},'%')
</if>
<if
test=
"null!=vo.boreholeName"
>
AND e.borehole_name LIKE CONCAT('%',#{vo.boreholeName},'%')
</if>
...
...
src/test/java/com/patzn/cloud/service/lims/test/Test.java
View file @
9a10d877
package
com
.
patzn
.
cloud
.
service
.
lims
.
test
;
import
com.aspose.cells.SaveFormat
;
import
com.aspose.cells.Workbook
;
import
com.patzn.cloud.service.lims.common.OrderNumUtil
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileReader
;
import
java.io.*
;
import
java.math.BigDecimal
;
public
class
Test
{
public
static
void
main
(
String
[]
args
)
{
String
aaa
=
"D:\\242398行.gds"
;
readFileByLine
(
aaa
);
try
{
Workbook
workbook1
=
new
Workbook
(
"D://excel//封面.xlsx"
);
Workbook
workbook2
=
new
Workbook
(
"D://excel//检测报告(力学试验)三轴.xlsx"
);
Workbook
workbook3
=
new
Workbook
(
"D://excel//检测报告(力学试验)手动十字板.xlsx"
);
Workbook
workbook4
=
new
Workbook
(
"D://excel//检测报告(力学试验)休止角.xlsx"
);
Workbook
workbook5
=
new
Workbook
(
"D://excel//检测报告(力学试验)袖珍贯入仪.xlsx"
);
Workbook
workbook6
=
new
Workbook
(
"D://excel//检测报告(力学试验)直剪.xlsx"
);
Workbook
workbook7
=
new
Workbook
(
"D://excel//附件.xlsx"
);
workbook1
.
combine
(
workbook2
);
workbook1
.
combine
(
workbook3
);
workbook1
.
combine
(
workbook4
);
workbook1
.
combine
(
workbook5
);
workbook1
.
combine
(
workbook6
);
workbook1
.
combine
(
workbook7
);
FileOutputStream
fileOut
=
null
;
String
allFileName
=
"d:/excel/0.xlsx"
;
fileOut
=
new
FileOutputStream
(
allFileName
);
workbook1
.
save
(
fileOut
,
SaveFormat
.
XLSX
);
File
file
=
new
File
(
allFileName
);
XSSFWorkbook
workbook
=
new
XSSFWorkbook
(
file
);
workbook
.
setActiveSheet
(
0
);
workbook
.
removeSheetAt
(
workbook
.
getNumberOfSheets
()-
1
);
FileOutputStream
fileOutOK
=
null
;
String
allFileNameOK
=
"d:/excel/1.xlsx"
;
fileOutOK
=
new
FileOutputStream
(
allFileNameOK
);
workbook
.
write
(
fileOutOK
);
fileOut
.
flush
();
fileOut
.
flush
();
}
catch
(
Exception
e
){
}
...
...
src/test/java/com/patzn/cloud/service/lims/test/Ytest.java
0 → 100644
View file @
9a10d877
package
com
.
patzn
.
cloud
.
service
.
lims
.
test
;
public
class
Ytest
{
public
static
void
main
(
String
[]
args
)
{
Double
a
=
Double
.
parseDouble
(
"0"
);
Double
b
=
Double
.
parseDouble
(
"0"
);
System
.
out
.
println
(
a
/
b
);
}
}
src/test/java/resources/db_base_sql/v1.0.9/新建菜单.sql
0 → 100644
View file @
9a10d877
INSERT
INTO
"public"
.
"sys_resource"
(
"id"
,
"system_id"
,
"pid"
,
"name"
,
"type"
,
"code"
,
"uri"
,
"icon"
,
"remark"
,
"status"
,
"sort"
,
"ctime"
,
"ename"
)
VALUES
(
1344190601411657730
,
1304006677087891457
,
1310765372454940673
,
'样品进度查询'
,
0
,
'sample_progress'
,
'/soil/statistics/sample_progress'
,
'pt-config'
,
NULL
,
1
,
90
,
'2020-12-30 15:56:27.887'
,
NULL
);
INSERT
INTO
"public"
.
"sys_resource"
(
"id"
,
"system_id"
,
"pid"
,
"name"
,
"type"
,
"code"
,
"uri"
,
"icon"
,
"remark"
,
"status"
,
"sort"
,
"ctime"
,
"ename"
)
VALUES
(
1344190601411657730
,
1304006677087891457
,
1310765372454940673
,
'样品进度查询'
,
0
,
'sample_progress'
,
'/soil/statistics/sample_progress'
,
'pt-config'
,
NULL
,
1
,
90
,
'2020-12-30 15:56:27.887'
,
NULL
);
src/test/java/resources/db_sql/v1.0.9/新增字段.sql
0 → 100644
View file @
9a10d877
ALTER
TABLE
"public"
.
"soil_sample"
ALTER
TABLE
"public"
.
"soil_sample"
ADD
COLUMN
"keep_limit_time"
timestamp
(
6
);
COMMENT
ON
COLUMN
"public"
.
"soil_sample"
.
"keep_limit_time"
IS
'留存有效期'
;
ALTER
TABLE
"public"
.
"soil_report"
ADD
COLUMN
"report_type"
varchar
(
255
);
COMMENT
ON
COLUMN
"public"
.
"soil_report"
.
"report_type"
IS
'报告类型'
;
\ No newline at end of file
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