Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
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
项目统一框架
amos-boot-biz
Commits
554ae5ff
Commit
554ae5ff
authored
Jul 11, 2024
by
刘林
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix(jg):车用气瓶历史平台登记功能开发
parent
567c6949
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
390 additions
and
36 deletions
+390
-36
CylinderAreaDataServiceImpl.java
...der/flc/biz/service/impl/CylinderAreaDataServiceImpl.java
+0
-9
EquipInfoCylinderExcelDto.java
...mos/boot/module/jg/api/dto/EquipInfoCylinderExcelDto.java
+5
-0
IdxBizJqEquipmentRegisterController.java
...g/biz/controller/IdxBizJqEquipmentRegisterController.java
+12
-21
IIdxBizJgRegisterInfoService.java
...t/module/jg/biz/service/IIdxBizJgRegisterInfoService.java
+4
-1
IdxBizJgRegisterInfoServiceImpl.java
.../jg/biz/service/impl/IdxBizJgRegisterInfoServiceImpl.java
+369
-0
JgMaintenanceContractServiceImpl.java
...jg/biz/service/impl/JgMaintenanceContractServiceImpl.java
+0
-5
No files found.
amos-boot-system-tzs/amos-boot-module-cylinder/amos-boot-module-cylinder-biz/src/main/java/com/yeejoin/amos/boot/module/cylinder/flc/biz/service/impl/CylinderAreaDataServiceImpl.java
View file @
554ae5ff
package
com
.
yeejoin
.
amos
.
boot
.
module
.
cylinder
.
flc
.
biz
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.yeejoin.amos.boot.module.cylinder.api.dto.CylinderFillingMessageModel
;
import
com.yeejoin.amos.boot.module.cylinder.api.dto.ESEquipmentCategoryDto
;
import
com.yeejoin.amos.boot.module.cylinder.api.dto.KeyValueDto
;
import
com.yeejoin.amos.boot.module.cylinder.api.dto.TzBaseEnterpriseInfoDto
;
import
com.yeejoin.amos.boot.module.cylinder.api.entity.ESCylinderFillingRecordDto
;
import
com.yeejoin.amos.boot.module.cylinder.api.service.ITzBaseEnterpriseInfoService
;
import
com.yeejoin.amos.boot.module.cylinder.biz.dao.ESCylinderFillingRecordRepository
;
import
com.yeejoin.amos.boot.module.cylinder.biz.dao.ESEquipmentCategory
;
import
com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CityCylinderInfoDto
;
import
com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderAreaDataDto
;
import
com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInfoStatisticsDto
;
import
com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderAreaData
;
import
com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderAreaDataMapper
;
import
com.yeejoin.amos.boot.module.cylinder.flc.api.service.ICylinderAreaDataService
;
import
com.yeejoin.amos.component.feign.model.FeignClientResult
;
import
com.yeejoin.amos.feign.privilege.Privilege
;
import
com.yeejoin.amos.feign.privilege.model.CompanyModel
;
import
com.yeejoin.amos.feign.systemctl.Systemctl
;
import
com.yeejoin.amos.feign.systemctl.model.RegionModel
;
import
joptsimple.internal.Strings
;
import
org.apache.lucene.search.comparators.DoubleComparator
;
import
org.elasticsearch.action.search.SearchRequest
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.client.RequestOptions
;
...
...
@@ -34,7 +26,6 @@ import org.elasticsearch.client.core.CountRequest;
import
org.elasticsearch.client.core.CountResponse
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.search.aggregations.AggregationBuilder
;
import
org.elasticsearch.search.aggregations.AggregationBuilders
;
import
org.elasticsearch.search.aggregations.bucket.terms.Terms
;
import
org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder
;
...
...
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/dto/EquipInfoCylinderExcelDto.java
View file @
554ae5ff
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
dto
;
import
cn.hutool.json.JSONArray
;
import
com.alibaba.excel.annotation.ExcelIgnore
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.alibaba.excel.annotation.format.DateTimeFormat
;
...
...
@@ -11,6 +12,7 @@ import lombok.Data;
import
lombok.EqualsAndHashCode
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Size
;
import
java.util.List
;
/**
* @author LiuLin
...
...
@@ -267,4 +269,7 @@ public class EquipInfoCylinderExcelDto extends BaseDto {
@ExcelProperty
(
value
=
"热处理温度(℃)"
,
index
=
52
)
@ApiModelProperty
(
value
=
"热处理温度(℃)"
)
private
String
qpHeatTreatmentTemperature
;
@ExcelIgnore
private
List
fileData
;
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/controller/IdxBizJqEquipmentRegisterController.java
View file @
554ae5ff
...
...
@@ -165,27 +165,18 @@ public class IdxBizJqEquipmentRegisterController extends BaseController {
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/importData"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"气瓶批量导入"
,
notes
=
"气瓶批量导入"
)
public
ResponseModel
<
List
<
EquipInfoCylinderExcelDto
>>
ImportData
(
@RequestPart
(
"file"
)
MultipartFile
multipartFile
)
throws
Exception
{
List
<
EquipInfoCylinderExcelDto
>
aircraftList
=
new
ArrayList
<>();
try
{
EasyExcel
.
read
(
multipartFile
.
getInputStream
(),
EquipInfoCylinderExcelDto
.
class
,
new
AnalysisEventListener
<
EquipInfoCylinderExcelDto
>()
{
// 每读取一行就调用该方法
@Override
public
void
invoke
(
EquipInfoCylinderExcelDto
data
,
AnalysisContext
context
)
{
EquipInfoCylinderExcelDto
fireExperts
=
new
EquipInfoCylinderExcelDto
();
BeanUtils
.
copyProperties
(
data
,
fireExperts
);
aircraftList
.
add
(
fireExperts
);
}
// 全部读取完成就调用该方法
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
System
.
out
.
println
(
"读取完成"
);
}
}).
headRowNumber
(
4
).
sheet
().
doRead
();
return
ResponseHelper
.
buildResponse
(
aircraftList
);
}
catch
(
Exception
e
)
{
throw
new
Exception
(
"系统异常"
);
}
public
ResponseModel
<?>
importPressureData
(
@RequestPart
(
"file"
)
MultipartFile
multipartFile
)
throws
Exception
{
return
ResponseHelper
.
buildResponse
(
idxBizJgRegisterInfoService
.
importPressureData
(
multipartFile
));
}
/**
* 气瓶批量保存
* **/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/savePressureVesselData"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"气瓶批量保存"
,
notes
=
"气瓶批量保存"
)
public
ResponseModel
<?>
savePressureVesselData
(
@RequestBody
Map
<
String
,
Object
>
paramMap
)
{
return
ResponseHelper
.
buildResponse
(
idxBizJgRegisterInfoService
.
savePressureVesselData
(
paramMap
));
}
/**
...
...
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/IIdxBizJgRegisterInfoService.java
View file @
554ae5ff
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
service
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
...
...
@@ -37,4 +36,8 @@ public interface IIdxBizJgRegisterInfoService {
Page
<
JSONObject
>
queryEquipCanUsedByVesselPage
(
JSONObject
jsonObject
);
Object
importPressureVesselData
(
Map
<
String
,
Object
>
paramMap
,
MultipartFile
multipartFile
);
Object
importPressureData
(
MultipartFile
multipartFile
)
throws
Exception
;
Object
savePressureVesselData
(
Map
<
String
,
Object
>
paramMap
);
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/IdxBizJgRegisterInfoServiceImpl.java
View file @
554ae5ff
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
service
.
impl
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.alibaba.excel.read.metadata.holder.ReadRowHolder
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
...
...
@@ -50,6 +54,7 @@ import org.elasticsearch.index.query.QueryBuilders;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
...
...
@@ -67,10 +72,14 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import
java.io.IOException
;
import
java.lang.reflect.Field
;
import
java.sql.Timestamp
;
import
java.time.LocalDate
;
import
java.time.ZoneId
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
static
com
.
alibaba
.
fastjson
.
JSON
.
toJSONString
;
import
static
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
enums
.
CylinderTypeEnum
.
SPECIAL_CYLINDER
;
/**
...
...
@@ -112,6 +121,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
private
static
final
String
IS_COPY
=
"isCopy"
;
// 设备种类
public
static
final
String
EQU_LIST
=
"EQU_LIST"
;
//模版上传集合
public
static
final
String
EQU_LISTS
=
"equLists"
;
// 设备类别
public
static
final
String
EQU_CATEGORY
=
"EQU_CATEGORY"
;
// 设备品种
...
...
@@ -127,6 +138,13 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
// 设备来源 jg:新设备录入 jg_his:历史数据录入
public
static
final
String
DATA_SOURCE
=
"DATA_SOURCE"
;
private
static
final
String
ATTACHMENT_UPLOAD
=
"attachmentUpload"
;
private
final
List
<
String
>
resultError
=
new
ArrayList
<>();
List
<
String
>
useInnerCodeList
=
new
ArrayList
<>();
//单位内部编号集合
List
<
String
>
equCodeList
=
new
ArrayList
<>();
//设备代码集合
List
<
String
>
factoryNumList
=
new
ArrayList
<>();
//出厂编码集合
/**
* 业务类型 0:单个新增 1:批量导入
*/
...
...
@@ -204,6 +222,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
private
IdxBizJgTechParamsVesselServiceImpl
idxBizJgTechParamsVesselService
;
@Autowired
private
IdxBizJgInspectionDetectionInfoServiceImpl
idxBizJgInspectionDetectionInfoService
;
@Autowired
private
IIdxBizJgOtherInfoService
idxBizJgOtherInfoService
;
/**
* 将对象的属性由驼峰转为纯大写下划线格式
...
...
@@ -2011,6 +2031,346 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
}
}
@Override
public
Object
importPressureData
(
MultipartFile
multipartFile
)
throws
Exception
{
List
<
EquipInfoCylinderExcelDto
>
aircraftList
=
new
ArrayList
<>();
resultError
.
clear
();
useInnerCodeList
.
clear
();
equCodeList
.
clear
();
factoryNumList
.
clear
();
try
{
EasyExcel
.
read
(
multipartFile
.
getInputStream
(),
EquipInfoCylinderExcelDto
.
class
,
new
AnalysisEventListener
<
EquipInfoCylinderExcelDto
>()
{
// 每读取一行就调用该方法
@Override
public
void
invoke
(
EquipInfoCylinderExcelDto
data
,
AnalysisContext
context
)
{
EquipInfoCylinderExcelDto
fireExperts
=
new
EquipInfoCylinderExcelDto
();
BeanUtils
.
copyProperties
(
data
,
fireExperts
);
resultError
.
add
(
checkExcelData
(
data
,
context
).
toString
());
aircraftList
.
add
(
fireExperts
);
useInnerCodeList
.
add
(
data
.
getUseInnerCode
());
equCodeList
.
add
(
data
.
getEquCode
());
factoryNumList
.
add
(
"0"
.
equals
(
data
.
getWhetherVehicleCylinder
())
?
data
.
getFactoryNum
()
:
null
);
}
// 全部读取完成就调用该方法
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
if
(
CollectionUtils
.
isEmpty
(
aircraftList
))
{
log
.
info
(
"你上传了一个空数据的Excel文档!"
);
resultError
.
add
(
"你上传了一个空数据的Excel文档!"
);
throw
new
BadRequest
(
"你上传了一个空数据的Excel文档!"
);
}
}
}).
headRowNumber
(
4
).
sheet
().
doRead
();
// 如果存在错误信息,则抛出 BadRequest 异常
if
(!
resultError
.
removeIf
(
String:
:
isEmpty
))
{
throw
new
BadRequest
(
"校验失败"
);
}
else
{
return
aircraftList
;
}
}
catch
(
Exception
e
)
{
throw
new
Exception
(
resultError
.
stream
()
.
filter
(
s
->
!
s
.
isEmpty
())
.
collect
(
Collectors
.
joining
(
"\n "
)));
}
}
public
static
String
getUrlByKey
(
List
<
Map
<
String
,
Object
>>
dataList
,
String
key
)
{
if
(
dataList
==
null
||
dataList
.
isEmpty
())
{
return
null
;
// 如果 dataList 为空或 null,返回 null
}
for
(
Map
<
String
,
Object
>
item
:
dataList
)
{
if
(
key
.
equals
(
item
.
get
(
"key"
)))
{
List
<
Map
<
String
,
String
>>
value
=
(
List
<
Map
<
String
,
String
>>)
item
.
get
(
"value"
);
if
(
value
!=
null
&&
!
value
.
isEmpty
())
{
return
value
.
get
(
0
).
get
(
"url"
);
}
}
}
return
null
;
// 如果找不到对应的 URL,返回 null
}
@Override
public
Object
savePressureVesselData
(
Map
<
String
,
Object
>
paramMap
)
{
ReginParams
reginParams
=
JSONObject
.
parseObject
(
redisUtils
.
get
(
RedisKey
.
buildReginKey
(
RequestContext
.
getExeUserId
(),
RequestContext
.
getToken
())).
toString
(),
ReginParams
.
class
);
CompanyBo
company
=
reginParams
.
getCompany
();
List
<
IdxBizJgUseInfo
>
useInfoList
=
new
ArrayList
<>();
List
<
IdxBizJgRegisterInfo
>
registerInfoList
=
new
ArrayList
<>();
List
<
IdxBizJgDesignInfo
>
designInfoList
=
new
ArrayList
<>();
List
<
IdxBizJgFactoryInfo
>
factoryInfoList
=
new
ArrayList
<>();
List
<
IdxBizJgOtherInfo
>
otherInfoList
=
new
ArrayList
<>();
List
<
IdxBizJgTechParamsVessel
>
paramsVesselList
=
new
ArrayList
<>();
List
<
IdxBizJgInspectionDetectionInfo
>
inspectionDetectionInfoList
=
new
ArrayList
<>();
List
<
ESEquipmentCategoryDto
>
esEquipmentCategoryList
=
new
ArrayList
<>();
if
(
paramMap
==
null
)
{
throw
new
IllegalArgumentException
(
"参数Map不能为空"
);
}
LinkedHashMap
equipmentClassForm
=
(
LinkedHashMap
)
checkAndCast
(
paramMap
.
get
(
EQUIP_CLASS_FORM_ID
));
LinkedHashMap
attachmentUpload
=
(
LinkedHashMap
)
checkAndCast
(
paramMap
.
get
(
ATTACHMENT_UPLOAD
));
String
equListCode
=
(
String
)
equipmentClassForm
.
get
(
"EQU_LIST"
);
String
equCategoryCode
=
(
String
)
equipmentClassForm
.
get
(
"EQU_CATEGORY"
);
String
equDefineCode
=
(
String
)
equipmentClassForm
.
get
(
"EQU_DEFINE"
);
String
dataSource
=
(
String
)
equipmentClassForm
.
get
(
"DATA_SOURCE"
);
List
<
EquipInfoCylinderExcelDto
>
equipInfoCylinderExcelDtoList
=
JSON
.
parseArray
(
JSON
.
toJSONString
(
attachmentUpload
.
get
(
EQU_LISTS
)),
EquipInfoCylinderExcelDto
.
class
);
Date
date
=
new
Date
();
String
record
=
UUID
.
randomUUID
().
toString
();
equipInfoCylinderExcelDtoList
.
forEach
(
data
->{
List
<
Map
<
String
,
Object
>>
fileDataList
=
(
List
<
Map
<
String
,
Object
>>)(
data
.
getFileData
());
String
productPhoto
=
getUrlByKey
(
fileDataList
,
"PRODUCT_PHOTO"
);
String
otherAccessoriesReg
=
getUrlByKey
(
fileDataList
,
"OTHER_ACCESSORIES_REG"
);
String
designDoc
=
getUrlByKey
(
fileDataList
,
"DESIGN_DOC"
);
String
designStandard
=
getUrlByKey
(
fileDataList
,
"DESIGN_STANDARD"
);
String
otherAccessoriesDes
=
getUrlByKey
(
fileDataList
,
"OTHER_ACCESSORIES_DES"
);
String
productQualityYieldProve
=
getUrlByKey
(
fileDataList
,
"PRODUCT_QUALITY_YIELD_PROVE"
);
String
factoryStandard
=
getUrlByKey
(
fileDataList
,
"FACTORY_STANDARD"
);
String
insUseMaintainExplain
=
getUrlByKey
(
fileDataList
,
"INS_USE_MAINTAIN_EXPLAIN"
);
String
otherAccessoriesFact
=
getUrlByKey
(
fileDataList
,
"OTHER_ACCESSORIES_FACT"
);
String
factSupervisionInspectionReport
=
getUrlByKey
(
fileDataList
,
"FACT_SUPERVISION_INSPECTION_REPORT"
);
//使用信息
IdxBizJgUseInfo
useInfo
=
new
IdxBizJgUseInfo
();
BeanUtils
.
copyProperties
(
data
,
useInfo
);
useInfo
.
setRecord
(
record
);
useInfo
.
setRecDate
(
date
);
useInfo
.
setDataSource
(
dataSource
!=
null
?
dataSource
:
"jg"
);
//区分历史设备和新增设备
useInfo
.
setEquState
(
null
);
useInfo
.
setIsIntoManagement
(
dataSource
!=
null
);
//历史气瓶导入为已纳管设备
// 使用单位信息
if
(
"个人主体"
.
equals
(
company
.
getCompanyType
())){
useInfo
.
setUseUnitCreditCode
(
company
.
getCompanyCode
().
split
(
"_"
)[
1
]);
useInfo
.
setUseUnitName
(
company
.
getCompanyName
().
split
(
"_"
)[
1
]);
}
else
{
useInfo
.
setUseUnitCreditCode
(
company
.
getCompanyCode
());
useInfo
.
setUseUnitName
(
company
.
getCompanyName
());
}
useInfoList
.
add
(
useInfo
);
//设计信息
IdxBizJgDesignInfo
designInfo
=
new
IdxBizJgDesignInfo
();
BeanUtils
.
copyProperties
(
data
,
designInfo
);
designInfo
.
setRecord
(
record
);
designInfo
.
setRecDate
(
date
);
if
(
data
.
getDesignDate
()
!=
null
){
designInfo
.
setDesignDate
(
DateUtil
.
parse
(
data
.
getDesignDate
(),
"yyyy-MM-dd"
));
}
designInfo
.
setDesignDoc
(
designDoc
);
designInfo
.
setDesignStandard
(
designStandard
);
designInfo
.
setOtherAccessoriesDes
(
otherAccessoriesDes
);
designInfoList
.
add
(
designInfo
);
//制造信息
IdxBizJgFactoryInfo
factoryInfo
=
new
IdxBizJgFactoryInfo
();
BeanUtils
.
copyProperties
(
data
,
factoryInfo
);
factoryInfo
.
setRecord
(
record
);
factoryInfo
.
setRecDate
(
date
);
factoryInfo
.
setProductQualityYieldProve
(
productQualityYieldProve
);
factoryInfo
.
setFactoryStandard
(
factoryStandard
);
factoryInfo
.
setInsUseMaintainExplain
(
insUseMaintainExplain
);
factoryInfo
.
setOtherAccessoriesFact
(
otherAccessoriesFact
);
factoryInfo
.
setFactSupervisionInspectionReport
(
factSupervisionInspectionReport
);
factoryInfo
.
setProduceDate
(
DateUtil
.
parse
(
data
.
getProduceDate
(),
"yyyy-MM-dd"
));
factoryInfo
.
setImported
(
Optional
.
ofNullable
(
data
.
getImported
()).
orElse
(
"0"
));
factoryInfoList
.
add
(
factoryInfo
);
//注册登记
IdxBizJgRegisterInfo
registerInfo
=
new
IdxBizJgRegisterInfo
();
BeanUtils
.
copyProperties
(
data
,
registerInfo
);
registerInfo
.
setRecord
(
record
);
registerInfo
.
setRecDate
(
date
);
registerInfo
.
setEquCategory
(
equCategoryCode
);
registerInfo
.
setEquDefine
(
equDefineCode
);
registerInfo
.
setEquList
(
equListCode
);
registerInfo
.
setRegisterState
(
idxBizJgRegisterInfoService
.
getRegCode
());
registerInfo
.
setProductPhoto
(
productPhoto
);
registerInfo
.
setOtherAccessoriesReg
(
otherAccessoriesReg
);
registerInfoList
.
add
(
registerInfo
);
//检验检测
IdxBizJgInspectionDetectionInfo
inspectionDetectionInfo
=
new
IdxBizJgInspectionDetectionInfo
();
BeanUtils
.
copyProperties
(
data
,
inspectionDetectionInfo
);
inspectionDetectionInfo
.
setInspectOrgCode
(
data
.
getInspectOrgCode
());
inspectionDetectionInfo
.
setRecord
(
record
);
inspectionDetectionInfo
.
setRecDate
(
date
);
inspectionDetectionInfo
.
setInspectType
(
"ZZJDJY"
);
inspectionDetectionInfo
.
setInspectConclusion
(
"6040"
);
//默认合格
inspectionDetectionInfo
.
setInspectDate
(
DateUtil
.
parse
(
data
.
getInspectDate
(),
"yyyy-MM-dd"
));
// 根据条件确定增加的年数
inspectionDetectionInfo
.
setNextInspectDate
(
Date
.
from
(
LocalDate
.
parse
(
data
.
getInspectDate
(),
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd"
))
.
plusYears
(
SPECIAL_CYLINDER
.
getCode
().
equals
(
equDefineCode
)
?
3
:
4
)
.
atStartOfDay
(
ZoneId
.
systemDefault
())
.
toInstant
()));
inspectionDetectionInfoList
.
add
(
inspectionDetectionInfo
);
// 其他信息
IdxBizJgOtherInfo
otherInfo
=
new
IdxBizJgOtherInfo
();
BeanUtils
.
copyProperties
(
data
,
otherInfo
);
otherInfo
.
setRecord
(
record
);
otherInfo
.
setRecDate
(
date
);
otherInfoList
.
add
(
otherInfo
);
//技术参数
IdxBizJgTechParamsVessel
paramsVessel
=
new
IdxBizJgTechParamsVessel
();
BeanUtils
.
copyProperties
(
data
,
paramsVessel
);
paramsVessel
.
setRecord
(
record
);
paramsVessel
.
setRecDate
(
date
);
paramsVesselList
.
add
(
paramsVessel
);
ESEquipmentCategoryDto
dto
=
JSON
.
parseObject
(
toJSONString
(
data
),
ESEquipmentCategoryDto
.
class
);
List
<
EquipmentCategory
>
equList
=
commonService
.
getEquipmentCategoryList
(
equListCode
,
null
);
List
<
EquipmentCategory
>
equCategory
=
commonService
.
getEquipmentCategoryList
(
equCategoryCode
,
null
);
List
<
EquipmentCategory
>
equDefine
=
commonService
.
getEquipmentCategoryList
(
equDefineCode
,
null
);
// 使用单位信息
dto
.
setDATA_SOURCE
(
useInfo
.
getDataSource
());
dto
.
setNEXT_INSPECT_DATE
(
inspectionDetectionInfo
.
getNextInspectDate
()
+
""
);
dto
.
setREC_DATE
(
System
.
currentTimeMillis
());
dto
.
setSEQUENCE_NBR
(
record
);
dto
.
setFACTORY_NUM
(
factoryInfo
.
getFactoryNum
());
dto
.
setUSE_INNER_CODE
(
useInfo
.
getUseInnerCode
());
dto
.
setEQU_CATEGORY_CODE
(
equCategoryCode
);
if
(
CollectionUtils
.
isNotEmpty
(
equCategory
))
{
dto
.
setEQU_CATEGORY
(
equCategory
.
get
(
0
).
getName
());
}
dto
.
setEQU_LIST_CODE
(
equListCode
);
if
(
CollectionUtils
.
isNotEmpty
(
equList
))
{
dto
.
setEQU_LIST
(
equList
.
get
(
0
).
getName
());
}
dto
.
setEQU_DEFINE_CODE
(
equDefineCode
);
if
(
CollectionUtils
.
isNotEmpty
(
equDefine
))
{
dto
.
setEQU_DEFINE
(
equDefine
.
get
(
0
).
getName
());
}
// 使用单位信息
if
(
"个人主体"
.
equals
(
company
.
getCompanyType
())){
dto
.
setUSE_UNIT_CREDIT_CODE
(
company
.
getCompanyCode
().
split
(
"_"
)[
1
]);
dto
.
setUSE_UNIT_NAME
(
company
.
getCompanyName
().
split
(
"_"
)[
1
]);
}
else
{
dto
.
setUSE_UNIT_CREDIT_CODE
(
company
.
getCompanyCode
());
dto
.
setUSE_UNIT_NAME
(
company
.
getCompanyName
());
}
esEquipmentCategoryList
.
add
(
dto
);
});
Optional
.
of
(
useInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgUseInfoService:
:
saveBatch
);
Optional
.
of
(
designInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgDesignInfoService:
:
saveBatch
);
Optional
.
of
(
registerInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgRegisterInfoService:
:
saveBatch
);
Optional
.
of
(
factoryInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgFactoryInfoService:
:
saveBatch
);
Optional
.
of
(
otherInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgOtherInfoService:
:
saveBatch
);
Optional
.
of
(
paramsVesselList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgTechParamsVesselService:
:
saveBatch
);
Optional
.
of
(
inspectionDetectionInfoList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
idxBizJgInspectionDetectionInfoService:
:
saveBatch
);
Optional
.
of
(
esEquipmentCategoryList
).
filter
(
list
->
!
list
.
isEmpty
()).
ifPresent
(
esEquipmentCategory:
:
saveAll
);
return
String
.
format
(
"导入完成,成功导入: %d 条数据!"
,
useInfoList
.
size
());
}
public
StringBuilder
checkExcelData
(
EquipInfoCylinderExcelDto
data
,
AnalysisContext
context
)
{
StringBuilder
result
=
new
StringBuilder
();
ReadRowHolder
readRowHolder
=
context
.
readRowHolder
();
int
rowIndex
=
readRowHolder
.
getRowIndex
()
+
1
;
try
{
log
.
info
(
"解析第{}行数据:{}"
,
rowIndex
,
JSON
.
toJSONString
(
data
));
// 检查各字段是否为空,如果为空则追加错误信息
checkNotBlank
(
data
.
getProductName
(),
"设备名称不能为空;"
,
result
);
checkNotBlank
(
data
.
getBrandName
(),
"品牌名称不能为空;"
,
result
);
checkNotBlank
(
data
.
getEquType
(),
"设备型号不能为空;"
,
result
);
checkNotBlank
(
data
.
getUseInnerCode
(),
"单位内部编号不能为空;"
,
result
);
if
(
useInnerCodeList
.
contains
(
data
.
getUseInnerCode
()))
{
result
.
append
(
"单位内部编号不能重复;"
);
}
checkNotBlank
(
data
.
getWhetherVehicleCylinder
(),
"是否车用气瓶不能为空;"
,
result
);
checkNotBlank
(
data
.
getEquCodeType
(),
"是否有设备代码不能为空;"
,
result
);
if
(
"1"
.
equals
(
data
.
getEquCodeType
()))
{
checkNotBlank
(
data
.
getEquCode
(),
"设备代码不能为空;"
,
result
);
String
equCode
=
data
.
getEquCode
();
if
(
equCode
.
matches
(
"[a-zA-Z0-9]+"
))
{
if
(
equCode
.
length
()
<=
17
)
{
result
.
append
(
"设备代码不能小于17位;"
);
}
if
(
equCode
.
length
()
>=
20
)
{
result
.
append
(
"设备代码不能大于20位;"
);
}
}
else
{
result
.
append
(
"设备代码不能包含特殊字符;"
);
}
if
(
equCodeList
.
contains
(
data
.
getEquCode
()))
{
result
.
append
(
"设备代码不能重复;"
);
}
this
.
checkEquCodeUniqueness
(
data
.
getEquCode
(),
result
);
}
else
{
data
.
setEquCode
(
""
);
}
checkNotBlank
(
data
.
getDesignUnitCreditCode
(),
"设计单位统一社会信用代码不能为空;"
,
result
);
checkNotBlank
(
data
.
getDesignUnitName
(),
"设计单位名称不能为空;"
,
result
);
Optional
.
ofNullable
(
data
.
getDesignDate
()).
ifPresent
(
v
->
checkDateFormatCorrect
(
v
,
"设计日期格式不正确;"
,
result
));
Optional
.
ofNullable
(
data
.
getAppraisalDate
()).
ifPresent
(
v
->
checkDateFormatCorrect
(
v
,
"设计文件鉴定日期格式不正确;"
,
result
));
checkNotBlank
(
data
.
getProduceUnitCreditCode
(),
"制造单位统一社会信用代码不能为空;"
,
result
);
checkNotBlank
(
data
.
getProduceUnitName
(),
"制造单位名称不能为空;"
,
result
);
checkNotBlank
(
data
.
getProduceLicenseNum
(),
"制造许可编号不能为空;"
,
result
);
checkNotBlank
(
data
.
getFactoryNum
(),
"出厂编号/产品编码不能为空;"
,
result
);
if
(
"0"
.
equals
(
data
.
getWhetherVehicleCylinder
())
&&
factoryNumList
.
contains
(
data
.
getFactoryNum
()))
result
.
append
(
"出厂编号/产品编码不能重复;"
);
checkFactoryNumUniqueness
(
data
.
getFactoryNum
(),
null
,
result
);
checkNotBlank
(
data
.
getProduceDate
(),
"制造日期不能为空;"
,
result
);
Optional
.
ofNullable
(
data
.
getProduceDate
()).
ifPresent
(
v
->
checkDateFormatCorrect
(
v
,
"制造日期格式不正确;"
,
result
));
checkNotBlank
(
data
.
getInspectOrgName
(),
"检测机构名称不能为空;"
,
result
);
checkNotBlank
(
data
.
getInspectOrgCode
(),
"检测机构代码不能为空;"
,
result
);
checkInspectOrg
(
data
.
getInspectOrgCode
(),
result
);
checkNotBlank
(
data
.
getInspectStaff
(),
"检测人员名称不能为空;"
,
result
);
checkNotBlank
(
data
.
getInspectDate
(),
"检测日期不能为空;"
,
result
);
checkDateFormatCorrect
(
data
.
getInspectDate
(),
"检测日期格式不正确;"
,
result
);
checkNotBlank
(
data
.
getSingleBottleVolume
(),
"单瓶容积不能为空;"
,
result
);
checkNotBlank
(
data
.
getChargingMedium
(),
"充装介质不能为空;"
,
result
);
checkNotBlank
(
data
.
getNominalWorkingPressure
(),
"公称工作压力不能为空;"
,
result
);
// 如果存在错误信息,则抛出 BadRequest 异常
if
(
result
.
length
()
>
0
)
{
result
.
insert
(
0
,
"Excel第["
+
rowIndex
+
"]行 -> "
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
String
.
format
(
"行索引数: [%s] -> 失败的 Excel 数据: [%s]"
,
rowIndex
,
JSON
.
toJSONString
(
data
)),
e
);
throw
e
;
}
return
result
;
}
private
void
checkEquCodeUniqueness
(
String
equCode
,
StringBuilder
result
)
{
// 根据设备代码检查唯一性
LambdaQueryWrapper
<
RegistrationInfo
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
RegistrationInfo:
:
getEquCode
,
equCode
);
Integer
count
=
tzsJgRegistrationInfoMapper
.
selectCount
(
wrapper
);
if
(
count
>
0
)
{
result
.
append
(
"设备代码系统中已存在;"
);
}
}
// 检查上传Excel中的日期格式是否正确
private
void
checkDateFormatCorrect
(
String
date
,
String
errorMessage
,
StringBuilder
result
)
{
if
(!
date
.
matches
(
"\\d{4}-\\d{2}-\\d{2}"
))
{
result
.
append
(
errorMessage
);
}
}
private
void
checkInspectOrg
(
String
inspectOrgCode
,
StringBuilder
result
){
List
<
Map
<
String
,
Object
>>
InspectOrgList
=
commonService
.
getAllInspectionInfo
(
"inspection"
);
if
(
findUseCode
(
InspectOrgList
,
inspectOrgCode
)
==
null
)
{
result
.
append
(
"未查询到该检验机构;"
);
}
}
// 检查字段是否为空,如果为空则追加错误信息到result
private
void
checkNotBlank
(
String
value
,
String
errorMessage
,
StringBuilder
result
)
{
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isBlank
(
value
))
{
result
.
append
(
errorMessage
);
}
}
private
void
checkFactoryNumUniqueness
(
String
factoryNum
,
String
sequenceNbr
,
StringBuilder
result
)
{
// 车用气瓶业务里面的 出厂编号/产品编码 校验唯一性(产品编号在车用气瓶范围内全局唯一)
if
(
commonService
.
checkFactoryNumUniquenessForVehicleCylinder
(
factoryNum
,
sequenceNbr
)
>
0
)
{
result
.
append
(
"出厂编号/产品编码系统中已存在!"
);
}
}
// 注入依赖
private
void
injectDependencies
(
PressureVesselListener
listener
,
Map
<
String
,
Object
>
paramMap
)
{
listener
.
setIdxBizJgRegisterInfoService
(
idxBizJgRegisterInfoService
);
...
...
@@ -2032,4 +2392,12 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
CompanyBo
company
=
reginParams
.
getCompany
();
listener
.
setCompany
(
company
);
}
public
String
findUseCode
(
List
<
Map
<
String
,
Object
>>
unitList
,
String
inspectOrgCode
)
{
Optional
<
Map
<
String
,
Object
>>
optional
=
unitList
.
stream
()
.
filter
(
map
->
map
.
get
(
"useCode"
).
equals
(
inspectOrgCode
))
.
findFirst
();
return
optional
.
map
(
map
->
(
String
)
map
.
get
(
"useCode"
)).
orElse
(
null
);
}
}
\ No newline at end of file
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/JgMaintenanceContractServiceImpl.java
View file @
554ae5ff
...
...
@@ -6,7 +6,6 @@ import com.alibaba.fastjson.JSONArray;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yeejoin.amos.boot.biz.common.bo.CompanyBo
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
...
...
@@ -24,14 +23,10 @@ import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService;
import
com.yeejoin.amos.boot.module.jg.api.service.IJgMaintenanceContractService
;
import
com.yeejoin.amos.boot.module.jg.api.vo.JgMaintenanceContractVo
;
import
com.yeejoin.amos.boot.module.jg.api.vo.SortVo
;
import
com.yeejoin.amos.boot.module.jg.biz.context.EquipUsedCheckStrategyContext
;
import
com.yeejoin.amos.boot.module.jg.biz.dao.ESEquipmentCategory
;
import
com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient
;
import
com.yeejoin.amos.boot.module.jg.biz.service.ICmWorkflowService
;
import
com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgUseInfoService
;
import
com.yeejoin.amos.boot.module.ymt.api.dto.ESEquipmentCategoryDto
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgMaintenanceRecordInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
com.yeejoin.amos.feign.systemctl.model.TaskV2Model
;
...
...
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