Commit ac0a35f2 authored by hcing's avatar hcing

fix(tzs): 人员列表调整数据源,从es查询

parent 4df63d57
......@@ -195,6 +195,26 @@ public class EsUserInfo {
@Field(type = FieldType.Date, format = DateFormat.date)
private LocalDate licenseMinExpiryDate;
/**
* 绑定设备状态
* 已绑定 : "1"
* 未绑定 : "0"
*/
@Field(type = FieldType.Keyword)
private String bindEquStatus;
/**
* 绑定的平台账号用户id
*/
@Field(type = FieldType.Keyword)
private String amosUserId;
/**
* 绑定的平台账号用户名称
*/
@Field(type = FieldType.Text)
private String amosUserName;
@Data
public static class License {
......
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.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.PostConstruct;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
public class TZSCommonServiceImpl {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
public static final String overdue = "overdue";
public static final String near = "near";
public static final String normal = "normal";
public static final String none = "none";
public static final String noLicense = "noLicense";
public static final String noLicenseReq = "noLicenseReq";
public static final Map<String, String> licensesStatusMap = new HashMap<>(6);
public static final Map<String, String> permitStatusMap = new HashMap<>(4);
public static final Map<String, String> inspectionStatusMap = new HashMap<>(4);
@PostConstruct
public void init() {
permitStatusMap.put(overdue, "许可超期");
permitStatusMap.put(near, "许可临期");
permitStatusMap.put(normal, "许可正常");
permitStatusMap.put(none, "无有效期");
inspectionStatusMap.put(overdue, "检验超期");
inspectionStatusMap.put(near, "检验临期");
inspectionStatusMap.put(normal, "检验正常");
inspectionStatusMap.put(none, "无下次检验日期");
licensesStatusMap.put(overdue, "资质超期");
licensesStatusMap.put(near, "资质临期");
licensesStatusMap.put(normal, "资质正常");
licensesStatusMap.put(none, "无有效期");
licensesStatusMap.put(noLicense, "无资质");
licensesStatusMap.put(noLicenseReq, "无资质要求");
}
/**
* 获取用户的资质状态-从统计服务-综合统计迁移而来
*
* @param esUserInfoJson es中的用户数据
* @return 用户的资质状态
*/
public String getLicensesStatusWithEsUserInfo(JSONObject esUserInfoJson, String licensesStatusStr) {
String licensesStatus = null;
if (esUserInfoJson.containsKey("licenses")) {
// 以下人员类型有资质要求
// 人员类型(newPost):检验人员:66151、检测人员:66152
// 人员子类型(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")) {
JSONArray licenses = esUserInfoJson.getJSONArray("licenses");
String overdueStr = licensesStatusMap.get(overdue);
String nearStr = licensesStatusMap.get(near);
String normalStr = licensesStatusMap.get(normal);
String noneStr = licensesStatusMap.get(none);
if (!ObjectUtils.isEmpty(licenses)) {
if (!"".equals(licensesStatusStr)) {
licensesStatus = licensesStatusMap.get(licensesStatusStr);
} else {
List<String> permissionStatusList = new ArrayList<>();
for (Object object : licenses) {
JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(object));
if (!json.containsKey("expiryDate")) {
permissionStatusList.add(noneStr);
continue;
}
String expiryDate = json.getString("expiryDate");
if (!ObjectUtils.isEmpty(expiryDate)) {
long daysBetween = ChronoUnit.DAYS.between(LocalDate.now(), LocalDate.parse(expiryDate, formatter));
if (daysBetween < 0) {
permissionStatusList.add(overdueStr);
} else if (daysBetween <= 30) {
permissionStatusList.add(nearStr);
} else {
permissionStatusList.add(normalStr);
}
}
}
long cq = permissionStatusList.stream().filter(e -> e.equals(overdueStr)).count();
long lq = permissionStatusList.stream().filter(e -> e.equals(nearStr)).count();
long no = permissionStatusList.stream().filter(e -> e.equals(noneStr)).count();
long zc = permissionStatusList.stream().filter(e -> e.equals(normalStr)).count();
// 需按照资质严重顺序进行判断,先判断超期,再判断临期,再判断无有效期,最后判断正常
if (cq > 0) {
licensesStatus = overdueStr;
} else if (lq > 0) {
licensesStatus = nearStr;
} else if (no > 0) {
licensesStatus = noneStr;
} else if (zc > 0) {
licensesStatus = normalStr;
}
}
} else {
licensesStatus = licensesStatusMap.get(noLicense);
}
} else {
licensesStatus = !"".equals(licensesStatusStr) ? licensesStatusMap.get(licensesStatusStr) : licensesStatusMap.get(noLicenseReq);
}
}
return licensesStatus;
}
}
\ No newline at end of file
......@@ -13,6 +13,7 @@ import com.yeejoin.amos.boot.module.jg.api.dto.EquipmentClassifyDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ReportAnalysisSearchDTO;
import com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.Date;
import java.util.List;
......@@ -326,5 +327,14 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
List<CountDto> countBizNumAfterUseRegBatchProjectContraption(@Param("projectContraptionIds") List<Long> projectContraptionIds);
List<Map<String, String>> gdEquOnJgServiceOperationRecords(@Param("record") String record);
/**
* 用户绑定设备数量
*
* @param userSeq 用户userId
* @return 数量
*/
@Select("SELECT count(1) from tzs_user_equip where user_seq = #{userSeq}")
Integer queryUserBindEquNum(@Param("userSeq") String userSeq);
}
......@@ -30,13 +30,13 @@ import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo;
import com.yeejoin.amos.boot.module.common.api.entity.EsBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.common.api.entity.EsUserInfo;
import com.yeejoin.amos.boot.module.common.api.entity.TzsUserPermission;
import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.common.biz.refresh.cm.RefreshCmService;
import com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeEqDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationDto;
import com.yeejoin.amos.boot.module.jg.api.dto.PieLineEquipContraptionDto;
import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.PipelineEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.*;
......@@ -1486,6 +1486,8 @@ public class DataHandlerServiceImpl {
esUserInfo.setSubPost(RefreshDataUtils.castStrList2String(u.getSubPost()));
esUserInfo.setEquipType(RefreshDataUtils.castStrList2String(u.getEquipType()));
esUserInfo.setEquipTypeName(RefreshDataUtils.castEquCategory2Name(esUserInfo.getEquipType()));
// 绑定设备状态
esUserInfo.setBindEquStatus(this.queryUserBindEquStatus(u.getSequenceNbr()));
// 人员类型暂时取esBaseEnterpriseInfo按照资质分开后的,等检验和检测分开后,按照实际情况取就即可:useCodeEnterpriseMap.getOrDefault(u.getUnitCode(), new TzBaseEnterpriseInfo()).getUnitType()
String unitType = esUseCodeEnterpriseMap.getOrDefault(u.getUnitCode(), useCodeEnterpriseMap.getOrDefault(u.getUnitCode(), new TzBaseEnterpriseInfo()).getUnitType());
esUserInfo.setUnitType(unitType);
......@@ -1502,6 +1504,10 @@ public class DataHandlerServiceImpl {
return units.size();
}
private String queryUserBindEquStatus(Long sequenceNbr) {
return commonMapper.queryUserBindEquNum(sequenceNbr.toString()) > 0 ? "1" : "0";
}
private List<EsUserInfo.License> buildUserLicenses(Long sequenceNbr) {
List<TzsUserPermission> permissions = userPermissionMapper.selectList(new LambdaQueryWrapper<TzsUserPermission>().eq(TzsUserPermission::getUserSeq, sequenceNbr));
return permissions.stream().map(p -> {
......@@ -1625,7 +1631,7 @@ public class DataHandlerServiceImpl {
Page<String> refreshRecords = useInfoService.getBaseMapper().selectAddDataRecords(recordDtoPage);
if(!ObjectUtils.isEmpty(refreshRecords)&& refreshRecords.getRecords().size() > 0){
if (!ObjectUtils.isEmpty(refreshRecords) && refreshRecords.getRecords().size() > 0) {
List<String> records = refreshRecords.getRecords();
StopWatch watch0 = new StopWatch();
watch0.start();
......@@ -1752,7 +1758,7 @@ public class DataHandlerServiceImpl {
Page<String> refreshRecords = useInfoService.getBaseMapper().selectPiPeRecords(recordDtoPage);
if(!ObjectUtils.isEmpty(refreshRecords)&& refreshRecords.getRecords().size() > 0){
if (!ObjectUtils.isEmpty(refreshRecords) && refreshRecords.getRecords().size() > 0) {
List<String> records = refreshRecords.getRecords();
StopWatch watch0 = new StopWatch();
watch0.start();
......
......@@ -19,6 +19,7 @@ import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RequestContextWrapper;
import com.yeejoin.amos.boot.module.common.api.dto.TechParamItem;
import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo;
import com.yeejoin.amos.boot.module.common.biz.service.impl.TZSCommonServiceImpl;
import com.yeejoin.amos.boot.module.common.biz.utils.TechParamUtil;
import com.yeejoin.amos.boot.module.statistcs.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.statistcs.biz.utils.MinioUtils;
......@@ -67,7 +68,6 @@ import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.exception.BaseException;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import javax.annotation.PostConstruct;
import java.io.IOException;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
......@@ -84,6 +84,7 @@ import java.util.function.BiConsumer;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.yeejoin.amos.boot.module.common.biz.service.impl.TZSCommonServiceImpl.*;
import static org.elasticsearch.index.query.QueryBuilders.existsQuery;
/**
......@@ -107,6 +108,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
private final DataDictionaryServiceImpl dataDictionaryService;
private final DataDictionaryMapper dataDictionaryMapper;
private final EmqKeeper emqKeeper;
private final TZSCommonServiceImpl tzsCommonService;
private final RestHighLevelClient restHighLevelClient;
private final String DOWN_LOAD_START_TEMP = "{\"id\":\"%s\",\"status\":\"starting\",\"fileName\":\"%s\",\"time\":\"%s\"}";
......@@ -134,38 +136,6 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private static final Map<String, String> permitStatusMap = new HashMap<>(4);
private static final Map<String, String> licensesStatusMap = new HashMap<>(6);
private static final Map<String, String> inspectionStatusMap = new HashMap<>(4);
private static final String overdue = "overdue";
private static final String near = "near";
private static final String normal = "normal";
private static final String none = "none";
private static final String noLicense = "noLicense";
private static final String noLicenseReq = "noLicenseReq";
@PostConstruct
public void init() {
permitStatusMap.put(overdue, "许可超期");
permitStatusMap.put(near, "许可临期");
permitStatusMap.put(normal, "许可正常");
permitStatusMap.put(none, "无有效期");
inspectionStatusMap.put(overdue, "检验超期");
inspectionStatusMap.put(near, "检验临期");
inspectionStatusMap.put(normal, "检验正常");
inspectionStatusMap.put(none, "无下次检验日期");
licensesStatusMap.put(overdue, "资质超期");
licensesStatusMap.put(near, "资质临期");
licensesStatusMap.put(normal, "资质正常");
licensesStatusMap.put(none, "无有效期");
licensesStatusMap.put(noLicense, "无资质");
licensesStatusMap.put(noLicenseReq, "无资质要求");
}
public List<Map<String, Object>> queryEquipmentCategory(String key) {
List<Map<String, Object>> list;
Map<String, List<Map<String, Object>>> resourceJson = JsonUtils.getResourceJson(equipCategory);
......@@ -373,65 +343,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
}
dto.put("equipType", equipTypes.substring(0, equipTypes.length() - 1));
}
String licensesStatus = null;
if (dto.containsKey("licenses")) {
// 以下人员类型有资质要求
// 人员类型(newPost):检验人员:66151、检测人员:66152
// 人员子类型(subPost): 持证人员:6713、持证人员(P):6764、持证人员(R2):6765
String newPost = ObjectUtils.isEmpty(dto.getString("newPost")) ? "" : dto.getString("newPost");
String subPost = ObjectUtils.isEmpty(dto.getString("subPost")) ? "" : dto.getString("subPost");
if (newPost.contains("66151") || newPost.contains("66152") || subPost.contains("6713") || subPost.contains("6764") || subPost.contains("6765")) {
JSONArray licenses = dto.getJSONArray("licenses");
String overdueStr = licensesStatusMap.get(overdue);
String nearStr = licensesStatusMap.get(near);
String normalStr = licensesStatusMap.get(normal);
String noneStr = licensesStatusMap.get(none);
if (!ObjectUtils.isEmpty(licenses)) {
if (!"".equals(licensesStatusStr)) {
licensesStatus = licensesStatusMap.get(licensesStatusStr);
} else {
List<String> permissionStatusList = new ArrayList<>();
for (Object object : licenses) {
JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(object));
if (!json.containsKey("expiryDate")) {
permissionStatusList.add(noneStr);
continue;
}
String expiryDate = json.getString("expiryDate");
if (!ObjectUtils.isEmpty(expiryDate)) {
long daysBetween = ChronoUnit.DAYS.between(LocalDate.now(), LocalDate.parse(expiryDate, formatter));
if (daysBetween < 0) {
permissionStatusList.add(overdueStr);
} else if (daysBetween <= 30) {
permissionStatusList.add(nearStr);
} else {
permissionStatusList.add(normalStr);
}
}
}
long cq = permissionStatusList.stream().filter(e -> e.equals(overdueStr)).count();
long lq = permissionStatusList.stream().filter(e -> e.equals(nearStr)).count();
long no = permissionStatusList.stream().filter(e -> e.equals(noneStr)).count();
long zc = permissionStatusList.stream().filter(e -> e.equals(normalStr)).count();
// 需按照资质严重顺序进行判断,先判断超期,再判断临期,再判断无有效期,最后判断正常
if (cq > 0) {
licensesStatus = overdueStr;
} else if (lq > 0) {
licensesStatus = nearStr;
} else if (no > 0) {
licensesStatus = noneStr;
} else if (zc > 0) {
licensesStatus = normalStr;
}
}
} else {
licensesStatus = licensesStatusMap.get(noLicense);
}
} else {
licensesStatus = !"".equals(licensesStatusStr) ? licensesStatusMap.get(licensesStatusStr) : licensesStatusMap.get(noLicenseReq);
}
}
dto.put("licensesStatus", licensesStatus);
dto.put("licensesStatus", tzsCommonService.getLicensesStatusWithEsUserInfo(dto, licensesStatusStr));
list.add(dto);
}
totle = Objects.requireNonNull(response.getInternalResponse().hits().getTotalHits()).value;
......
......@@ -10,6 +10,7 @@ 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 org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
......@@ -61,4 +62,13 @@ public interface TzsUserInfoMapper extends BaseMapper<TzsUserInfo> {
* @return 对象列表
*/
List<UserPermissionDto> queryUserByPermissionOfOneCompany(@Param("filter") UserPermissionDto filter);
/**
* 用户绑定设备数量
*
* @param userSeq 用户userId
* @return 数量
*/
@Select("SELECT count(1) from tzs_user_equip where user_seq = #{userSeq}")
Integer queryUserBindEquNum(@Param("userSeq") String userSeq);
}
package com.yeejoin.amos.boot.module.tcm.api.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
......@@ -102,4 +103,6 @@ public interface ITzsUserInfoService extends IService<TzsUserInfo> {
TzIndividualityDto individualityByCompanyCode(String companyCode);
TzIndividualityDto personalInfoUpdateById(Map<String, Object> map);
IPage<JSONObject> queryESForPage(ReginParams reginParams, String current, String size, String sort, Map<String, String> map);
}
......@@ -143,6 +143,16 @@ public class TzsUserInfoController extends BaseController {
return ResponseHelper.buildResponse(tzsUserInfoService.page(dto, page, sort));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/queryESForPage")
@ApiOperation(httpMethod = "GET", value = "人员信息列表,从ES中获取数据", notes = "人员信息列表,替换掉原先的从数据库查询的接口,用于监管和企业的人员管理列表")
public ResponseModel<IPage<JSONObject>> queryESForPage(@RequestParam(value = "current") String current,
@RequestParam(value = "size") String size,
@RequestParam(value = "sort", required = false) String sort,
@RequestParam Map<String, String> map) {
return ResponseHelper.buildResponse(tzsUserInfoService.queryESForPage(getSelectedOrgInfo(), current, size, sort, map));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/createUnitPerson")
......@@ -328,7 +338,7 @@ public class TzsUserInfoController extends BaseController {
filter.setOrgCode(getSelectedOrgInfo().getCompany().getOrgCode());
filter.setCityCode(getSelectedOrgInfo().getCompany().getCompanyCode());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (!ValidationUtil.isEmpty(map.get("createDateRange"))){
if (!ValidationUtil.isEmpty(map.get("createDateRange"))) {
String createDateRangeObj = Objects.toString(map.get("createDateRange"));
String[] split = createDateRangeObj.replace("[", "").replace("]", "").split(",");
String startDateStr = split[0];
......
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.common.api.entity.EsUserInfo;
import com.yeejoin.amos.boot.module.common.api.entity.TzsUserPermission;
import com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserInfoMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserPermissionMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
......@@ -16,6 +17,8 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class CommonRefreshService {
private final TzsUserInfoMapper userInfoMapper;
private final TzsUserPermissionMapper userPermissionMapper;
public List<EsUserInfo.License> buildUserLicenses(Long sequenceNbr) {
......@@ -28,4 +31,8 @@ public class CommonRefreshService {
return license;
}).collect(Collectors.toList());
}
public String queryUserBindEquStatus(Long userSeq) {
return userInfoMapper.queryUserBindEquNum(userSeq.toString()) > 0 ? "1" : "0";
}
}
......@@ -69,6 +69,8 @@ public class UserRefreshHandler implements IDataRefreshHandler {
esUserInfo.setSubPost(RefreshDataUtils.castStrList2String(userInfo.getSubPost()));
esUserInfo.setEquipType(RefreshDataUtils.castStrList2String(userInfo.getEquipType()));
esUserInfo.setEquipTypeName(RefreshDataUtils.castEquCategory2Name(esUserInfo.getEquipType()));
// 绑定设备状态
esUserInfo.setBindEquStatus(commonRefreshService.queryUserBindEquStatus(userInfo.getSequenceNbr()));
Optional<EsBaseEnterpriseInfo> esBaseEnterpriseInfo = esBaseEnterpriseInfoDao.findById(unit.getSequenceNbr() + "");
// 人员类型暂时取esBaseEnterpriseInfo按照资质分开后的,等检验和检测分开后,按照实际情况取就即可:unit.getUnitType()
String unitType = esBaseEnterpriseInfo.map(EsBaseEnterpriseInfo::getUnitType).orElse(unit.getUnitType());
......
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