Commit 91853405 authored by 韩桐桐's avatar 韩桐桐

fix(tcm):人员添加,修改,详情接口修改

parent 44ebdfec
package com.yeejoin.amos.boot.module.common.api.dto;
import com.alibaba.fastjson.JSONArray;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
......@@ -54,6 +56,9 @@ public class TzsUserPermissionDto extends BaseDto {
@ApiModelProperty(value = "作业项目")
private String jobItem;
@ApiModelProperty("项目代号")
private JSONArray itemCode;
@ApiModelProperty(value = "其他作业项目")
private String otherItem;
......
......@@ -2,11 +2,11 @@ package com.yeejoin.amos.boot.module.common.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.entity.BaseRelationEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
......@@ -30,13 +30,13 @@ public class TzsUserPermission extends BaseRelationEntity {
private Long userSeq;
/**
* 检验专用-级别
* 检验检测专用-级别
*/
@TableField("permission_level")
private String permissionLevel;
/**
* 检验专用-资质项目
* 检验检测专用-资质项目
*/
@TableField("permission_item")
private String permissionItem;
......@@ -90,6 +90,12 @@ public class TzsUserPermission extends BaseRelationEntity {
private String jobItem;
/**
* 项目代号,多个用逗号分割
*/
@TableField("item_code")
private String itemCode;
/**
* 其他作业项目
*/
@TableField("other_item")
......
package com.yeejoin.amos.boot.module.tcm.api.dto;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -34,6 +33,9 @@ public class TzsUserInfoDto extends BaseDto {
@ApiModelProperty(value = "岗位")
private String post;
@ApiModelProperty("新岗位(后期post迁移数组至此)")
private String newPost;
@ApiModelProperty(value = "岗位名称")
private String postName;
......@@ -102,4 +104,10 @@ public class TzsUserInfoDto extends BaseDto {
@ApiModelProperty(value = "检测资质json,固定前缀permissionData,入库时数据存放到permissionData")
private JSONArray permissionData66152;
@ApiModelProperty(value = "作业人员资质信息json,固定前缀permissionData,入库时数据存放到permissionData")
private JSONArray permissionData6552;
@ApiModelProperty(value = "职称")
private String jobTitle;
}
......@@ -53,6 +53,12 @@ public class TzsUserInfo extends BaseEntity {
private String post;
/**
* 新岗位(后期post迁移数组至此)
*/
@TableField("new_post")
private String newPost;
/**
* 岗位名称
*/
@TableField("post_name")
......@@ -183,4 +189,10 @@ public class TzsUserInfo extends BaseEntity {
@TableField(value = "permission_data")
private String permissionData;
/**
* 职称
*/
@TableField(value = "job_title")
private String jobTitle;
}
......@@ -145,4 +145,9 @@ public class TzsUserInfoVo {
* */
private String companyType;
/**
* 职称
*/
private String jobTitle;
}
......@@ -214,15 +214,15 @@
<select id="getUserTypeList" resultType="java.util.Map">
SELECT
*
*
FROM
"cb_data_dictionary"
"cb_data_dictionary"
WHERE
type in
is_delete = false
and type in
<foreach collection="typeList" separator="," item="type" open="(" close=")">
#{type}
</foreach>
</select>
<select id="selectCompanyTypeById" resultType="java.lang.String">
......
......@@ -2,8 +2,6 @@ package com.yeejoin.amos.boot.module.tcm.biz.controller;
import com.alibaba.fastjson.JSON;
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.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
......@@ -17,8 +15,6 @@ import com.yeejoin.amos.boot.module.tcm.api.dto.TzIndividualityDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.TzsEquipListDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.tcm.api.enums.TwoStipulateGroupEnum;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserInfoMapper;
import com.yeejoin.amos.boot.module.tcm.api.service.ITzsUserInfoService;
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.TzsUserInfoServiceImpl;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
......@@ -36,7 +32,10 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@RestController
@Api(tags = "用户信息Api")
......@@ -50,9 +49,6 @@ public class TzsUserInfoController extends BaseController {
private ITzsUserInfoService tzsUserInfoService;
@Autowired
private TzsUserInfoMapper tzsUserInfoMapper;
@Autowired
RedisUtils redisUtils;
private static final String REGULATOR_UNIT_TREE = "REGULATOR_UNIT_TREE";
......@@ -61,52 +57,10 @@ public class TzsUserInfoController extends BaseController {
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增人员信息", notes = "新增人员信息")
public ResponseModel<TzsUserInfoDto> save(@RequestBody JSONObject map) {
Map<String, Object> userInfo = (Map<String, Object>)map.get("userInfo");
Map<String, Object> userInfo = (Map<String, Object>) map.get("userInfo");
TzsUserInfoDto tzsUserInfo = JSON.parseObject(JSON.toJSONString(userInfo), TzsUserInfoDto.class);
LambdaQueryWrapper<TzsUserInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TzsUserInfo::getCertificateType,tzsUserInfo.getCertificateType());
queryWrapper.eq(TzsUserInfo::getCertificateNum,tzsUserInfo.getCertificateNum());
queryWrapper.eq(TzsUserInfo::getIsDelete, false);
TzsUserInfo certificateNum = tzsUserInfoMapper.selectOne(queryWrapper);
if(!ObjectUtils.isEmpty(certificateNum)){
throw new BadRequest("证件号码重复,请核对!");
}
LambdaQueryWrapper<TzsUserInfo> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(TzsUserInfo::getPhone,tzsUserInfo.getPhone());
queryWrapper1.eq(TzsUserInfo::getIsDelete, false);
TzsUserInfo phone = tzsUserInfoMapper.selectOne(queryWrapper1);
if(!ObjectUtils.isEmpty(phone)){
throw new BadRequest("联系电话重复,请核对!");
}
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if (ObjectUtils.isEmpty(reginParams)) {
return null;
}
CompanyBo companyModel = reginParams.getCompany();
if(ObjectUtils.isEmpty(companyModel)){
throw new BadRequest("未指定人员归属单位信息");
}
tzsUserInfo.setUnitName(companyModel.getCompanyName());
tzsUserInfo.setUnitCode(companyModel.getCompanyCode());
tzsUserInfo.setAppointDoc(tzsUserInfo.getAppointDoc());
tzsUserInfo.setRecDate(new Date());
// 兼容前端只传一个值,并且非json类型的情况
tzsUserInfo.setPost(tzsUserInfoServiceImpl.isJSONValid(tzsUserInfo.getPost()) ? tzsUserInfo.getPost() : "[\"" + tzsUserInfo.getPost() + "\"]");
tzsUserInfo.setPostName(tzsUserInfoServiceImpl.setPostName(tzsUserInfo.getPost()));
this.setPermissionData(tzsUserInfo);
tzsUserInfo = tzsUserInfoServiceImpl.createWithModel(tzsUserInfo);
return ResponseHelper.buildResponse(tzsUserInfo);
}
private void setPermissionData(TzsUserInfoDto tzsUserInfo) {
// 所有资质数据都存放到一个json字段,key为"permissionData+{人员类型},value为资质
JSONObject data = new JSONObject();
data.put("permissionData66151",tzsUserInfo.getPermissionData66151());
data.put("permissionData66152",tzsUserInfo.getPermissionData66152());
tzsUserInfo.setPermissionData(data.toJSONString());
TzsUserInfoDto userInfoDto = tzsUserInfoServiceImpl.saveUserInfo(tzsUserInfo);
return ResponseHelper.buildResponse(userInfoDto);
}
......@@ -114,72 +68,14 @@ public class TzsUserInfoController extends BaseController {
@PostMapping(value = "/update")
@ApiOperation(httpMethod = "POST", value = "修改人员信息", notes = "修改人员信息")
public ResponseModel<TzsUserInfoDto> update(@RequestBody JSONObject map,
@RequestParam Long rowId) {
Map<String, Object> userInfo = (Map<String, Object>)map.get("userInfo");
@RequestParam Long rowId) {
Map<String, Object> userInfo = (Map<String, Object>) map.get("userInfo");
TzsUserInfoDto tzsUserInfoDto = JSON.parseObject(JSON.toJSONString(userInfo), TzsUserInfoDto.class);
LambdaQueryWrapper<TzsUserInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TzsUserInfo::getCertificateType,tzsUserInfoDto.getCertificateType());
queryWrapper.eq(TzsUserInfo::getCertificateNum,tzsUserInfoDto.getCertificateNum());
queryWrapper.ne(TzsUserInfo::getSequenceNbr,rowId);
queryWrapper.eq(TzsUserInfo::getIsDelete, false);
TzsUserInfo certificateNum = tzsUserInfoMapper.selectOne(queryWrapper);
if(!ObjectUtils.isEmpty(certificateNum)){
throw new BadRequest("证件号码重复,请核对!");
}
LambdaQueryWrapper<TzsUserInfo> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(TzsUserInfo::getPhone,tzsUserInfoDto.getPhone());
queryWrapper1.ne(TzsUserInfo::getSequenceNbr,rowId);
queryWrapper1.eq(TzsUserInfo::getIsDelete, false);
TzsUserInfo phone = tzsUserInfoMapper.selectOne(queryWrapper1);
if(!ObjectUtils.isEmpty(phone)){
throw new BadRequest("联系电话重复,请核对!");
}
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if (ObjectUtils.isEmpty(reginParams)) {
return null;
}
CompanyBo companyModel = reginParams.getCompany();
if(ObjectUtils.isEmpty(companyModel)){
throw new BadRequest("未指定人员归属单位信息");
}
//删除人员与组的关系
QueryWrapper<TzsUserInfo> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("sequence_nbr",rowId);
queryWrapper2.eq("is_delete",false);
TzsUserInfo selectOne = tzsUserInfoMapper.selectOne(queryWrapper2);
if(!ObjectUtils.isEmpty(selectOne.getAmosUserId())){
tzsUserInfoServiceImpl.deleteGroupAndPersonRelation(selectOne.getPostName(),selectOne.getAmosUserId());
}
tzsUserInfoDto.setUnitName(companyModel.getCompanyName());
tzsUserInfoDto.setUnitCode(companyModel.getCompanyCode());
tzsUserInfoDto.setSequenceNbr(rowId);
tzsUserInfoDto.setRecDate(new Date());
// 兼容前端只传一个值,并且非json类型的情况
tzsUserInfoDto.setPost(tzsUserInfoServiceImpl.isJSONValid(tzsUserInfoDto.getPost()) ? tzsUserInfoDto.getPost() : "[\"" + tzsUserInfoDto.getPost() + "\"]");
String postName = tzsUserInfoServiceImpl.setPostName(tzsUserInfoDto.getPost());
tzsUserInfoDto.setPostName(postName);
if(!ObjectUtils.isEmpty(selectOne.getAmosUserId())){
// 添加新的人员与组的关系
String[] split = postName.split(",");
List<String> ids = new ArrayList<>();
ids.add(selectOne.getAmosUserId());
for (String s : split) {
if(!ObjectUtils.isEmpty(TwoStipulateGroupEnum.getId.get(s))){
Privilege.groupUserClient.create(TwoStipulateGroupEnum.getId.get(s), ids);
}
}
}
this.setPermissionData(tzsUserInfoDto);
tzsUserInfoServiceImpl.updateWithModel(tzsUserInfoDto);
return ResponseHelper.buildResponse(tzsUserInfoDto);
TzsUserInfoDto userInfoDto = tzsUserInfoServiceImpl.updateUserInfo(rowId, tzsUserInfoDto);
return ResponseHelper.buildResponse(userInfoDto);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/deleteBatch")
@ApiOperation(httpMethod = "POST", value = "批量删除", notes = "批量删除")
......@@ -224,18 +120,17 @@ public class TzsUserInfoController extends BaseController {
return null;
}
CompanyBo company = reginParams.getCompany();
if(ObjectUtils.isEmpty(company)){
if (ObjectUtils.isEmpty(company)) {
throw new BadRequest("未指定人员归属单位信息");
}
dto.setUnitCode(company.getCompanyCode());
Page<TzsUserInfoDto> page = new Page<>();
page.setCurrent(Long.parseLong(current));
page.setSize(Long.parseLong(size));
return ResponseHelper.buildResponse(tzsUserInfoService.page(dto,page));
return ResponseHelper.buildResponse(tzsUserInfoService.page(dto, page));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/createUnitPerson")
@ApiOperation(httpMethod = "GET", value = "给单位历史管理员添加两员配备默认数据", notes = "给单位历史管理员添加两员配备默认数据")
......@@ -268,9 +163,9 @@ public class TzsUserInfoController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/arrangement-statistic")
@ApiOperation(httpMethod = "GET", value = "两员配备说明统计", notes = "两员配备说明统计")
public ResponseModel<Map<String,Integer>> arrangementStatistic() {
List<CompanyModel> companyModels = FeignUtil.remoteCall(()->Privilege.companyClient.queryListByChild(RequestContext.getExeUserId()));
if(companyModels.isEmpty()){
public ResponseModel<Map<String, Integer>> arrangementStatistic() {
List<CompanyModel> companyModels = FeignUtil.remoteCall(() -> Privilege.companyClient.queryListByChild(RequestContext.getExeUserId()));
if (companyModels.isEmpty()) {
throw new BadRequest("未指定人员归属单位信息");
}
return ResponseHelper.buildResponse(tzsUserInfoService.getArrangementStatistic(companyModels.get(0).getCompanyCode()));
......@@ -280,7 +175,7 @@ public class TzsUserInfoController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getCompanyType")
@ApiOperation(httpMethod = "GET", value = "当前登录用户单位类型获取", notes = "当前登录用户单位类型获取")
public ResponseModel<Map<String,Object>> getCompanyType() {
public ResponseModel<Map<String, Object>> getCompanyType() {
return ResponseHelper.buildResponse(tzsUserInfoService.getCompanyType());
}
......@@ -295,7 +190,7 @@ public class TzsUserInfoController extends BaseController {
@GetMapping(value = "/getEquipList")
@ApiOperation(httpMethod = "GET", value = "设备查询(可绑定、可解绑)", notes = "设备查询(可绑定、可解绑)")
public ResponseModel<IPage<TzsEquipListDto>> getEquipList(@RequestParam(value = "type") String type,
@RequestParam(value = "userSeq",required = false) String userSeq,
@RequestParam(value = "userSeq", required = false) String userSeq,
@RequestParam(value = "current") String current,
@RequestParam(value = "size") String size,
TzsEquipListDto dto) {
......@@ -313,7 +208,7 @@ public class TzsUserInfoController extends BaseController {
public ResponseModel<Boolean> equipBind(@RequestParam(value = "type") String type,
@RequestParam(value = "userSeq") String userSeq,
@RequestParam(value = "creditCode") String creditCode,
@RequestBody Map<String,Object> map) {
@RequestBody Map<String, Object> map) {
return ResponseHelper.buildResponse(tzsUserInfoService.equipBind(type, userSeq, creditCode, map));
}
......@@ -334,16 +229,15 @@ public class TzsUserInfoController extends BaseController {
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getPersonType")
@ApiOperation(httpMethod = "GET", value = "获取当前登录人人员类型", notes = "获取当前登录人人员类型")
public ResponseModel<Map<String,Object>> getPersonType() {
public ResponseModel<Map<String, Object>> getPersonType() {
return ResponseHelper.buildResponse(tzsUserInfoService.getPersonType());
}
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/getGroupAndPersonInfo")
@ApiOperation(httpMethod = "GET", value = "通过组id查询组及组内人员信息", notes = "通过组id查询组及组内人员信息")
public ResponseModel<List<GroupAndPersonInfoDto>> getGroupAndPersonInfo(@RequestParam(value = "groupId") Long groupId) {
......@@ -391,19 +285,19 @@ public class TzsUserInfoController extends BaseController {
@ApiOperation(httpMethod = "POST", value = "查询指定类型的下的人", notes = "查询指定类型的下的人")
@PostMapping(value = "/permission-page")
public ResponseModel<Page<UserPermissionDto>> getUserByPermission(@RequestParam(value = "current") long current,
@RequestParam(value = "size") long size,
@RequestParam(required = false,defaultValue = "all") String type,
@RequestBody UserPermissionDto filter){
@RequestParam(value = "size") long size,
@RequestParam(required = false, defaultValue = "all") String type,
@RequestBody UserPermissionDto filter) {
filter.setOrgCode(getSelectedOrgInfo().getCompany().getOrgCode());
filter.setCityCode(getSelectedOrgInfo().getCompany().getCompanyCode());
Page<UserPermissionDto> userPermissionDtos = tzsUserInfoServiceImpl.getUserByPermission(current, size,type, filter);
Page<UserPermissionDto> userPermissionDtos = tzsUserInfoServiceImpl.getUserByPermission(current, size, type, filter);
return ResponseHelper.buildResponse(userPermissionDtos);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "查询当前登录人所属公司下的人", notes = "查询当前登录人所属公司下的人")
@GetMapping(value = "/listByLogin")
public ResponseModel<List<UserPermissionDto>> getUserPermissionOfCurrentLogin(){
public ResponseModel<List<UserPermissionDto>> getUserPermissionOfCurrentLogin() {
UserPermissionDto filter = new UserPermissionDto();
filter.setCityCode(getSelectedOrgInfo().getCompany().getCompanyCode());
List<UserPermissionDto> userPermissionDtos = tzsUserInfoServiceImpl.getUserPermissionOfCurrentLogin(filter);
......@@ -413,7 +307,7 @@ public class TzsUserInfoController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "查询指定公司下的人", notes = "查询指定公司下的人")
@GetMapping(value = "/listByCompanySeq")
public ResponseModel<List<UserPermissionDto>> getUserPermissionByCompanySeq(@RequestParam Long comSeq){
public ResponseModel<List<UserPermissionDto>> getUserPermissionByCompanySeq(@RequestParam Long comSeq) {
List<UserPermissionDto> userPermissionDtos = tzsUserInfoServiceImpl.getUserPermissionByCompanySeq(comSeq);
return ResponseHelper.buildResponse(userPermissionDtos);
}
......
......@@ -63,6 +63,19 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
// 平台用户锁定状态
private final String UNLOCK = "UNLOCK";
private final String LOCK = "LOCK";
/**
* 检验人员资质类型
*/
private final String JYRY_TYPE = "permissionData66151";
/**
* 检测人员资质类型
*/
private final String JCRY_TYPE = "permissionData66152";
/**
* 工作人员资质类型
*/
private final String ZYRY_TYPE = "permissionData6552";
@Autowired
DataDictionaryServiceImpl iDataDictionaryService;
@Autowired
......@@ -83,13 +96,16 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
private RedisUtils redisUtils;
@Autowired
private TzsUserQualificationsServiceImpl tzsUserQualificationsService;
@Autowired
private TzsUserPermissionServiceImpl tzsUserPermissionServiceImpl;
private static Map<String, String> statusColorMap = new HashMap<>();
private static Map<String,String> statusColorMap = new HashMap<>();
static {
statusColorMap.put("无资质要求","#868686");
statusColorMap.put("资质超期","#FF0000");
statusColorMap.put("资质临期","#FC9700");
statusColorMap.put("正常","#18B100");
statusColorMap.put("无资质要求", "#868686");
statusColorMap.put("资质超期", "#FF0000");
statusColorMap.put("资质临期", "#FC9700");
statusColorMap.put("正常", "#18B100");
}
@Override
......@@ -212,7 +228,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
Map<String, Object> maps = new HashMap<>();
TzsUserInfo tzsUserInfo = tzsUserInfoMapper.selectById(id);
TzsUserInfoVo tzsUserInfoVo = new TzsUserInfoVo();
BeanUtils.copyProperties(tzsUserInfo, tzsUserInfoVo, "identification", "profile", "post", "permissionItem" ,"appointDoc");
BeanUtils.copyProperties(tzsUserInfo, tzsUserInfoVo, "identification", "profile", "post", "permissionItem", "appointDoc");
if (!ObjectUtils.isEmpty(tzsUserInfo.getPost())) {
tzsUserInfoVo.setPost(JSON.parseArray(tzsUserInfo.getPost()));
}
......@@ -225,14 +241,17 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
tzsUserInfoVo.setOtherAccessories(ObjectUtils.isEmpty(tzsUserInfo.getOtherAccessories()) ? null : JSON.parseArray(tzsUserInfo.getOtherAccessories()));
String companyType = getUnitType();
tzsUserInfoVo.setCompanyType(companyType.contains("个人主体") ? "individual" : "no-individual");
Map<String,Object> userInfoMap =BeanUtil.beanToMap(tzsUserInfoVo);
userInfoMap.putAll(this.getPermissionDataJson(tzsUserInfo.getPermissionData()));
Map<String, Object> userInfoMap = BeanUtil.beanToMap(tzsUserInfoVo);
// userInfoMap.putAll(this.getPermissionDataJson(tzsUserInfo.getPermissionData()));
// 填充资质信息
Map<? extends String, ?> permissions = tzsUserPermissionServiceImpl.queryForSubFormByUserSeq(String.valueOf(tzsUserInfo.getSequenceNbr()));
userInfoMap.putAll(permissions);
maps.put("userInfo", userInfoMap);
return maps;
}
private Map<? extends String,?> getPermissionDataJson(String permissionData) {
if(permissionData != null){
private Map<? extends String, ?> getPermissionDataJson(String permissionData) {
if (permissionData != null) {
return JSON.parseObject(permissionData);
}
return new JSONObject();
......@@ -657,7 +676,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
Page<UserPermissionDto> permissionDtoPage = new Page<>(current, size);
List<String> post = this.getPostByType(type);
Page<UserPermissionDto> result = this.getBaseMapper().queryUserByPermissionPage(permissionDtoPage, post, filter);
result.getRecords().forEach(d->{
result.getRecords().forEach(d -> {
if (StringUtils.isNotEmpty(d.getIdentificationStr())) {
// 照片赋值
......@@ -675,7 +694,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
public List<UserPermissionDto> getUserPermissionOfCurrentLogin(UserPermissionDto filter) {
List<UserPermissionDto> result = this.getBaseMapper().queryUserByPermissionOfOneCompany(filter);
result.forEach(d->{
result.forEach(d -> {
if (StringUtils.isNotEmpty(d.getIdentificationStr())) {
// String转json
d.setIdentification(JSON.parseArray(d.getIdentificationStr()));
......@@ -685,7 +704,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
d.setPhotoUrl(commonFiles.get(0).getUrl());
}
}
d.setPermissionStatusColor(statusColorMap.getOrDefault(d.getPermissionStatus(),"#868686"));
d.setPermissionStatusColor(statusColorMap.getOrDefault(d.getPermissionStatus(), "#868686"));
// 人员类型枚举转name
d.setPost(this.isJSONValid(d.getPost()) ? d.getPost() : "[\"" + d.getPost() + "\"]");
d.setPostName(this.setPostName(d.getPost()));
......@@ -694,7 +713,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
private List<String> getPostByType(String type) {
switch (type){
switch (type) {
case "jy":
return Collections.singletonList("66151");
case "jc":
......@@ -702,9 +721,9 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
case "zyry":
return Collections.singletonList("6552");
case "qt":
return Arrays.asList("6549","6548","6547","6546","6551","6550","6616","6553","6617");
return Arrays.asList("6549", "6548", "6547", "6546", "6551", "6550", "6616", "6553", "6617");
default:
return Arrays.asList("6549","6548","6547","6546","6551","6550","6616","6553","6617", "66151", "66152", "6552");
return Arrays.asList("6549", "6548", "6547", "6546", "6551", "6550", "6616", "6553", "6617", "66151", "66152", "6552");
}
}
......@@ -712,4 +731,112 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
TzBaseEnterpriseInfo enterpriseInfo = baseEnterpriseInfoService.getById(comSeq);
return getUserPermissionOfCurrentLogin(UserPermissionDto.builder().cityCode(enterpriseInfo.getUseUnitCode()).build());
}
@Transactional(rollbackFor = Exception.class)
public TzsUserInfoDto saveUserInfo(TzsUserInfoDto tzsUserInfo) {
LambdaQueryWrapper<TzsUserInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TzsUserInfo::getCertificateType, tzsUserInfo.getCertificateType());
queryWrapper.eq(TzsUserInfo::getCertificateNum, tzsUserInfo.getCertificateNum());
queryWrapper.eq(TzsUserInfo::getIsDelete, false);
TzsUserInfo certificateNum = tzsUserInfoMapper.selectOne(queryWrapper);
if (!ObjectUtils.isEmpty(certificateNum)) {
throw new BadRequest("证件号码重复,请核对!");
}
LambdaQueryWrapper<TzsUserInfo> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(TzsUserInfo::getPhone, tzsUserInfo.getPhone());
queryWrapper1.eq(TzsUserInfo::getIsDelete, false);
TzsUserInfo phone = tzsUserInfoMapper.selectOne(queryWrapper1);
if (!ObjectUtils.isEmpty(phone)) {
throw new BadRequest("联系电话重复,请核对!");
}
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if (ObjectUtils.isEmpty(reginParams)) {
return null;
}
CompanyBo companyModel = reginParams.getCompany();
if (ObjectUtils.isEmpty(companyModel)) {
throw new BadRequest("未指定人员归属单位信息");
}
tzsUserInfo.setUnitName(companyModel.getCompanyName());
tzsUserInfo.setUnitCode(companyModel.getCompanyCode());
tzsUserInfo.setAppointDoc(tzsUserInfo.getAppointDoc());
tzsUserInfo.setRecDate(new Date());
// 兼容前端只传一个值,并且非json类型的情况
String post = this.isJSONValid(tzsUserInfo.getPost()) ? tzsUserInfo.getPost() : "[\"" + tzsUserInfo.getPost() + "\"]";
tzsUserInfo.setPost(post);
tzsUserInfo.setNewPost(post);
tzsUserInfo.setPostName(this.setPostName(tzsUserInfo.getPost()));
tzsUserInfo = this.createWithModel(tzsUserInfo);
// 保存资质
tzsUserPermissionServiceImpl.savePermissionData(tzsUserInfo);
return tzsUserInfo;
}
@Transactional(rollbackFor = Exception.class)
public TzsUserInfoDto updateUserInfo(Long rowId, TzsUserInfoDto tzsUserInfoDto) {
LambdaQueryWrapper<TzsUserInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TzsUserInfo::getCertificateType, tzsUserInfoDto.getCertificateType());
queryWrapper.eq(TzsUserInfo::getCertificateNum, tzsUserInfoDto.getCertificateNum());
queryWrapper.ne(TzsUserInfo::getSequenceNbr, rowId);
queryWrapper.eq(TzsUserInfo::getIsDelete, false);
TzsUserInfo certificateNum = tzsUserInfoMapper.selectOne(queryWrapper);
if (!ObjectUtils.isEmpty(certificateNum)) {
throw new BadRequest("证件号码重复,请核对!");
}
LambdaQueryWrapper<TzsUserInfo> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(TzsUserInfo::getPhone, tzsUserInfoDto.getPhone());
queryWrapper1.ne(TzsUserInfo::getSequenceNbr, rowId);
queryWrapper1.eq(TzsUserInfo::getIsDelete, false);
TzsUserInfo phone = tzsUserInfoMapper.selectOne(queryWrapper1);
if (!ObjectUtils.isEmpty(phone)) {
throw new BadRequest("联系电话重复,请核对!");
}
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if (ObjectUtils.isEmpty(reginParams)) {
return null;
}
CompanyBo companyModel = reginParams.getCompany();
if (ObjectUtils.isEmpty(companyModel)) {
throw new BadRequest("未指定人员归属单位信息");
}
//删除人员与组的关系
QueryWrapper<TzsUserInfo> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("sequence_nbr", rowId);
queryWrapper2.eq("is_delete", false);
TzsUserInfo selectOne = tzsUserInfoMapper.selectOne(queryWrapper2);
if (!ObjectUtils.isEmpty(selectOne.getAmosUserId())) {
this.deleteGroupAndPersonRelation(selectOne.getPostName(), selectOne.getAmosUserId());
}
tzsUserInfoDto.setUnitName(companyModel.getCompanyName());
tzsUserInfoDto.setUnitCode(companyModel.getCompanyCode());
tzsUserInfoDto.setSequenceNbr(rowId);
tzsUserInfoDto.setRecDate(new Date());
// 兼容前端只传一个值,并且非json类型的情况
String post = this.isJSONValid(tzsUserInfoDto.getPost()) ? tzsUserInfoDto.getPost() : "[\"" + tzsUserInfoDto.getPost() + "\"]";
tzsUserInfoDto.setPost(post);
tzsUserInfoDto.setNewPost(post);
String postName = this.setPostName(tzsUserInfoDto.getPost());
tzsUserInfoDto.setPostName(postName);
if (!ObjectUtils.isEmpty(selectOne.getAmosUserId())) {
// 添加新的人员与组的关系
String[] split = postName.split(",");
List<String> ids = new ArrayList<>();
ids.add(selectOne.getAmosUserId());
for (String s : split) {
if (!ObjectUtils.isEmpty(TwoStipulateGroupEnum.getId.get(s))) {
Privilege.groupUserClient.create(TwoStipulateGroupEnum.getId.get(s), ids);
}
}
}
// 更新资质
tzsUserPermissionServiceImpl.updatePermissionData(tzsUserInfoDto);
this.updateWithModel(tzsUserInfoDto);
return tzsUserInfoDto;
}
}
package com.yeejoin.amos.boot.module.tcm.biz.service.impl;
import com.alibaba.fastjson.JSON;
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.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.common.api.dto.TzsUserPermissionDto;
import com.yeejoin.amos.boot.module.common.api.entity.TzsUserPermission;
import com.yeejoin.amos.boot.module.tcm.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserPermissionMapper;
import com.yeejoin.amos.boot.module.tcm.api.service.ITzsUserPermissionService;
import com.yeejoin.amos.boot.module.common.api.dto.TzsUserPermissionDto;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;
import java.util.*;
import java.util.stream.Collectors;
/**
* 用户资质信息表服务实现类
......@@ -16,18 +32,181 @@ import java.util.List;
* @date 2024-08-27
*/
@Service
public class TzsUserPermissionServiceImpl extends BaseService<TzsUserPermissionDto,TzsUserPermission,TzsUserPermissionMapper> implements ITzsUserPermissionService {
public class TzsUserPermissionServiceImpl extends BaseService<TzsUserPermissionDto, TzsUserPermission, TzsUserPermissionMapper> implements ITzsUserPermissionService {
/**
* 检验人员资质类型
*/
private final String JYRY_TYPE = "permissionData66151";
/**
* 检测人员资质类型
*/
private final String JCRY_TYPE = "permissionData66152";
/**
* 工作人员资质类型
*/
private final String ZYRY_TYPE = "permissionData6552";
/**
* 需要转换的附件字段 jsonString化字段
*/
private final String[] ATTACHMENTS = {"certAttachment", "otherItem", "itemCode"};
/**
* 分页查询
*/
public Page<TzsUserPermissionDto> queryForTzsUserPermissionPage(Page<TzsUserPermissionDto> page) {
public Page<TzsUserPermissionDto> queryForTzsUserPermissionPage(Page<TzsUserPermissionDto> page) {
return this.queryForPage(page, null, false);
}
/**
* 列表查询 示例
*/
public List<TzsUserPermissionDto> queryForTzsUserPermissionList() {
return this.queryForList("" , false);
public List<TzsUserPermissionDto> queryForTzsUserPermissionList() {
return this.queryForList("", false);
}
/**
* 更新资质权限数据
*/
@Transactional(rollbackFor = Exception.class)
public void updatePermissionData(TzsUserInfoDto tzsUserInfo) {
// 1,删除对应资质
LambdaQueryWrapper<TzsUserPermission> lambda = new QueryWrapper<TzsUserPermission>().lambda();
lambda.eq(TzsUserPermission::getUserSeq, tzsUserInfo.getSequenceNbr());
this.getBaseMapper().delete(lambda);
// 2,保存对应资质
this.savePermissionData(tzsUserInfo);
}
/**
* 保存资质权限数据
*/
@Transactional(rollbackFor = Exception.class)
public void savePermissionData(TzsUserInfoDto userInfoDto) {
ArrayList<TzsUserPermission> tzsUserPermissions = new ArrayList<>();
// permissionData66151 检验资质
JSONArray permissionData66151 = userInfoDto.getPermissionData66151();
if (!ValidationUtil.isEmpty(permissionData66151)) {
permissionData66151.forEach(x -> tzsUserPermissions.add(buildPermission(JYRY_TYPE, (JSONObject) x, userInfoDto)));
}
// permissionData66152 检测资质
JSONArray permissionData66152 = userInfoDto.getPermissionData66152();
if (!ValidationUtil.isEmpty(permissionData66152)) {
permissionData66152.forEach(x -> tzsUserPermissions.add(buildPermission(JCRY_TYPE, (JSONObject) x, userInfoDto)));
}
// permissionData6552 作业人员资质
JSONArray permissionData6552 = userInfoDto.getPermissionData6552();
if (!ValidationUtil.isEmpty(permissionData6552)) {
permissionData6552.forEach(x -> tzsUserPermissions.add(buildPermission(ZYRY_TYPE, (JSONObject) x, userInfoDto)));
}
this.saveBatch(tzsUserPermissions);
}
/**
* 构建资质信息实体
*
* @param type 人员资质类型
* @param permissionData 入参
* @param userInfo 人员信息
* @return permission
*/
private TzsUserPermission buildPermission(String type, JSONObject permissionData, TzsUserInfoDto userInfo) {
TzsUserPermission permission = new TzsUserPermission();
permission.setUserSeq(userInfo.getSequenceNbr());
permission.setPermissionLevel(!ZYRY_TYPE.equals(type) ? (String) permissionData.get("permissionLevel") : null);
permission.setPermissionItem(!ZYRY_TYPE.equals(type) ? JSONArray.toJSONString(permissionData.get("permissionItem")) : null);
permission.setPermissionPost(type);
permission.setCertNo((String) permissionData.get("certNo"));
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd")
.optionalStart()
.appendPattern(" HH:mm:ss")
.optionalEnd()
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.toFormatter();
String expiryDateString = String.valueOf(permissionData.get("expiryDate"));
LocalDate localDate1 = LocalDate.parse(expiryDateString, formatter);
LocalDateTime localDateTime1 = localDate1.atStartOfDay();
Date expiryDate = Date.from(localDateTime1.atZone(ZoneId.systemDefault()).toInstant());
permission.setExpiryDate(expiryDate);
String issueDateString = String.valueOf(permissionData.get("issueDate"));
LocalDate localDate2 = LocalDate.parse(issueDateString, formatter);
LocalDateTime localDateTime2 = localDate2.atStartOfDay();
Date issueDate = Date.from(localDateTime2.atZone(ZoneId.systemDefault()).toInstant());
permission.setIssueDate(issueDate);
permission.setApprovedOrgan((String) permissionData.get("approvedOrgan"));
permission.setCertAttachment(JSONArray.toJSONString(permissionData.get("certAttachment")));
permission.setCertType(ZYRY_TYPE.equals(type) ? String.valueOf(permissionData.get("certType")) : null);
permission.setJobItem(ZYRY_TYPE.equals(type) ? String.valueOf(permissionData.get("jobItem")) : null);
permission.setOtherItem(ZYRY_TYPE.equals(type) ? JSONArray.toJSONString(permissionData.get("otherItem")) : null);
permission.setItemCode(ZYRY_TYPE.equals(type) ? JSONArray.toJSONString(permissionData.get("itemCode")) : null);
return permission;
}
/**
* 根据人员的seq 组织可供子表单使用的资质信息数据
*
* @param userSeq 人员的seq
* @return result
*/
public Map<? extends String, ?> queryForSubFormByUserSeq(String userSeq) {
Map<String, List<JSONObject>> result = new HashMap<>();
List<JSONObject> JYRYList = new ArrayList<>();
List<JSONObject> JCRYList = new ArrayList<>();
List<JSONObject> ZYRYList = new ArrayList<>();
LambdaQueryWrapper<TzsUserPermission> lambda = new QueryWrapper<TzsUserPermission>().lambda();
lambda.eq(TzsUserPermission::getUserSeq, userSeq);
List<TzsUserPermission> permissionList = this.getBaseMapper().selectList(lambda);
for (TzsUserPermission permission : permissionList) {
String permissionPost = permission.getPermissionPost();
if (JYRY_TYPE.equals(permissionPost)) {
JYRYList.add(this.convertPermissionToJson(permission));
continue;
}
if (JCRY_TYPE.equals(permissionPost)) {
JCRYList.add(this.convertPermissionToJson(permission));
continue;
}
if (ZYRY_TYPE.equals(permissionPost)) {
ZYRYList.add(this.convertPermissionToJson(permission));
}
}
result.putIfAbsent(JYRY_TYPE, JYRYList);
result.putIfAbsent(JCRY_TYPE, JCRYList);
result.putIfAbsent(ZYRY_TYPE, ZYRYList);
return result;
}
/**
* 实体转化为jsonObject 并转化附件
*
* @param permission 入参
* @return result
*/
public JSONObject convertPermissionToJson(TzsUserPermission permission) {
JSONObject json = (JSONObject) JSONObject.toJSON(permission);
for (String field : ATTACHMENTS) {
if (json.get(field) != null && json.get(field) instanceof String) {
json.put(field, JSON.parse(json.get(field).toString()));
}
}
// 作业项目【jobItem】 字段特殊处理
JSONArray jobItem = JSON.parseArray(String.valueOf(json.get("jobItem")));
json.put("jobItem",jobItem);
if (!(jobItem == null || jobItem.isEmpty())) {
json.put("doNotDelJobItem",jobItem.stream().map(Object::toString).collect(Collectors.joining(",")));
}
return json;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment