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
c5802787
Commit
c5802787
authored
Jun 27, 2025
by
suhuiguang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop_tzs_bugfix' into develop_tzs_register
parents
fb9abf4b
b3dcf0dc
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
660 additions
and
10 deletions
+660
-10
CommonEquipDataProcessService.java
...biz/edit/process/equip/CommonEquipDataProcessService.java
+5
-2
CommonServiceImpl.java
...os/boot/module/jg/biz/service/impl/CommonServiceImpl.java
+1
-0
IdxBizJgProjectContraptionServiceImplService.java
...ce/impl/IdxBizJgProjectContraptionServiceImplService.java
+2
-0
QualificationLevelConverter.java
...module/tcm/api/converter/QualificationLevelConverter.java
+42
-0
QualificationProjectConverter.java
...dule/tcm/api/converter/QualificationProjectConverter.java
+53
-0
CompanyUserImportDto.java
...in/amos/boot/module/tcm/api/dto/CompanyUserImportDto.java
+190
-0
ITzsUserInfoService.java
...amos/boot/module/tcm/api/service/ITzsUserInfoService.java
+8
-0
TzsUserInfoController.java
...boot/module/tcm/biz/controller/TzsUserInfoController.java
+7
-0
TzsUserInfoServiceImpl.java
...t/module/tcm/biz/service/impl/TzsUserInfoServiceImpl.java
+351
-7
TzsUserPermissionServiceImpl.java
...le/tcm/biz/service/impl/TzsUserPermissionServiceImpl.java
+1
-1
No files found.
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/edit/process/equip/CommonEquipDataProcessService.java
View file @
c5802787
...
...
@@ -55,6 +55,8 @@ 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.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.ObjectUtils
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
...
...
@@ -117,8 +119,6 @@ public class CommonEquipDataProcessService {
private
final
RestHighLevelClient
restHighLevelClient
;
private
final
IdxBizJgProjectContraptionServiceImplService
idxBizJgProjectContraptionServiceImpl
;
private
final
JgUseRegistrationServiceImpl
jgUseRegistrationService
;
private
final
CommonServiceImpl
commonService
;
...
...
@@ -142,6 +142,9 @@ public class CommonEquipDataProcessService {
public
static
final
String
BASE_COLUMN_REC_DATE
=
"\"REC_DATE\""
;
public
static
final
String
BASE_COLUMN_REC_USERID
=
"\"REC_USER_ID\""
;
@Autowired
@Lazy
private
IdxBizJgProjectContraptionServiceImplService
idxBizJgProjectContraptionServiceImpl
;
@PostConstruct
public
void
init
()
{
...
...
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/CommonServiceImpl.java
View file @
c5802787
...
...
@@ -288,6 +288,7 @@ public class CommonServiceImpl implements ICommonService {
private
String
qrcodePrefix
;
@Autowired
@Lazy
private
RemindServiceImpl
remindServiceImpl
;
@Autowired
...
...
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/IdxBizJgProjectContraptionServiceImplService.java
View file @
c5802787
...
...
@@ -38,6 +38,7 @@ import lombok.extern.slf4j.Slf4j;
import
lombok.var
;
import
org.apache.commons.io.IOUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.ObjectUtils
;
...
...
@@ -102,6 +103,7 @@ public class IdxBizJgProjectContraptionServiceImplService extends BaseEntityServ
@Autowired
private
TzBaseEnterpriseInfoMapper
tzBaseEnterpriseInfoMapper
;
@Autowired
@Lazy
private
CommonServiceImpl
commonService
;
@Autowired
private
JgVehicleInformationMapper
jgVehicleInformationMapper
;
...
...
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-api/src/main/java/com/yeejoin/amos/boot/module/tcm/api/converter/QualificationLevelConverter.java
0 → 100644
View file @
c5802787
package
com
.
yeejoin
.
amos
.
boot
.
module
.
tcm
.
api
.
converter
;
import
com.alibaba.excel.converters.Converter
;
import
com.alibaba.excel.enums.CellDataTypeEnum
;
import
com.alibaba.excel.metadata.CellData
;
import
com.alibaba.excel.metadata.GlobalConfiguration
;
import
com.alibaba.excel.metadata.property.ExcelContentProperty
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
QualificationLevelConverter
implements
Converter
<
String
>
{
private
static
final
Map
<
String
,
String
>
CODE_MAP
=
new
HashMap
<>();
static
{
CODE_MAP
.
put
(
"检验员"
,
"JYY"
);
CODE_MAP
.
put
(
"检验师"
,
"JYS"
);
CODE_MAP
.
put
(
"高级检验师"
,
"GJJYS"
);
}
@Override
public
Class
supportJavaTypeKey
()
{
return
String
.
class
;
}
@Override
public
CellDataTypeEnum
supportExcelTypeKey
()
{
return
CellDataTypeEnum
.
STRING
;
}
@Override
public
String
convertToJavaData
(
CellData
cellData
,
ExcelContentProperty
contentProperty
,
GlobalConfiguration
globalConfiguration
)
throws
Exception
{
String
cellDataStr
=
cellData
.
getStringValue
();
return
CODE_MAP
.
get
(
cellDataStr
);
}
@Override
public
CellData
convertToExcelData
(
String
value
,
ExcelContentProperty
contentProperty
,
GlobalConfiguration
globalConfiguration
)
throws
Exception
{
return
null
;
}
}
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-api/src/main/java/com/yeejoin/amos/boot/module/tcm/api/converter/QualificationProjectConverter.java
0 → 100644
View file @
c5802787
package
com
.
yeejoin
.
amos
.
boot
.
module
.
tcm
.
api
.
converter
;
import
com.alibaba.excel.converters.Converter
;
import
com.alibaba.excel.enums.CellDataTypeEnum
;
import
com.alibaba.excel.metadata.CellData
;
import
com.alibaba.excel.metadata.GlobalConfiguration
;
import
com.alibaba.excel.metadata.property.ExcelContentProperty
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
QualificationProjectConverter
implements
Converter
<
String
>
{
private
static
final
Map
<
String
,
String
>
CODE_MAP
=
new
HashMap
<>();
static
{
CODE_MAP
.
put
(
"机电类设备检验"
,
"JDG"
);
CODE_MAP
.
put
(
"承压类设备检验"
,
"CYG"
);
CODE_MAP
.
put
(
"大型游乐设施检验"
,
"YLY"
);
CODE_MAP
.
put
(
"型式试验"
,
"CXY"
);
CODE_MAP
.
put
(
"锅炉检验"
,
"GLY"
);
CODE_MAP
.
put
(
"锅炉能效测试"
,
"GNY"
);
CODE_MAP
.
put
(
"锅炉水(介)质检验"
,
"GSY"
);
CODE_MAP
.
put
(
"压力容器检验"
,
"RQY"
);
CODE_MAP
.
put
(
"气瓶检验"
,
"QPY"
);
CODE_MAP
.
put
(
"压力管道检验"
,
"GDY"
);
CODE_MAP
.
put
(
"电梯检验"
,
"DTY"
);
CODE_MAP
.
put
(
"起重机械检验"
,
"QZY"
);
CODE_MAP
.
put
(
"客运索道检验"
,
"SDY"
);
CODE_MAP
.
put
(
"场(厂)内专用机动车辆检验"
,
"CCY"
);
}
@Override
public
Class
supportJavaTypeKey
()
{
return
String
.
class
;
}
@Override
public
CellDataTypeEnum
supportExcelTypeKey
()
{
return
CellDataTypeEnum
.
STRING
;
}
@Override
public
String
convertToJavaData
(
CellData
cellData
,
ExcelContentProperty
contentProperty
,
GlobalConfiguration
globalConfiguration
)
throws
Exception
{
String
cellDataStr
=
cellData
.
getStringValue
();
return
CODE_MAP
.
get
(
cellDataStr
);
}
@Override
public
CellData
convertToExcelData
(
String
value
,
ExcelContentProperty
contentProperty
,
GlobalConfiguration
globalConfiguration
)
throws
Exception
{
return
null
;
}
}
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-api/src/main/java/com/yeejoin/amos/boot/module/tcm/api/dto/CompanyUserImportDto.java
0 → 100644
View file @
c5802787
package
com
.
yeejoin
.
amos
.
boot
.
module
.
tcm
.
api
.
dto
;
import
cn.afterturn.easypoi.excel.annotation.ExcelIgnore
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.alibaba.excel.annotation.format.DateTimeFormat
;
import
com.alibaba.fastjson.JSONArray
;
import
com.yeejoin.amos.boot.module.tcm.api.converter.*
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.util.*
;
@Data
public
class
CompanyUserImportDto
{
@NotBlank
(
message
=
"姓名不能为空!"
)
@ExcelProperty
(
value
=
"姓名"
)
private
String
name
;
@NotBlank
(
message
=
"联系电话不能为空!"
)
@ExcelProperty
(
value
=
"联系电话"
)
private
String
phone
;
@NotBlank
(
message
=
"证件类型不能为空!"
)
@ExcelProperty
(
value
=
"证件类型"
,
converter
=
CertificateTypeConverter
.
class
)
private
String
certificateType
;
@NotBlank
(
message
=
"证件编号不能为空!"
)
@ExcelProperty
(
value
=
"证件编号"
)
private
String
certificateNum
;
@NotBlank
(
message
=
"人员类型不能为空!"
)
// @ExcelProperty(value = "人员类型", converter = PostTypeConverter.class)
@ExcelProperty
(
value
=
"人员类型"
)
private
String
post
;
@ExcelIgnore
private
String
newPost
;
// @ExcelProperty(value = "人员子类型", converter = PostTypeConverter.class)
@ExcelProperty
(
value
=
"人员子类型"
)
private
String
subPost
;
@ExcelProperty
(
value
=
"性别"
,
converter
=
GenderConverter
.
class
)
private
String
gender
;
@ExcelProperty
(
value
=
"出生日期"
)
@DateTimeFormat
(
"yyyy-MM-dd"
)
private
Date
birthday
;
@ExcelProperty
(
value
=
"学历"
,
converter
=
EducationConverter
.
class
)
private
String
education
;
@ExcelProperty
(
value
=
"住址"
)
private
String
address
;
@ExcelProperty
(
value
=
"邮箱"
)
private
String
email
;
@ExcelProperty
(
value
=
"职称"
)
private
String
jobTitle
;
@ExcelProperty
(
value
=
"专业"
)
private
String
speciality
;
@ExcelIgnore
()
private
JSONArray
permissionData66151
=
new
JSONArray
();
@ExcelIgnore
()
private
JSONArray
permissionData66152
=
new
JSONArray
();
@ExcelIgnore
()
private
JSONArray
permissionData6552
=
new
JSONArray
();
/**
* 检验资质信息
*/
@Data
public
static
class
InspectQualification
{
@NotBlank
(
message
=
"证件编号不能为空!"
)
@ExcelProperty
(
value
=
"证件编号"
)
private
String
certificateNum
;
@NotBlank
(
message
=
"发证机关不能为空!"
)
@ExcelProperty
(
value
=
"发证机关"
)
private
String
approvedOrgan
;
@NotBlank
(
message
=
"检验资质级别不能为空!"
)
@ExcelProperty
(
value
=
"级别"
,
converter
=
QualificationLevelConverter
.
class
)
private
String
permissionLevel
;
@NotBlank
(
message
=
"检验资质项目不能为空!"
)
@ExcelProperty
(
value
=
"项目"
,
converter
=
QualificationProjectConverter
.
class
)
private
String
permissionItem
;
@NotBlank
(
message
=
"检验资质发证日期不能为空!"
)
@ExcelProperty
(
value
=
"发证日期"
)
@DateTimeFormat
(
"yyyy-MM-dd"
)
private
String
issueDate
;
@NotBlank
(
message
=
"检验资质有效期不能为空!"
)
@ExcelProperty
(
value
=
"有效期"
)
@DateTimeFormat
(
"yyyy-MM-dd"
)
private
String
expiryDate
;
}
/**
* 检测资质信息
*/
@Data
public
static
class
TestingQualification
{
@NotBlank
(
message
=
"证件编号不能为空!"
)
@ExcelProperty
(
value
=
"证件编号"
)
private
String
certificateNum
;
@NotBlank
(
message
=
"发证机关不能为空!"
)
@ExcelProperty
(
value
=
"发证机关"
)
private
String
approvedOrgan
;
@NotBlank
(
message
=
"检测资质级别不能为空!"
)
@ExcelProperty
(
value
=
"级别"
,
converter
=
QualificationLevelConverter
.
class
)
private
String
permissionLevel
;
@NotBlank
(
message
=
"检测资质项目不能为空!"
)
@ExcelProperty
(
value
=
"项目"
,
converter
=
QualificationProjectConverter
.
class
)
private
String
permissionItem
;
@NotBlank
(
message
=
"检测资质发证日期不能为空!"
)
@ExcelProperty
(
value
=
"发证日期"
)
@DateTimeFormat
(
"yyyy-MM-dd"
)
private
String
issueDate
;
@NotBlank
(
message
=
"检测资质有效期不能为空!"
)
@ExcelProperty
(
value
=
"有效期"
)
@DateTimeFormat
(
"yyyy-MM-dd"
)
private
String
expiryDate
;
}
/**
* 作业人员资质信息
*/
@Data
public
static
class
OperatorQualifications
{
@NotBlank
(
message
=
"作业人员资质证件编号不能为空!"
)
@ExcelProperty
(
value
=
"证件编号"
)
private
String
certificateNum
;
@NotBlank
(
message
=
"作业人员资质发证机关不能为空!"
)
@ExcelProperty
(
value
=
"证书编号"
)
private
String
certNo
;
@NotBlank
(
message
=
"作业人员资质证书类型不能为空!"
)
@ExcelProperty
(
value
=
"发证机关"
)
private
String
approvedOrgan
;
@NotBlank
(
message
=
"作业人员资质证书类型不能为空!"
)
@ExcelProperty
(
value
=
"证书类型"
)
private
String
certType
;
@NotBlank
(
message
=
"作业人员资质作业项目不能为空!"
)
@ExcelProperty
(
value
=
"作业项目"
)
private
String
jobItemStr
;
@ExcelIgnore
private
JSONArray
jobItem
;
@ExcelProperty
(
value
=
"金属焊接操作-项目代号"
)
private
String
JSHJCZItemCode
;
@ExcelProperty
(
value
=
"非金属焊接操作-项目代号"
)
private
String
FJSHJCZItemCode
;
@ExcelProperty
(
value
=
"其他作业项目"
)
private
String
otherItem
;
@NotBlank
(
message
=
"检测资质发证日期不能为空!"
)
@ExcelProperty
(
value
=
"发证日期"
)
@DateTimeFormat
(
"yyyy-MM-dd"
)
private
String
issueDate
;
@NotBlank
(
message
=
"检测资质有效期不能为空!"
)
@ExcelProperty
(
value
=
"有效期"
)
@DateTimeFormat
(
"yyyy-MM-dd"
)
private
String
expiryDate
;
}
}
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-api/src/main/java/com/yeejoin/amos/boot/module/tcm/api/service/ITzsUserInfoService.java
View file @
c5802787
...
...
@@ -85,6 +85,14 @@ public interface ITzsUserInfoService extends IService<TzsUserInfo> {
*/
ResponseModel
<?>
importUserBatch
(
MultipartFile
file
);
/**
* 企业人员导入
*
* @param file 导入的文件
* @return 失败时返回失败信息,提供时返回success
*/
ResponseModel
<?>
importCompanyUser
(
MultipartFile
file
,
ReginParams
reginParams
);
String
deletePersonSubtypeHistoricalData
();
List
<
DataDictionary
>
postByUnitType
(
CompanyBo
company
);
...
...
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/java/com/yeejoin/amos/boot/module/tcm/biz/controller/TzsUserInfoController.java
View file @
c5802787
...
...
@@ -382,6 +382,13 @@ public class TzsUserInfoController extends BaseController {
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/company/import"
)
@ApiOperation
(
value
=
"企业人员导入"
,
httpMethod
=
"POST"
,
notes
=
"企业人员导入"
)
public
ResponseModel
<?>
importCompanyUser
(
@RequestBody
MultipartFile
file
)
{
return
tzsUserInfoService
.
importCompanyUser
(
file
,
getSelectedOrgInfo
());
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/personnelTransferOut"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"人员转出:逻辑删除人员并删除关联的系统账号"
,
notes
=
"人员转出:逻辑删除人员并删除关联的系统账号"
)
public
ResponseModel
<
Boolean
>
personnelTransferOut
(
@RequestParam
(
value
=
"userSeqNbrs"
)
String
userSeqNbrs
)
{
...
...
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/java/com/yeejoin/amos/boot/module/tcm/biz/service/impl/TzsUserInfoServiceImpl.java
View file @
c5802787
...
...
@@ -2,6 +2,11 @@ package com.yeejoin.amos.boot.module.tcm.biz.service.impl;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.ExcelReader
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.alibaba.excel.read.metadata.ReadSheet
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
...
...
@@ -70,7 +75,7 @@ import javax.annotation.PostConstruct;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.ConstraintViolation
;
import
javax.validation.Validator
;
import
java.io.
IOException
;
import
java.io.
*
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -182,6 +187,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
});
return
optionalSortMap
.
orElse
(
null
);
}
/**
* 驼峰转下划线
*
...
...
@@ -202,7 +208,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
@Override
public
Page
<
TzsUserInfoDto
>
page
(
TzsUserInfoDto
dto
,
Page
<
TzsUserInfoDto
>
page
,
String
sort
)
{
public
Page
<
TzsUserInfoDto
>
page
(
TzsUserInfoDto
dto
,
Page
<
TzsUserInfoDto
>
page
,
String
sort
)
{
SortVo
sortMap
=
this
.
sortFieldConversion
(
sort
);
// dto.setMenuTypeUnderPost(menuMap.get(dto.getMenuType()));
Page
<
TzsUserInfoDto
>
tzsUserInfoDtoPage
=
tzsUserInfoMapper
.
selectPageMessage
(
page
,
dto
,
sortMap
);
...
...
@@ -325,9 +331,9 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
// 2:多种单位类型的企业编辑另一种单位类型下的人员
// 监管机构查看所有
List
<
String
>
unitTypeAllPostCode
;
if
(!
reginParams
.
getCompany
().
getCompanyType
().
equals
(
"监管机构"
)){
if
(!
reginParams
.
getCompany
().
getCompanyType
().
equals
(
"监管机构"
))
{
unitTypeAllPostCode
=
this
.
postByUnitType
(
reginParams
.
getCompany
()).
stream
().
map
(
DataDictionary:
:
getCode
).
collect
(
Collectors
.
toList
());
}
else
{
}
else
{
unitTypeAllPostCode
=
this
.
getAllUserType
().
stream
().
map
(
DataDictionary:
:
getCode
).
collect
(
Collectors
.
toList
());
}
Map
<
String
,
Object
>
maps
=
new
HashMap
<>();
...
...
@@ -1339,6 +1345,343 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
return
errors
;
}
/**
* 企业人员导入
*
* @param multipartFile 导入的文件
* @return
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ResponseModel
<?>
importCompanyUser
(
MultipartFile
multipartFile
,
ReginParams
reginParams
)
{
CompanyBo
company
=
reginParams
.
getCompany
();
List
<
CompanyUserImportDto
>
dataList
=
new
ArrayList
<>();
JSONArray
resultError
=
new
JSONArray
();
// 用于手机号唯一判断 key:姓名-身份证号 value :手机号
// key保证数据唯一性
Map
<
String
,
String
>
phoneOnly
=
new
HashMap
<>();
Map
<
String
,
String
>
certificateNumOnly
=
new
HashMap
<>();
try
{
InputStream
inputStream
=
multipartFile
.
getInputStream
();
ExcelReader
excelReader
=
EasyExcel
.
read
(
inputStream
).
build
();
List
<
ReadSheet
>
sheetList
=
excelReader
.
excelExecutor
().
sheetList
();
// 获取所有 sheet
for
(
ReadSheet
readSheet
:
sheetList
)
{
String
sheetName
=
readSheet
.
getSheetName
();
int
sheetNo
=
readSheet
.
getSheetNo
();
// 忽略 sheet页:企业人员录入限制(参考)
if
(
sheetName
.
contains
(
"企业人员录入限制"
))
{
continue
;
}
ArrayList
<
String
>
sheetError
=
new
ArrayList
<>();
// 人员信息 sheet页
if
(
sheetName
.
contains
(
"人员信息"
))
{
EasyExcel
.
read
(
multipartFile
.
getInputStream
(),
CompanyUserImportDto
.
class
,
new
AnalysisEventListener
<
CompanyUserImportDto
>()
{
@Override
public
void
invoke
(
CompanyUserImportDto
data
,
AnalysisContext
context
)
{
companyUserCheckField
(
sheetError
,
sheetName
,
dataList
,
data
,
context
.
readRowHolder
().
getRowIndex
()
+
1
,
phoneOnly
,
certificateNumOnly
,
company
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
if
(!
ValidationUtil
.
isEmpty
(
sheetError
))
{
resultError
.
add
(
sheetError
);
}
}
}).
headRowNumber
(
2
).
sheet
(
sheetNo
,
sheetName
).
doRead
();
}
// 检验资质信息 sheet页
if
(
sheetName
.
contains
(
"检验资质信息"
))
{
EasyExcel
.
read
(
multipartFile
.
getInputStream
(),
CompanyUserImportDto
.
InspectQualification
.
class
,
new
AnalysisEventListener
<
CompanyUserImportDto
.
InspectQualification
>()
{
@Override
public
void
invoke
(
CompanyUserImportDto
.
InspectQualification
data
,
AnalysisContext
context
)
{
companyUserInspectCheckField
(
sheetError
,
sheetName
,
dataList
,
data
,
context
.
readRowHolder
().
getRowIndex
()
+
1
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
if
(!
ValidationUtil
.
isEmpty
(
sheetError
))
{
resultError
.
add
(
sheetError
);
}
}
}).
headRowNumber
(
2
).
sheet
(
sheetNo
,
sheetName
).
doRead
();
}
// 检测资质信息 sheet页
if
(
sheetName
.
contains
(
"检测资质信息"
))
{
EasyExcel
.
read
(
multipartFile
.
getInputStream
(),
CompanyUserImportDto
.
TestingQualification
.
class
,
new
AnalysisEventListener
<
CompanyUserImportDto
.
TestingQualification
>()
{
@Override
public
void
invoke
(
CompanyUserImportDto
.
TestingQualification
data
,
AnalysisContext
context
)
{
companyUserTestCheckField
(
sheetError
,
sheetName
,
dataList
,
data
,
context
.
readRowHolder
().
getRowIndex
()
+
1
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
if
(!
ValidationUtil
.
isEmpty
(
sheetError
))
{
resultError
.
add
(
sheetError
);
}
}
}).
headRowNumber
(
2
).
sheet
(
sheetNo
,
sheetName
).
doRead
();
}
// 作业人员资质信息 sheet页
if
(
sheetName
.
contains
(
"作业人员资质信息"
))
{
EasyExcel
.
read
(
multipartFile
.
getInputStream
(),
CompanyUserImportDto
.
OperatorQualifications
.
class
,
new
AnalysisEventListener
<
CompanyUserImportDto
.
OperatorQualifications
>()
{
@Override
public
void
invoke
(
CompanyUserImportDto
.
OperatorQualifications
data
,
AnalysisContext
context
)
{
companyUserOperatorQuaCheckField
(
sheetError
,
sheetName
,
dataList
,
data
,
context
.
readRowHolder
().
getRowIndex
()
+
1
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
if
(!
ValidationUtil
.
isEmpty
(
sheetError
))
{
resultError
.
add
(
sheetError
);
}
}
}).
headRowNumber
(
2
).
sheet
(
sheetNo
,
sheetName
).
doRead
();
}
}
// 存在检验不通过的数据则返回错误信息,不在向下写入库
if
(!
resultError
.
isEmpty
())
{
return
ResponseHelper
.
buildResponse
(
resultError
);
}
// 3.数据入库
dataList
.
forEach
(
data
->
{
TzsUserInfoDto
dto
=
new
TzsUserInfoDto
();
BeanUtils
.
copyProperties
(
data
,
dto
);
this
.
saveUserInfo
(
dto
);
});
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
return
ResponseHelper
.
buildResponse
(
"success"
);
}
private
void
companyUserCheckField
(
ArrayList
<
String
>
sheetError
,
String
sheetName
,
List
<
CompanyUserImportDto
>
dataList
,
CompanyUserImportDto
userItems
,
int
excelRowNum
,
Map
<
String
,
String
>
phoneOnly
,
Map
<
String
,
String
>
certificateNumOnly
,
CompanyBo
company
)
{
ArrayList
<
String
>
errors
=
new
ArrayList
<>();
// 1.必输校验
Set
<
ConstraintViolation
<
CompanyUserImportDto
>>
violations
=
validator
.
validate
(
userItems
);
for
(
ConstraintViolation
<
CompanyUserImportDto
>
violation
:
violations
)
{
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
violation
.
getMessage
());
}
// 2.手机号重复检验,手机号在本单位下唯一
String
key
=
userItems
.
getName
()
+
"-"
+
userItems
.
getCertificateNum
();
// 2.1 当前上传数据比较
if
(!
ValidationUtil
.
isEmpty
(
phoneOnly
.
get
(
key
)))
{
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
"手机号与"
+
key
+
"重复"
);
}
else
if
(!
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
TzsUserInfo
>()
.
select
(
TzsUserInfo:
:
getSequenceNbr
)
.
eq
(
TzsUserInfo:
:
getPhone
,
userItems
.
getPhone
())
.
eq
(
TzsUserInfo:
:
getUnitCode
,
company
.
getCompanyCode
())
.
eq
(
TzsUserInfo:
:
getIsDelete
,
Boolean
.
FALSE
)).
isEmpty
())
{
//2.2 本单位人员比较
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
"手机号已经绑定本单位人员"
);
}
else
{
phoneOnly
.
put
(
key
,
userItems
.
getPhone
());
}
// 3.身份证重复检验,身份证在本单位下唯一
// 3.1 当前上传数据比较
if
(!
ValidationUtil
.
isEmpty
(
certificateNumOnly
.
get
(
userItems
.
getCertificateNum
())))
{
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
"证件编号与"
+
userItems
.
getName
()
+
"重复"
);
}
else
if
(!
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
TzsUserInfo
>()
.
select
(
TzsUserInfo:
:
getSequenceNbr
)
.
eq
(
TzsUserInfo:
:
getCertificateNum
,
userItems
.
getCertificateNum
())
.
eq
(
TzsUserInfo:
:
getUnitCode
,
company
.
getCompanyCode
())
.
eq
(
TzsUserInfo:
:
getIsDelete
,
Boolean
.
FALSE
)).
isEmpty
())
{
//2.2 本单位人员比较
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
"证件编号已经绑定本单位人员"
);
}
else
{
certificateNumOnly
.
put
(
userItems
.
getCertificateNum
(),
userItems
.
getName
());
}
// 4.登录账号的单位类型和人员类型校验
Map
<
String
,
String
>
allPostNames
=
this
.
postByUnitType
(
company
).
stream
().
collect
(
Collectors
.
toMap
(
DataDictionary:
:
getName
,
DataDictionary:
:
getCode
));
String
postNameStr
=
userItems
.
getPost
();
if
(!
ValidationUtil
.
isEmpty
(
postNameStr
))
{
List
<
String
>
postNameList
=
Arrays
.
asList
(
postNameStr
.
replace
(
","
,
","
).
replace
(
"-"
,
","
).
split
(
","
));
// postNameList 中,不存在于 allPostNames 中的元素
List
<
String
>
notExistPosts
=
postNameList
.
stream
()
.
filter
(
p
->
!
allPostNames
.
containsKey
(
p
))
.
collect
(
Collectors
.
toList
());
if
(!
notExistPosts
.
isEmpty
())
{
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
"不可以录入以下人员类型的数据:"
+
String
.
join
(
","
,
notExistPosts
));
}
// 人员类型为:"质量保证体系人员", "设计人员", "检查人员"时候,子类型为必填
List
<
String
>
mustHasSub
=
Arrays
.
asList
(
"质量保证体系人员"
,
"设计人员"
,
"检查人员"
,
"作业人员"
);
List
<
String
>
mustPost
=
postNameList
.
stream
().
filter
(
mustHasSub:
:
contains
).
collect
(
Collectors
.
toList
());
if
(!
mustPost
.
isEmpty
()
&&
ValidationUtil
.
isEmpty
(
userItems
.
getSubPost
()))
{
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
"以下人员类型必须包含对应子类型:"
+
String
.
join
(
","
,
mustPost
));
}
// 转化post
userItems
.
setNewPost
(
new
JSONArray
(
postNameList
.
stream
().
map
(
allPostNames:
:
get
).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
())).
toString
());
postNameList
.
forEach
(
postName
->
{
// 5.人员类型和人员子类型的匹配
String
subPost
=
userItems
.
getSubPost
();
if
(!
ValidationUtil
.
isEmpty
(
subPost
))
{
String
subPostStr
=
subPost
.
replace
(
","
,
","
).
replace
(
"-"
,
","
);
List
<
String
>
subPostList
=
Arrays
.
asList
(
subPostStr
.
split
(
","
));
String
postCode
=
this
.
postByUnitType
(
company
).
stream
().
filter
(
item
->
item
.
getName
().
equals
(
postName
)).
map
(
DataDictionary:
:
getCode
).
findFirst
().
orElse
(
""
);
Map
<
String
,
String
>
allSubPostNames
=
this
.
subPostByUnitType
(
company
,
postCode
).
stream
().
collect
(
Collectors
.
toMap
(
DataDictionary:
:
getName
,
DataDictionary:
:
getCode
));
if
(
ValidationUtil
.
isEmpty
(
allSubPostNames
))
{
return
;
}
// postList 中,不存在于 allPostNames 中的元素
List
<
String
>
notExistSubPosts
=
subPostList
.
stream
()
.
filter
(
p
->
!
allSubPostNames
.
containsKey
(
p
))
.
collect
(
Collectors
.
toList
());
if
(!
notExistSubPosts
.
isEmpty
())
{
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
"不可以录入以下人员类型的数据:"
+
String
.
join
(
","
,
notExistSubPosts
));
}
// 转化subPost
userItems
.
setSubPost
(
subPostList
.
stream
().
map
(
allSubPostNames:
:
get
).
collect
(
Collectors
.
joining
(
","
)));
}
});
}
if
(!
errors
.
isEmpty
())
{
sheetError
.
add
(
sheetName
+
"sheet页,"
+
errors
);
}
// 汇总用户信息
dataList
.
add
(
userItems
);
}
/**
* 检验资质信息
*/
private
void
companyUserInspectCheckField
(
ArrayList
<
String
>
sheetError
,
String
sheetName
,
List
<
CompanyUserImportDto
>
dataList
,
CompanyUserImportDto
.
InspectQualification
inspectItem
,
int
excelRowNum
)
{
ArrayList
<
String
>
errors
=
new
ArrayList
<>();
// 1.必输校验
Set
<
ConstraintViolation
<
CompanyUserImportDto
.
InspectQualification
>>
violations
=
validator
.
validate
(
inspectItem
);
for
(
ConstraintViolation
<
CompanyUserImportDto
.
InspectQualification
>
violation
:
violations
)
{
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
violation
.
getMessage
());
}
if
(!
errors
.
isEmpty
())
{
sheetError
.
add
(
sheetName
+
"sheet页,"
+
errors
);
}
if
(!
ValidationUtil
.
isEmpty
(
inspectItem
.
getCertificateNum
()))
{
dataList
.
forEach
(
data
->
{
if
(!
ValidationUtil
.
isEmpty
(
data
.
getCertificateNum
())
&&
data
.
getCertificateNum
().
equals
(
inspectItem
.
getCertificateNum
()))
{
JSONArray
permissionData66151
=
data
.
getPermissionData66151
();
permissionData66151
.
add
(
inspectItem
);
data
.
setPermissionData66151
(
permissionData66151
);
}
});
}
}
/**
* 检测资质信息
*/
private
void
companyUserTestCheckField
(
ArrayList
<
String
>
sheetError
,
String
sheetName
,
List
<
CompanyUserImportDto
>
dataList
,
CompanyUserImportDto
.
TestingQualification
testQua
,
int
excelRowNum
)
{
ArrayList
<
String
>
errors
=
new
ArrayList
<>();
// 1.必输校验
Set
<
ConstraintViolation
<
CompanyUserImportDto
.
TestingQualification
>>
violations
=
validator
.
validate
(
testQua
);
for
(
ConstraintViolation
<
CompanyUserImportDto
.
TestingQualification
>
violation
:
violations
)
{
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
violation
.
getMessage
());
}
if
(!
errors
.
isEmpty
())
{
sheetError
.
add
(
sheetName
+
"sheet页,"
+
errors
);
}
if
(!
ValidationUtil
.
isEmpty
(
testQua
.
getCertificateNum
()))
{
dataList
.
forEach
(
data
->
{
if
(!
ValidationUtil
.
isEmpty
(
data
.
getCertificateNum
())
&&
data
.
getCertificateNum
().
equals
(
testQua
.
getCertificateNum
()))
{
JSONArray
permissionData66152
=
data
.
getPermissionData66152
();
permissionData66152
.
add
(
testQua
);
data
.
setPermissionData66152
(
permissionData66152
);
}
});
}
}
/**
* 作业人员资质信息
*/
private
void
companyUserOperatorQuaCheckField
(
ArrayList
<
String
>
sheetError
,
String
sheetName
,
List
<
CompanyUserImportDto
>
dataList
,
CompanyUserImportDto
.
OperatorQualifications
OperatorQua
,
int
excelRowNum
)
{
ArrayList
<
String
>
errors
=
new
ArrayList
<>();
// 1.必输校验
Set
<
ConstraintViolation
<
CompanyUserImportDto
.
OperatorQualifications
>>
violations
=
validator
.
validate
(
OperatorQua
);
for
(
ConstraintViolation
<
CompanyUserImportDto
.
OperatorQualifications
>
violation
:
violations
)
{
errors
.
add
(
"第"
+
excelRowNum
+
"行,错误信息->"
+
violation
.
getMessage
());
}
if
(!
errors
.
isEmpty
())
{
sheetError
.
add
(
sheetName
+
"sheet页,"
+
errors
);
}
if
(!
ValidationUtil
.
isEmpty
(
OperatorQua
.
getCertificateNum
()))
{
dataList
.
forEach
(
data
->
{
if
(!
ValidationUtil
.
isEmpty
(
data
.
getCertificateNum
())
&&
data
.
getCertificateNum
().
equals
(
OperatorQua
.
getCertificateNum
()))
{
JSONArray
permissionData6552
=
data
.
getPermissionData6552
();
JSONArray
objects
=
new
JSONArray
();
objects
.
add
(
OperatorQua
.
getJobItemStr
());
OperatorQua
.
setJobItem
(
objects
);
permissionData6552
.
add
(
OperatorQua
);
data
.
setPermissionData6552
(
permissionData6552
);
}
});
}
}
// private Map<Long, CompanyUserImportDto> saveCompanyUserImportData2Db(Set<CompanyUserImportDto> userSet) {
// List<TzsUserInfo> userInfos = userSet.parallelStream().map(dto -> {
// TzsUserInfo userInfo = new TzsUserInfo();
// userInfo.setRecUserId(RequestContext.getExeUserId());
// userInfo.setRecDate(new Date());
// userInfo.setName(dto.getName());
// userInfo.setSequenceNbr(dto.getSeq());
// userInfo.setGender(dto.getGender());
// userInfo.setEmail(dto.getEmail());
// userInfo.setPhone(dto.getPhone());
// userInfo.setAddress(dto.getAddress());
// Set<String> postSet = dto.getUnitTypePostMap().values().stream().flatMap(Collection::stream).collect(Collectors.toSet());
// // TODO 无资质导入,默认post = newPost
// userInfo.setPost(JSON.toJSONString(postSet));
// // TODO 无资质导入,默认post = newPost
// userInfo.setNewPost(JSON.toJSONString(postSet));
// String postName = this.setPostName(userInfo.getNewPost());
// userInfo.setPostName(postName);
// userInfo.setBirthday(dto.getBirthday());
// userInfo.setEducation(dto.getEducation());
// userInfo.setSpeciality(dto.getSpeciality());
// userInfo.setUnitName(dto.getUnitName());
// userInfo.setCertificateNum(dto.getCertificateNum());
// userInfo.setCertificateType(dto.getCertificateType());
// userInfo.setIsDelete(false);
// userInfo.setLockStatus(UNLOCK);
// userInfo.setUnitCode(dto.getUnitCode());
// userInfo.setEquipType(dto.getEquipType());
// userInfo.setJobTitle(dto.getJobTitle());
// userInfo.setEquipType(JSON.toJSONString(dto.getEquipTypeList()));
// return userInfo;
// }).collect(Collectors.toList());
// super.saveOrUpdateBatch(userInfos);
// return userInfos.stream().collect(Collectors.toMap(BaseEntity::getSequenceNbr, Function.identity()));
// }
private
void
createAmosUserWithCompanyImport
(
Map
<
Long
,
TzsUserInfo
>
userInfoMap
,
Set
<
UserImportDto
>
userSet
)
{
// 1.公共数据处理
// 1.1公司缓存
Map
<
String
,
CompanyModel
>
companyCodeCompanyMap
=
new
ConcurrentHashMap
<>();
Map
<
Long
,
UserImportDto
>
userSeqImportDataMap
=
userSet
.
stream
().
collect
(
Collectors
.
toMap
(
UserImportDto:
:
getSeq
,
Function
.
identity
()));
// 1.2单位类型下角色缓存
List
<
DataDictionary
>
unitTypeList
=
regUnitInfoService
.
setAndGetUnitTypeList
();
Map
<
String
,
DataDictionary
>
dataDictionaryMap
=
unitTypeList
.
stream
().
collect
(
Collectors
.
toMap
(
DataDictionary:
:
getName
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
// 1.3通用角色-普通用户处理
List
<
RoleModel
>
allRoleList
=
getCommonRoleModels
();
// 2.用户创建
// 2.1创建前检验-单位类型是否合法(用户的单位类型不能大于所在公司的注册时的单位类型)
userInfoMap
.
forEach
((
k
,
v
)
->
{
checkOneUser
(
v
,
userSeqImportDataMap
.
get
(
k
),
companyCodeCompanyMap
);
});
// 2.2创建
userInfoMap
.
forEach
((
k
,
v
)
->
{
createOneUser
(
v
,
userSeqImportDataMap
.
get
(
k
),
companyCodeCompanyMap
,
dataDictionaryMap
,
allRoleList
);
});
// 3.绑定用户到用户组
this
.
bindUserToGroup
(
userInfoMap
.
values
());
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ResponseModel
<?>
importUserBatch
(
MultipartFile
multipartFile
)
{
...
...
@@ -1705,7 +2048,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
@Override
public
List
<
DataDictionary
>
postByUnitType
(
CompanyBo
company
)
{
ArrayList
<
String
>
postDictCodeList
=
new
ArrayList
<>();
if
(
company
.
getCompanyType
().
equals
(
"监管机构"
)){
if
(
company
.
getCompanyType
().
equals
(
"监管机构"
))
{
return
this
.
getAllUserType
();
}
TzBaseEnterpriseInfo
enterpriseInfo
=
baseEnterpriseInfoService
.
lambdaQuery
()
...
...
@@ -1730,8 +2073,9 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
/**
* 根据单位类型和父类型查询对应的人员类型子类型
* * 接口用于人员详情界面 企业 + 监管单位 都会看到
* @param company 登录人公司信息
* * 接口用于人员详情界面 企业 + 监管单位 都会看到
*
* @param company 登录人公司信息
* @param parentCode 父人员类型code
* @return result
*/
...
...
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/java/com/yeejoin/amos/boot/module/tcm/biz/service/impl/TzsUserPermissionServiceImpl.java
View file @
c5802787
...
...
@@ -109,7 +109,7 @@ public class TzsUserPermissionServiceImpl extends BaseService<TzsUserPermissionD
JSONArray
permissionData6552
=
userInfoDto
.
getPermissionData6552
();
if
(!
ValidationUtil
.
isEmpty
(
permissionData6552
))
{
permissionData6552
.
forEach
(
item
->
{
JSONObject
itempermissionData6552
=
(
JSONObject
)
item
;
JSONObject
itempermissionData6552
=
JSONObject
.
parseObject
(
JSON
.
toJSONString
(
item
))
;
// 前端无法处理后端手动判断
// 作业项目中含有【金属焊接操作】,则【金属焊接操作-项目代号】必填
// 作业项目中含有【非金属焊接操作】,则【非金属焊接操作-项目代号】必填
...
...
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