Commit f206fb0c authored by hcing's avatar hcing

fix(tzs): 风险报送人员调整

parent ac0a35f2
......@@ -28,7 +28,5 @@ public interface IDataDictionaryService {
List<DataDictionary> getByParent(String parent);
List<DataDictionary> getByTypeAndDesc(String type, String group);
DataDictionary getByExtend(String groupId, String type);
}
......@@ -180,14 +180,6 @@ public class DataDictionaryServiceImpl extends BaseService<DataDictionaryDto, Da
}
@Override
public List<DataDictionary> getByTypeAndDesc(String type, String typeDesc) {
LambdaQueryWrapper<DataDictionary> wrapper = new LambdaQueryWrapper<>();
wrapper.likeRight(DataDictionary::getType,type);
wrapper.likeRight(DataDictionary::getTypeDesc,typeDesc);
return this.list(wrapper);
}
@Override
public DataDictionary getByExtend(String groupId, String type) {
LambdaQueryWrapper<DataDictionary> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DataDictionary::getExtend, groupId);
......
{
"检验检测机构": {
"检验机构": {
"6660": [],
"6667": [],
"66151": [],
......@@ -7,7 +7,19 @@
"6546": [],
"6616": [],
"6761": [],
"6762": []
"6762": [],
"6766": []
},
"检测机构": {
"6660": [],
"6667": [],
"66151": [],
"66152": [],
"6546": [],
"6616": [],
"6761": [],
"6762": [],
"6766": []
},
"设计单位": {
"6660": [],
......@@ -21,7 +33,8 @@
"6548": [],
"6550": [],
"6551": [],
"6616": []
"6616": [],
"6766": []
},
"制造单位": {
"6660": [],
......@@ -35,7 +48,8 @@
"6548": [],
"6550": [],
"6551": [],
"6616": []
"6616": [],
"6766": []
},
"充装单位": {
"6660": [],
......@@ -46,7 +60,8 @@
"6548": [],
"6616": [],
"6763": [],
"6549": []
"6549": [],
"6766": []
},
"安装改造维修单位": {
"6660": [],
......@@ -58,12 +73,14 @@
"6552": [],
"66151": [],
"66152": [],
"6667": [],
"6546": [],
"6548": [],
"6550": [],
"6551": [],
"6616": [],
"6553": []
"6553": [],
"6766": []
},
"使用单位": {
"6552": ["6713"],
......@@ -72,7 +89,11 @@
"6548": [],
"6616": [],
"6617": [],
"6549": []
"6549": [],
"66151": [],
"66152": [],
"6667": [],
"6766": []
},
"个人主体": {
"6552": ["6713"],
......@@ -81,6 +102,13 @@
"6548": [],
"6616": [],
"6617": [],
"6549": []
"6549": [],
"66151": [],
"66152": [],
"6667": [],
"6766": []
},
"监管机构": {
"6766": []
}
}
......@@ -3,6 +3,10 @@ package com.yeejoin.amos.boot.module.common.biz.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.lucene.search.join.ScoreMode;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.NestedQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
......@@ -15,6 +19,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.elasticsearch.index.query.QueryBuilders.existsQuery;
@Slf4j
@Service
public class TZSCommonServiceImpl {
......@@ -62,11 +68,11 @@ public class TZSCommonServiceImpl {
String licensesStatus = null;
if (esUserInfoJson.containsKey("licenses")) {
// 以下人员类型有资质要求
// 人员类型(newPost):检验人员:66151、检测人员:66152
// 人员类型(newPost):检验人员:66151、检测人员:66152 ,检验检测区域负责人 :6667
// 人员子类型(subPost): 持证人员:6713、持证人员(P):6764、持证人员(R2):6765
String newPost = ObjectUtils.isEmpty(esUserInfoJson.getString("newPost")) ? "" : esUserInfoJson.getString("newPost");
String subPost = ObjectUtils.isEmpty(esUserInfoJson.getString("subPost")) ? "" : esUserInfoJson.getString("subPost");
if (newPost.contains("66151") || newPost.contains("66152") || subPost.contains("6713") || subPost.contains("6764") || subPost.contains("6765")) {
if (newPost.contains("66151") || newPost.contains("66152") || newPost.contains("6667") || subPost.contains("6713") || subPost.contains("6764") || subPost.contains("6765")) {
JSONArray licenses = esUserInfoJson.getJSONArray("licenses");
String overdueStr = licensesStatusMap.get(overdue);
String nearStr = licensesStatusMap.get(near);
......@@ -119,4 +125,119 @@ public class TZSCommonServiceImpl {
}
return licensesStatus;
}
/**
* 需要资质的人员查询构造条件
* 无资质:需要资质但是没有填写
*
* @return
*/
public BoolQueryBuilder getNotLicencesBuilderWithPerson() {
return QueryBuilders.boolQuery()
.should(QueryBuilders.wildcardQuery("newPost", "*66151*"))
.should(QueryBuilders.wildcardQuery("newPost", "*66152*"))
.should(QueryBuilders.wildcardQuery("newPost", "*6667*"))
.should(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6552*"))
.must(QueryBuilders.wildcardQuery("subPost", "*6713*")))
.should(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6763*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6764*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6765*"))
.minimumShouldMatch(1)
)
.minimumShouldMatch(1);
}
/**
* 无资质要求的人员查询构造条件
* 无资质要求:不需要资质
*
* @return
*/
public BoolQueryBuilder getNotNeedLicencesBuilderWithPerson() {
return QueryBuilders.boolQuery()
.mustNot(QueryBuilders.wildcardQuery("newPost", "*66151*"))
.mustNot(QueryBuilders.wildcardQuery("newPost", "*66152*"))
.mustNot(QueryBuilders.wildcardQuery("newPost", "*6667*"))
.mustNot(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6552*"))
.must(QueryBuilders.wildcardQuery("subPost", "*6713*")))
.mustNot(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6763*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6764*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6765*"))
.minimumShouldMatch(1)
);
}
/**
* 人员资质状态查询构造条件
*
* @param boolMust
* @param licensesStatus
* @param path
* @param nestedField
*/
public void buildExpiryDateQueryBuilder(BoolQueryBuilder boolMust, String licensesStatus, String path, String nestedField) {
if (licensesStatus.equals(overdue)) {
// 不需要资质的人员查询构造条件
BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson();
boolMust.must(notNeedLicensesQueryBuilder);
// 超期:小于当前日期
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.rangeQuery(nestedField).lt(LocalDate.now().format(formatter)),
ScoreMode.None
);
boolMust.must(nestedQuery);
} else if (licensesStatus.equals(near)) {
// 不需要资质的人员查询构造条件
BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson();
boolMust.must(notNeedLicensesQueryBuilder);
// 临期:小于等于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.rangeQuery(nestedField).lte(LocalDate.now().plusDays(30).format(formatter)).gte(LocalDate.now().format(formatter)),
ScoreMode.None
);
boolMust.must(nestedQuery);
} else if (licensesStatus.equals(normal)) {
// 不需要资质的人员查询构造条件
BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson();
boolMust.must(notNeedLicensesQueryBuilder);
// 正常:大于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.rangeQuery(nestedField).gt(LocalDate.now().plusDays(30).format(formatter)),
ScoreMode.None
);
boolMust.must(nestedQuery);
} else if (licensesStatus.equals(none)) {
// 不需要资质的人员查询构造条件
BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson();
boolMust.must(notNeedLicensesQueryBuilder);
// 无有效期
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.boolQuery().mustNot(existsQuery(nestedField)),
ScoreMode.None
);
boolMust.must(nestedQuery);
}
// 只在人员列表处用到
// 综合统计处未用到下面的条件,理论上走不到下面俩条件
else if (licensesStatus.equals(noLicense)) {
// 无资质
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
existsQuery(path + "." + "certNo"),
ScoreMode.None
);
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(this.getNotLicencesBuilderWithPerson());
meBuilder.must(QueryBuilders.boolQuery().mustNot(nestedQuery));
boolMust.must(meBuilder);
} else if (licensesStatus.equals(noLicenseReq)) {
// 无资质要求
boolMust.must(this.getNotNeedLicencesBuilderWithPerson());
}
}
}
\ No newline at end of file
......@@ -411,57 +411,28 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
existsQuery(nestedField),
ScoreMode.None
);
// ***********************************************************************************************************************************
// 注意 : 若要修改下面的【无资质】和【无资质要求】逻辑,请同步修改 tzsCommonService.buildExpiryDateQueryBuilder()方法中的后半部分 ***************
// ***********************************************************************************************************************************
// 以下人员类型有资质要求
// 人员类型(newPost):检验人员:66151、检测人员:66152、作业人员:6552、检查人员:6763
// 人员类型(newPost):检验人员:66151、检测人员:66152、作业人员:6552、检查人员:6763、检验检测区域负责人:6667
// 人员子类型(subPost): 持证人员:6713、持证人员(P):6764、持证人员(R2):6765
if (item.equals("1")) {
licencesQueryBuilder.add(nestedQuery, or);
} else if (item.equals("0")) {
// 无资质
DynamicQueryBuilder queryBuilder = new DynamicQueryBuilder();
queryBuilder.and(this.getNotLicencesBuilderWithPerson());
queryBuilder.and(tzsCommonService.getNotLicencesBuilderWithPerson());
queryBuilder.and(QueryBuilders.boolQuery().mustNot(nestedQuery));
licencesQueryBuilder.add(queryBuilder.build(), or);
} else {
// 无资质要求
licencesQueryBuilder.add(this.getNotNeedLicencesBuilderWithPerson(), or);
licencesQueryBuilder.add(tzsCommonService.getNotNeedLicencesBuilderWithPerson(), or);
}
} else if (k.equals("expiryDate")) {
// 不需要资质的人员查询构造条件
BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson();
boolMust.must(notNeedLicensesQueryBuilder);
if (item.equals(overdue)) {
// 超期:小于当前日期
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.rangeQuery(nestedField).lt(LocalDate.now().format(formatter)),
ScoreMode.None
);
boolMust.must(nestedQuery);
} else if (item.equals(near)) {
// 临期:小于等于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.rangeQuery(nestedField).lte(LocalDate.now().plusDays(30).format(formatter)).gte(LocalDate.now().format(formatter)),
ScoreMode.None
);
boolMust.must(nestedQuery);
} else if (item.equals(normal)) {
// 正常:大于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.rangeQuery(nestedField).gt(LocalDate.now().plusDays(30).format(formatter)),
ScoreMode.None
);
boolMust.must(nestedQuery);
} else if (item.equals(none)) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.boolQuery().mustNot(existsQuery(nestedField)),
ScoreMode.None
);
boolMust.must(nestedQuery);
}
// 无有效期 / 资质正常 / 资质临期 / 资质超期
tzsCommonService.buildExpiryDateQueryBuilder(boolMust, item.toString(), path, nestedField);
} else if (k.equals("certType") || k.equals("permissionLevel")) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
......@@ -1700,9 +1671,9 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
ScoreMode.None
);
// 无资质查询
BoolQueryBuilder noCertQuery = this.getNotLicencesBuilderWithPerson();
BoolQueryBuilder noCertQuery = tzsCommonService.getNotLicencesBuilderWithPerson();
// 无资质要求查询
BoolQueryBuilder noCertRequestQuery = this.getNotNeedLicencesBuilderWithPerson();
BoolQueryBuilder noCertRequestQuery = tzsCommonService.getNotNeedLicencesBuilderWithPerson();
if (value.equals("1")) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) {
......@@ -1858,45 +1829,6 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
}
}
/**
* 需要资质的人员查询构造条件
* 无资质:需要资质但是没有填写
*
* @return
*/
private BoolQueryBuilder getNotLicencesBuilderWithPerson() {
return QueryBuilders.boolQuery()
.should(QueryBuilders.wildcardQuery("newPost", "*66151*"))
.should(QueryBuilders.wildcardQuery("newPost", "*66152*"))
.should(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6552*"))
.must(QueryBuilders.wildcardQuery("subPost", "*6713*")))
.should(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6763*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6764*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6765*"))
.minimumShouldMatch(1)
)
.minimumShouldMatch(1);
}
/**
* 无资质要求的人员查询构造条件
* 无资质要求:不需要资质
*
* @return
*/
private BoolQueryBuilder getNotNeedLicencesBuilderWithPerson() {
return QueryBuilders.boolQuery()
.mustNot(QueryBuilders.wildcardQuery("newPost", "*66151*"))
.mustNot(QueryBuilders.wildcardQuery("newPost", "*66152*"))
.mustNot(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6552*"))
.must(QueryBuilders.wildcardQuery("subPost", "*6713*")))
.mustNot(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6763*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6764*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6765*"))
.minimumShouldMatch(1)
);
}
private void companyFieldHandle(String field, String itemCondition, Object value, String isOr, EnhancedDynamicQueryBuilder builder) {
if (field.equals("itemCode") || field.equals("subItemCode") || field.equals("permitStatus") || field.equals("expiryDate")) {
String path = "licenses";
......@@ -3627,7 +3559,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
String path = "licenses";
String nestedField = path + ".expiryDate";
// 需要资质的人员必须条件
BoolQueryBuilder needLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson();
BoolQueryBuilder needLicensesQueryBuilder = tzsCommonService.getNotLicencesBuilderWithPerson();
// 资质正常
BoolQueryBuilder normalBoolQuery = QueryBuilderUtils.copyBoolQuery(boolQuery);
NestedQueryBuilder normalNestedQuery = QueryBuilders.nestedQuery(
......@@ -3700,7 +3632,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
// 无资质要求查询
// BoolQueryBuilder notNeedLicensesBoolQuery = QueryBuilderUtils.copyBoolQuery(boolQuery);
// // 不需要资质的人员查询构造条件
// BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotNeedLicencesBuilderWithPerson();
// BoolQueryBuilder notNeedLicensesQueryBuilder = tzsCommonService.getNotNeedLicencesBuilderWithPerson();
// DynamicQueryBuilder mainBuilderNotNeed = new DynamicQueryBuilder();
// EnhancedDynamicQueryBuilder dynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
//
......
......@@ -145,4 +145,7 @@ public class TzsUserInfoDto extends BaseDto {
@ApiModelProperty(value = "创建时间")
protected Date createDate;
@ApiModelProperty(value = "人员所在企业类型:监管/行政审批局supervision;企业:company")
protected String companyType;
}
......@@ -242,4 +242,10 @@ public class TzsUserInfo extends BaseEntity {
*/
@TableField(value = "create_date")
protected Date createDate;
/**
* 人员所在企业类型:监管/行政审批局supervision;企业:company
*/
@TableField(value = "company_type")
protected String companyType;
}
......@@ -9,6 +9,7 @@ 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.vo.SortVo;
import com.yeejoin.amos.boot.module.tcm.api.vo.UserInfoVo;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
......@@ -44,6 +45,8 @@ public interface TzsUserInfoMapper extends BaseMapper<TzsUserInfo> {
String selectCompanyTypeById(Long companySeq);
CompanyModel selectPrivilegeCompanyByCompanyCode(@Param("companyCode") String companyCode);
/**
* 已资质为维度查询人
* @param page 分页对象
......
......@@ -96,7 +96,7 @@ public interface ITzsUserInfoService extends IService<TzsUserInfo> {
String deletePersonSubtypeHistoricalData();
List<DataDictionary> postByUnitType(CompanyBo company);
List<DataDictionary> postByUnitType(CompanyBo company,String formType);
List<DataDictionary> subPostByUnitType(CompanyBo company, String parentCode);
......
......@@ -261,6 +261,14 @@
<select id="selectCompanyTypeById" resultType="java.lang.String">
select company_type from privilege_company where sequence_nbr = #{companySeq}
</select>
<select id="selectPrivilegeCompanyByCompanyCode" resultType="com.yeejoin.amos.feign.privilege.model.CompanyModel">
select *
from privilege_company
where company_code = #{companyCode}
</select>
<select id="queryUserByPermissionOfOneCompany" resultType="com.yeejoin.amos.boot.module.common.api.dto.UserPermissionDto">
SELECT
COALESCE (p.sequence_nbr, u.sequence_nbr) as sequence_nbr,
......
......@@ -29,6 +29,7 @@ import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
......@@ -464,9 +465,10 @@ public class TzsUserInfoController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/postByUnitType")
@ApiOperation(httpMethod = "GET", value = "根据单位类型查询对应的人员类型", notes = "根据单位类型查询对应的人员类型")
public ResponseModel<List<DataDictionary>> postByUnitType() {
public ResponseModel<List<DataDictionary>> postByUnitType(@ApiParam(value = "表单类型:add/edit/detail,用于过滤监管单位查询人员类型,详情页面查询所有(可能是查看其他单位的人员详情),新增编辑页面只过滤自己类型下的,限制添加的人员类型", required = true, defaultValue = "detail")
@RequestParam(value = "formType", defaultValue = "") String formType) {
CompanyBo company = getSelectedOrgInfo().getCompany();
return ResponseHelper.buildResponse(tzsUserInfoService.postByUnitType(company));
return ResponseHelper.buildResponse(tzsUserInfoService.postByUnitType(company, formType));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
......
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.tcm.biz.refresh.handler;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.common.api.dao.EsBaseEnterpriseInfoDao;
import com.yeejoin.amos.boot.module.common.api.dao.EsUserInfoDao;
......@@ -17,6 +18,7 @@ import com.yeejoin.amos.boot.module.tcm.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserInfoMapper;
import com.yeejoin.amos.boot.module.tcm.biz.refresh.CommonRefreshService;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
......@@ -71,12 +73,21 @@ public class UserRefreshHandler implements IDataRefreshHandler {
esUserInfo.setEquipTypeName(RefreshDataUtils.castEquCategory2Name(esUserInfo.getEquipType()));
// 绑定设备状态
esUserInfo.setBindEquStatus(commonRefreshService.queryUserBindEquStatus(userInfo.getSequenceNbr()));
// 监管机构
if (userInfo.getCompanyType().equals(BaseController.COMPANY_TYPE_SUPERVISION)) {
CompanyModel result = userInfoMapper.selectPrivilegeCompanyByCompanyCode(userInfo.getUnitCode());
esUserInfo.setUnitType(result.getCompanyType());
esUserInfo.setSuperviseOrgName(result.getCompanyName());
esUserInfo.setSuperviseOrgCode(result.getOrgCode());
} else {
// 企业
Optional<EsBaseEnterpriseInfo> esBaseEnterpriseInfo = esBaseEnterpriseInfoDao.findById(unit.getSequenceNbr() + "");
// 人员类型暂时取esBaseEnterpriseInfo按照资质分开后的,等检验和检测分开后,按照实际情况取就即可:unit.getUnitType()
String unitType = esBaseEnterpriseInfo.map(EsBaseEnterpriseInfo::getUnitType).orElse(unit.getUnitType());
esUserInfo.setUnitType(unitType);
esUserInfo.setSuperviseOrgName(unit.getSuperviseOrgName());
esUserInfo.setSuperviseOrgCode(unit.getSuperviseOrgCode());
}
esUserInfo.setLicenses(commonRefreshService.buildUserLicenses(userInfo.getSequenceNbr()));
esUserInfo.setLicenseMinExpiryDate(RefreshCmService.getMinDateFromLicensesUser(esUserInfo.getLicenses()));
esUserInfoDao.save(esUserInfo);
......
......@@ -124,6 +124,8 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
private final String UNLOCK = "UNLOCK";
private final String LOCK = "LOCK";
private final String TOTALTYPESTEMPLATE = "{\"records\":[{\"name\":\"人员总数(人)\",\"value\":%s}]}";
// 详情表单类型的集合
private final List<String> FROM_TYPES_DETAIL = Arrays.asList("detail", "look");
@Autowired
DataDictionaryServiceImpl iDataDictionaryService;
@Autowired
......@@ -281,10 +283,10 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
if (dictIds == null || dictIds.isEmpty()) {
return "";
}
LambdaQueryWrapper<DataDictionary> lambda = new QueryWrapper<DataDictionary>().lambda();
lambda.in(DataDictionary::getSequenceNbr, dictIds);
List<DataDictionary> dataDictionaries = iDataDictionaryService.getByTypeAndDesc(QYRYGW, QYRYGW_NAME);
List<DataDictionary> postDataList = dataDictionaries.stream().filter(d -> dictIds.stream().anyMatch(id -> id.toString().equals(d.getCode()))).collect(Collectors.toList());
List<DataDictionary> dataDictionaries = this.getAllUserType();
List<DataDictionary> postDataList = dataDictionaries.stream()
.filter(d -> dictIds.stream().anyMatch(id -> id.toString().equals(d.getCode())))
.collect(Collectors.toList());
return postDataList.stream().map(DataDictionary::getName).collect(Collectors.joining(","));
}
......@@ -373,8 +375,9 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
// 2:多种单位类型的企业编辑另一种单位类型下的人员
// 监管机构查看所有
List<String> unitTypeAllPostCode;
if (!reginParams.getCompany().getCompanyType().equals("监管机构")) {
unitTypeAllPostCode = this.postByUnitType(reginParams.getCompany()).stream().map(DataDictionary::getCode).collect(Collectors.toList());
String companyType = this.getLoginCompanyType();
if (companyType.equals(BaseController.COMPANY_TYPE_COMPANY)) {
unitTypeAllPostCode = this.postByUnitType(reginParams.getCompany(), "").stream().map(DataDictionary::getCode).collect(Collectors.toList());
} else {
unitTypeAllPostCode = this.getAllUserType().stream().map(DataDictionary::getCode).collect(Collectors.toList());
}
......@@ -420,8 +423,8 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
tzsUserInfoVo.setPracticeRegistration(ObjectUtils.isEmpty(tzsUserInfo.getPracticeRegistration()) ? null : JSON.parseArray(tzsUserInfo.getPracticeRegistration()));
tzsUserInfoVo.setLaborContract(ObjectUtils.isEmpty(tzsUserInfo.getLaborContract()) ? null : JSON.parseArray(tzsUserInfo.getLaborContract()));
tzsUserInfoVo.setOtherAccessories(ObjectUtils.isEmpty(tzsUserInfo.getOtherAccessories()) ? null : JSON.parseArray(tzsUserInfo.getOtherAccessories()));
String companyType = getUnitType();
tzsUserInfoVo.setCompanyType(companyType.contains("个人主体") ? "individual" : "no-individual");
String unitType = getUnitType();
tzsUserInfoVo.setCompanyType(unitType.contains("个人主体") ? "individual" : "no-individual");
Map<String, Object> userInfoMap = BeanUtil.beanToMap(tzsUserInfoVo);
// userInfoMap.putAll(this.getPermissionDataJson(tzsUserInfo.getPermissionData()));
// 填充资质信息
......@@ -1159,6 +1162,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
tzsUserInfo.setSubPostName(subPostNames);
}
tzsUserInfo.setCreateDate(new Date());
tzsUserInfo.setCompanyType(this.getLoginCompanyType());
tzsUserInfo = this.createWithModel(tzsUserInfo);
// 保存资质
tzsUserPermissionServiceImpl.savePermissionData(tzsUserInfo);
......@@ -1309,9 +1313,11 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
// 更新资质
tzsUserPermissionServiceImpl.updatePermissionData(tzsUserInfoDto);
tzsUserInfoDto.setQrCodeState("1");
tzsUserInfoDto.setCompanyType(this.getLoginCompanyType());
this.updateWithModel(tzsUserInfoDto);
// 更新人员信息同步平台
syncNewPost(tzsUserInfoDto);
publisher.publish(new DataRefreshEvent(this, Collections.singletonList(tzsUserInfoDto.getSequenceNbr() + ""), DataRefreshEvent.DataType.user.name(), DataRefreshEvent.Operation.UPDATE));
return tzsUserInfoDto;
}
......@@ -1324,10 +1330,10 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
"QYRYGW-INSPECTION"
));
return iDataDictionaryService.lambdaQuery()
.select(DataDictionary::getName, DataDictionary::getCode)
.eq(DataDictionary::getIsDelete, false)
.isNull(DataDictionary::getParent)
.in(DataDictionary::getType, type)
.orderByAsc(DataDictionary::getSortNum)
.list();
}
......@@ -1617,7 +1623,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
certificateNumOnly.put(userItems.getCertificateNum(), userItems.getName());
}
// 4.登录账号的单位类型和人员类型校验
Map<String, String> allPostNames = this.postByUnitType(company).stream().collect(Collectors.toMap(DataDictionary::getName, DataDictionary::getCode));
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("-", ",").replace("\n", "").split(","));
......@@ -1642,7 +1648,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
if (!ValidationUtil.isEmpty(subPost)) {
String subPostStr = subPost.replace(",", ",").replace("-", ",").replace("\n", "");
List<String> subPostList = Arrays.asList(subPostStr.split(","));
String postCode = this.postByUnitType(company).stream().filter(item -> item.getName().equals(postName)).map(DataDictionary::getCode).findFirst().orElse("");
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;
......@@ -2185,17 +2191,32 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
}
// 接口用于人员详情界面 企业 + 监管单位 都会看到
// 接口用于人员详情界面 企业 + 监管机构 都会看到
@Override
public List<DataDictionary> postByUnitType(CompanyBo company) {
public List<DataDictionary> postByUnitType(CompanyBo company, String formType) {
List<String> unitTypes = new ArrayList<>();
ArrayList<String> postDictCodeList = new ArrayList<>();
if (company.getCompanyType().equals("监管机构")) {
String companyType = this.getLoginCompanyType();
// 监管机构
if (companyType.equals(BaseController.COMPANY_TYPE_SUPERVISION)) {
if (!FROM_TYPES_DETAIL.contains(formType)) {
// 新增/编辑 限制人员类型
unitTypes = Collections.singletonList("监管机构");
} else {
// 详情 / 默认 返回所有岗位
return this.getAllUserType();
}
}
// 企业
if (companyType.equals(BaseController.COMPANY_TYPE_COMPANY)) {
TzBaseEnterpriseInfo enterpriseInfo = baseEnterpriseInfoService.lambdaQuery()
.eq(TzBaseEnterpriseInfo::getUseCode, company.getCompanyCode())
.one();
List<String> unitTypes = Arrays.asList(enterpriseInfo.getUnitType().split("#"));
unitTypes = Arrays.asList(enterpriseInfo.getUnitType().split("#"));
}
unitTypes.forEach(unitType -> {
JsonNode companyTypeNode = postData.get(unitType);
if (companyTypeNode != null && companyTypeNode.isObject()) {
......@@ -2207,6 +2228,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
}
});
return this.getAllUserType().stream()
.filter(item -> postDictCodeList.contains(item.getCode()))
.collect(Collectors.toList());
......@@ -2224,8 +2246,8 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
public List<DataDictionary> subPostByUnitType(CompanyBo company, String parentCode) {
ArrayList<String> parentCodeList = new ArrayList<>(Arrays.asList(parentCode.split(",")));
if (company.getCompanyType().equals("监管机构")) {
String companyType = this.getLoginCompanyType();
if (companyType.equals(BaseController.COMPANY_TYPE_SUPERVISION)) {
return iDataDictionaryService.lambdaQuery()
.in(DataDictionary::getParent, parentCodeList)
.like(DataDictionary::getType, "QYRYGW")
......@@ -2521,7 +2543,6 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
}
@Override
public IPage<JSONObject> queryESForPage(ReginParams reginParams, String current, String size,
String sort, Map<String, String> map) {
......@@ -2540,11 +2561,10 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
CompanyBo company = reginParams.getCompany();
String companyType = company.getCompanyType();
String companyLevel = company.getLevel();
String companyType = this.getLoginCompanyType();
// 监管查询自己单位下 + 管辖辖区下的数据
if (companyLevel.equals(BaseController.COMPANY_TYPE_SUPERVISION)) {
if (companyType.equals(BaseController.COMPANY_TYPE_SUPERVISION)) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.should(QueryBuilders.termQuery("unitCode", company.getCompanyCode()));
meBuilder.should(QueryBuilders.prefixQuery("superviseOrgCode", company.getOrgCode()));
......@@ -2553,7 +2573,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
// 企业只查询自己单位下的
if (companyLevel.equals(BaseController.COMPANY_TYPE_COMPANY)) {
if (companyType.equals(BaseController.COMPANY_TYPE_COMPANY)) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.termQuery("unitCode", company.getCompanyCode()));
boolMust.must(meBuilder);
......@@ -2623,8 +2643,30 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
boolMust.must(meBuilder);
}
builder.query(boolMust);
// 属地监管部门
if (!ObjectUtils.isEmpty(map.get("superviseOrgCode"))) {
String superviseOrgCode = map.get("superviseOrgCode");
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.prefixQuery("superviseOrgCode", superviseOrgCode));
boolMust.must(meBuilder);
}
// 资质状态
if (!ObjectUtils.isEmpty(map.get("licensesStatus"))) {
String licensesStatus = licensesStatusStr = map.get("licensesStatus");
String path = "licenses";
String nestedField = path + "." + "expiryDate";
tzsCommonService.buildExpiryDateQueryBuilder(boolMust, licensesStatus, path, nestedField);
}
// 排序
if (StringUtils.isNotEmpty(sort)) {
String[] sortSplit = sort.split(",");
builder.sort(sortSplit[0], sortSplit[1].startsWith("asc") ? SortOrder.ASC : SortOrder.DESC);
} else {
builder.sort("createDate", SortOrder.DESC);
}
builder.query(boolMust);
builder.from((pageNumber - 1) * pageSize);
builder.size(pageSize);
request.source(builder);
......@@ -2634,16 +2676,18 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
for (SearchHit hit : response.getHits().getHits()) {
JSONObject esUserInfo = JSON.parseObject(JSON.toJSONString(hit.getSourceAsMap()));
// 个人照片
Optional.ofNullable(esUserInfo.getString("identification")).filter(StringUtils::isNotEmpty).map(jsonString -> JSON.parseArray(jsonString, CommonFile.class)).filter(list -> !ObjectUtils.isEmpty(list)).map(list -> list.get(0)).map(CommonFile::getUrl).ifPresent(photoUrl -> esUserInfo.put("photoUrl", photoUrl));
// 设备绑定状态
esUserInfo.put("bindEquStatus", Optional.ofNullable(esUserInfo.get("bindEquStatus"))
.map(String::valueOf)
.map("1"::equals)
.map(b -> b ? "是" : "否")
.orElse("否"));
esUserInfo.put("bindEquStatus", Optional.ofNullable(esUserInfo.get("bindEquStatus")).map(String::valueOf).map("1"::equals).map(b -> b ? "是" : "否").orElse("否"));
// 创建时间格式转化
esUserInfo.put("createDate", LocalDateTime.parse(esUserInfo.getString("createDate"), DateTimeFormatter.ISO_LOCAL_DATE_TIME).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
// 资质状态
esUserInfo.put("licensesStatus", tzsCommonService.getLicensesStatusWithEsUserInfo(esUserInfo, ""));
esUserInfo.put("licensesStatus", tzsCommonService.getLicensesStatusWithEsUserInfo(esUserInfo, licensesStatusStr));
// 单位类型 supervision/company
esUserInfo.put("companyType", companyType);
// 当前登录人的单位code
esUserInfo.put("loginCompanyCode", company.getCompanyCode());
esUserInfoList.add(esUserInfo);
}
result.setTotal(Objects.requireNonNull(response.getHits().getTotalHits()).value);
......@@ -2654,4 +2698,15 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
return result;
}
/**
* 获取当前登录人的单位类型
*
* @return supervision / company
*/
private String getLoginCompanyType() {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
return BaseController.COMPANY_TYPE_COMPANY.equals(reginParams.getCompany().getLevel()) ?
BaseController.COMPANY_TYPE_COMPANY : BaseController.COMPANY_TYPE_SUPERVISION;
}
}
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