diff --git a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java index 841888a70..0e25ba4af 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java @@ -264,6 +264,8 @@ public class Project implements Serializable { private String jzgAppSecret; @ApiModelProperty(value = "金筑工projectCode") private String jzgProjectCode; + @ApiModelProperty(value = "金筑工访问host") + private String jzgHost; /** * runde平台token diff --git a/src/main/java/com/zhgd/xmgl/task/JzgTask.java b/src/main/java/com/zhgd/xmgl/task/JzgTask.java index e2d7926d5..c2d758525 100644 --- a/src/main/java/com/zhgd/xmgl/task/JzgTask.java +++ b/src/main/java/com/zhgd/xmgl/task/JzgTask.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.URLUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -101,35 +102,39 @@ public class JzgTask { public void realNameSystem() { List projects = projectMapper.selectList(null); for (Project project : projects) { - asynProject(project); + syncProject(project); } } - public void asynProject(Project project) { + public void syncProject(Project project) { String appKey = project.getJzgAppKey(); String appSecret = project.getJzgAppSecret(); String projectCode = project.getJzgProjectCode(); + String jzgHost = project.getJzgHost(); String projectSn = project.getProjectSn(); - if (StrUtil.isNotBlank(appKey) && StrUtil.isNotBlank(appSecret) && StrUtil.isNotBlank(projectCode)) { + if (StrUtil.isNotBlank(appKey) && StrUtil.isNotBlank(appSecret) && StrUtil.isNotBlank(projectCode) && StrUtil.isNotBlank(jzgHost)) { log.info("realNameSystem实名制同步开始,projectSn:{}", projectSn); - syncEnterpriseInfo(appKey, appSecret, projectCode, projectSn); - syncTeamInfo(appKey, appSecret, projectCode, projectSn); - syncManagerInfo(appKey, appSecret, projectCode, projectSn); - syncWorker(appKey, appSecret, projectCode, projectSn); - syncWorkerAttendance(appKey, appSecret, projectCode, projectSn); - + syncEnterpriseInfo(appKey, appSecret, projectCode, projectSn, jzgHost); + syncTeamInfo(appKey, appSecret, projectCode, projectSn, jzgHost); + syncManagerInfo(appKey, appSecret, projectCode, projectSn, jzgHost); + syncWorker(appKey, appSecret, projectCode, projectSn, jzgHost); + syncWorkerAttendance(appKey, appSecret, projectCode, projectSn, jzgHost); } } - private void syncWorkerAttendance(String appKey, String appSecret, String projectCode, String projectSn) { - ArrayList jzgList = getPostAllList(appKey, appSecret, projectCode, JzgWorkerAttendance.class, "api/v1/getAttendanceInfo"); + private void syncWorkerAttendance(String appKey, String appSecret, String projectCode, String projectSn, String host) { + ArrayList jzgList = getPostAllList(appKey, appSecret, projectCode, JzgWorkerAttendance.class, "/api/v1/getAttendanceInfo", host); String key = JZG_WORKER_ATTENDANCE_LAST_TIME_PREFIX + projectSn; Long time = (Long) redisRepository.get(key); for (JzgWorkerAttendance attendance : jzgList) { - if (time == null || attendance.getCheckDate() > time) { - saveWorkerInfo(attendance, projectSn); + try { + if (time == null || attendance.getCheckDate() > time) { + saveWorkerInfo(attendance, projectSn); + } + } catch (Exception e) { + log.error("err:", e); } } if (CollUtil.isNotEmpty(jzgList)) { @@ -173,48 +178,64 @@ public class JzgTask { return null; } - private void syncWorker(String appKey, String appSecret, String projectCode, String projectSn) { - ArrayList jzgList = this.getPostAllList(appKey, appSecret, projectCode, JzgWorker.class, "api/v1/getWorkerInfo"); + private void syncWorker(String appKey, String appSecret, String projectCode, String projectSn, String host) { + ArrayList jzgList = this.getPostAllList(appKey, appSecret, projectCode, JzgWorker.class, "/api/v1/getWorkerInfo", host); List records = workerInfoMapper.selectList(new LambdaQueryWrapper() .eq(WorkerInfo::getProjectSn, projectSn).eq(WorkerInfo::getPersonType, 1)); Map recordMap = records.stream().collect(Collectors.toMap(o -> o.getIdCard(), Function.identity(), (o, o2) -> o)); Map map = jzgList.stream().collect(Collectors.toMap(JzgWorker::getIdCardNumber, Function.identity(), (o, o2) -> o)); for (JzgWorker jzgWorker : jzgList) { - String idCardNumber = jzgWorker.getIdCardNumber(); - WorkerInfo info = recordMap.get(idCardNumber); - if (info == null) { - workerInfoService.saveWorkerInfo(getWorker(jzgWorker, null, projectSn)); - } else { - workerInfoService.editWorkerInfo(getWorker(jzgWorker, info, projectSn)); + try { + String idCardNumber = jzgWorker.getIdCardNumber(); + WorkerInfo info = recordMap.get(idCardNumber); + if (info == null) { + workerInfoService.saveWorkerInfo(getWorker(jzgWorker, null, projectSn)); + } else { + workerInfoService.editWorkerInfo(getWorker(jzgWorker, info, projectSn)); + } + } catch (Exception e) { + log.error("err:", e); } } for (WorkerInfo workerInfo : records) { - JzgWorker jzgManagerInfo = map.get(workerInfo.getIdCard()); - if (jzgManagerInfo == null) { - workerInfoService.deleteWorkerInfo(String.valueOf(workerInfo.getId())); + try { + JzgWorker jzgManagerInfo = map.get(workerInfo.getIdCard()); + if (jzgManagerInfo == null) { + workerInfoService.deleteWorkerInfo(String.valueOf(workerInfo.getId())); + } + } catch (Exception e) { + log.error("err:", e); } } } - private void syncManagerInfo(String appKey, String appSecret, String projectCode, String projectSn) { - ArrayList jzgList = getPostAllList(appKey, appSecret, projectCode, JzgManagerInfo.class, "api/v1/getManagerInfo"); + private void syncManagerInfo(String appKey, String appSecret, String projectCode, String projectSn, String host) { + ArrayList jzgList = getPostAllList(appKey, appSecret, projectCode, JzgManagerInfo.class, "/api/v1/getManagerInfo", host); List records = workerInfoMapper.selectList(new LambdaQueryWrapper() .eq(WorkerInfo::getProjectSn, projectSn).eq(WorkerInfo::getPersonType, 2)); Map recordMap = records.stream().collect(Collectors.toMap(o -> o.getIdCard(), Function.identity(), (o, o2) -> o)); Map jzgEnterpriseInfoMap = jzgList.stream().collect(Collectors.toMap(JzgManagerInfo::getIdCardNumber, Function.identity())); for (JzgManagerInfo jzgManagerInfo : jzgList) { - String idCardNumber = jzgManagerInfo.getIdCardNumber(); - WorkerInfo info = recordMap.get(idCardNumber); - if (info == null) { - workerInfoService.saveWorkerInfo(getManagerInfo(jzgManagerInfo, null, projectSn)); - } else { - workerInfoService.editWorkerInfo(getManagerInfo(jzgManagerInfo, info, projectSn)); + try { + String idCardNumber = jzgManagerInfo.getIdCardNumber(); + WorkerInfo info = recordMap.get(idCardNumber); + if (info == null) { + workerInfoService.saveWorkerInfo(getManagerInfo(jzgManagerInfo, null, projectSn)); + } else { + workerInfoService.editWorkerInfo(getManagerInfo(jzgManagerInfo, info, projectSn)); + } + } catch (Exception e) { + log.error("err:", e); } } for (WorkerInfo workerInfo : records) { - JzgManagerInfo jzgManagerInfo = jzgEnterpriseInfoMap.get(workerInfo.getIdCard()); - if (jzgManagerInfo == null) { - workerInfoService.deleteWorkerInfo(String.valueOf(workerInfo.getId())); + try { + JzgManagerInfo jzgManagerInfo = jzgEnterpriseInfoMap.get(workerInfo.getIdCard()); + if (jzgManagerInfo == null) { + workerInfoService.deleteWorkerInfo(String.valueOf(workerInfo.getId())); + } + } catch (Exception e) { + log.error("err:", e); } } } @@ -229,7 +250,7 @@ public class JzgTask { .eq(EnterpriseInfo::getSocialCode, jzg.getCorpCode())); wi.setEnterpriseId(ei.getId()); wi.setSex(Integer.valueOf(jzg.getGender())); - wi.setNation(jzg.getNation()); + wi.setNation(getNation(jzg.getNation())); if (StrUtil.isNotBlank(jzg.getIssueCardPicUrl())) { wi.setFieldAcquisitionUrl(uploadFileService.uploadUrlResourceRtName(jzg.getIssueCardPicUrl())); } @@ -275,7 +296,7 @@ public class JzgTask { wi.setEnterpriseId(ei.getId()); wi.setSex(Integer.valueOf(jzg.getGender())); wi.setNativePlace(jzg.getAreaCode()); - wi.setNation(jzg.getNation()); + wi.setNation(getNation(jzg.getNation())); wi.setPhoneNumber(jzg.getCellPhone()); wi.setIssuingAuthorityForIdcard(jzg.getGrantOrg()); wi.setNowPlace(jzg.getAddress()); @@ -295,6 +316,131 @@ public class JzgTask { return wi; } + private String getNation(String nation) { + if (StrUtil.isBlank(nation)) { + return null; + } + switch (nation) { + case "1": + return "汉"; + case "2": + return "蒙古"; + case "3": + return "回"; + case "4": + return "藏"; + case "5": + return "维吾尔"; + case "6": + return "苗"; + case "7": + return "彝"; + case "8": + return "壮"; + case "9": + return "布依"; + case "10": + return "朝鲜"; + case "11": + return "满"; + case "12": + return "侗"; + case "13": + return "瑶"; + case "14": + return "白"; + case "15": + return "土家"; + case "16": + return "哈尼"; + case "17": + return "哈萨克"; + case "18": + return "傣"; + case "19": + return "黎"; + case "20": + return "傈僳"; + case "21": + return "佤"; + case "22": + return "畲"; + case "23": + return "高山"; + case "24": + return "拉祜"; + case "25": + return "水"; + case "26": + return "东乡"; + case "27": + return "纳西"; + case "28": + return "景颇"; + case "29": + return "柯尔克孜"; + case "30": + return "土"; + case "31": + return "达翰尔"; + case "32": + return "仫佬"; + case "33": + return "羌"; + case "34": + return "布朗"; + case "35": + return "撒拉"; + case "36": + return "毛南"; + case "37": + return "仡佬"; + case "38": + return "锡伯"; + case "39": + return "阿昌"; + case "40": + return "普米"; + case "41": + return "塔吉克"; + case "42": + return "怒"; + case "43": + return "乌孜别克"; + case "44": + return "俄罗斯"; + case "45": + return "鄂温克"; + case "46": + return "德昂"; + case "47": + return "保安"; + case "48": + return "裕固"; + case "49": + return "京"; + case "50": + return "塔塔尔"; + case "51": + return "独龙"; + case "52": + return "鄂伦春"; + case "53": + return "赫哲"; + case "54": + return "门巴"; + case "55": + return "珞巴"; + case "56": + return "基诺"; + case "57": + return "其他"; + case "58": + return "外国血统中国人士"; + } + return null; + } + private String getJobName(String jobType) { if (StrUtil.isBlank(jobType)) { return null; @@ -414,8 +560,8 @@ public class JzgTask { } - private void syncTeamInfo(String appKey, String appSecret, String projectCode, String projectSn) { - ArrayList jzgList = getPostAllList(appKey, appSecret, projectCode, JzgTeamInfo.class, "api/v1/getTeamInfo"); + private void syncTeamInfo(String appKey, String appSecret, String projectCode, String projectSn, String host) { + ArrayList jzgList = getPostAllList(appKey, appSecret, projectCode, JzgTeamInfo.class, "/api/v1/getTeamInfo", host); HashMap eMap = new HashMap<>(); eMap.put("projectSn", projectSn); eMap.put("pageNo", "1"); @@ -424,23 +570,31 @@ public class JzgTask { Map recordMap = records.stream().collect(Collectors.toMap(o -> o.getJzgTeamSn(), Function.identity(), (o, o2) -> o)); Map jzgEnterpriseInfoMap = jzgList.stream().collect(Collectors.toMap(JzgTeamInfo::getTeamSysNo, Function.identity())); for (JzgTeamInfo teamInfo : jzgList) { - String teamSysNo = teamInfo.getTeamSysNo(); - TeamInfo info = recordMap.get(teamSysNo); - if (info == null) { - saveTeamInfo(getTeamInfo(teamInfo, null, projectSn)); - } else { - editTeamInfo(getTeamInfo(teamInfo, info, projectSn)); + try { + String teamSysNo = teamInfo.getTeamSysNo(); + TeamInfo info = recordMap.get(teamSysNo); + if (info == null) { + saveTeamInfo(getTeamInfo(teamInfo, null, projectSn)); + } else { + editTeamInfo(getTeamInfo(teamInfo, info, projectSn)); + } + } catch (Exception e) { + log.error("err:", e); } } for (TeamInfo teamInfo : records) { - JzgTeamInfo jzgTeamInfo = jzgEnterpriseInfoMap.get(teamInfo.getJzgTeamSn()); - if (jzgTeamInfo == null) { - teamInfoMapper.deleteById(teamInfo.getId()); + try { + JzgTeamInfo jzgTeamInfo = jzgEnterpriseInfoMap.get(teamInfo.getJzgTeamSn()); + if (jzgTeamInfo == null) { + teamInfoMapper.deleteById(teamInfo.getId()); + } + } catch (Exception e) { + log.error("err:", e); } } } - private ArrayList getPostAllList(String appKey, String appSecret, String projectCode, Class clz, String uri) { + private ArrayList getPostAllList(String appKey, String appSecret, String projectCode, Class clz, String uri, String host) { Integer total = 0; Integer page = 1; ArrayList jzgList = new ArrayList<>(); @@ -451,7 +605,7 @@ public class JzgTask { bodyQuery.put("page", page + ""); bodyQuery.put("startDate", DateUtil.formatDate(DateUtil.offsetDay(date, -1))); bodyQuery.put("endDate", DateUtil.formatDate(date)); - JzgRt jzgRt = jzgPost(appKey, appSecret, projectCode, uri, bodyQuery); + JzgRt jzgRt = jzgPost(appKey, appSecret, projectCode, uri, bodyQuery, host); if (jzgRt == null) { return new ArrayList<>(); } @@ -500,7 +654,7 @@ public class JzgTask { ti.setLeaderIdCard(jzgTeamInfo.getResponsiblePersonIdNumber()); ti.setLeaderPhone(jzgTeamInfo.getResponsiblePersonPhone()); //ti.setWorkerTypeId(); - //ti.setTeamType(); + ti.setTeamType("普通班组"); ti.setProjectSn(projectSn); ti.setTeamSn(oT != null ? oT.getTeamSn() : null); if (oT == null) { @@ -514,8 +668,8 @@ public class JzgTask { return ti; } - private void syncEnterpriseInfo(String appKey, String appSecret, String projectCode, String projectSn) { - JzgRt jzgRt = jzgPost(appKey, appSecret, projectCode, "api/v1/getCompanyInfo", new JSONObject()); + private void syncEnterpriseInfo(String appKey, String appSecret, String projectCode, String projectSn, String host) { + JzgRt jzgRt = jzgPost(appKey, appSecret, projectCode, "/api/v1/getCompanyInfo", new JSONObject(), host); String data = jzgRt.getData(); HashMap eMap = new HashMap<>(); eMap.put("projectSn", projectSn); @@ -527,21 +681,29 @@ public class JzgTask { }); Map jzgEnterpriseInfoMap = jzgEnterpriseInfos.stream().collect(Collectors.toMap(JzgEnterpriseInfo::getCorpCode, Function.identity())); for (JzgEnterpriseInfo jzgEnterpriseInfo : jzgEnterpriseInfos) { - String corpCode = jzgEnterpriseInfo.getCorpCode(); - EnterpriseInfo enterpriseInfo = recordMap.get(corpCode); - if (enterpriseInfo == null) { - enterpriseInfoService.saveEnterpriseInfo(getEnterpriseInfo(jzgEnterpriseInfo, null, projectSn)); - } else { - enterpriseInfoService.updateEnterpriseInfo(getEnterpriseInfo(jzgEnterpriseInfo, enterpriseInfo, projectSn)); + try { + String corpCode = jzgEnterpriseInfo.getCorpCode(); + EnterpriseInfo enterpriseInfo = recordMap.get(corpCode); + if (enterpriseInfo == null) { + enterpriseInfoService.saveEnterpriseInfo(getEnterpriseInfo(jzgEnterpriseInfo, null, projectSn)); + } else { + enterpriseInfoService.updateEnterpriseInfo(getEnterpriseInfo(jzgEnterpriseInfo, enterpriseInfo, projectSn)); + } + } catch (Exception e) { + log.error("err:", e); } } for (EnterpriseInfo enterpriseInfo : records) { - JzgEnterpriseInfo jzgEnterpriseInfo = jzgEnterpriseInfoMap.get(enterpriseInfo.getSocialCode()); - if (jzgEnterpriseInfo == null) { - HashMap edMap = new HashMap<>(); - edMap.put("enterpriseId", enterpriseInfo.getId()); - edMap.put("projectSn", projectSn); - removeEnterpriseInfo(edMap); + try { + JzgEnterpriseInfo jzgEnterpriseInfo = jzgEnterpriseInfoMap.get(enterpriseInfo.getSocialCode()); + if (jzgEnterpriseInfo == null) { + HashMap edMap = new HashMap<>(); + edMap.put("enterpriseId", enterpriseInfo.getId()); + edMap.put("projectSn", projectSn); + removeEnterpriseInfo(edMap); + } + } catch (Exception e) { + log.error("err:", e); } } } @@ -565,6 +727,7 @@ public class JzgTask { ei.setEnterpriseProperty(getEnterpriseProperty(jzgEnterpriseInfo.getOrganizationType())); ei.setEnterpriseSn(enterpriseInfo != null ? enterpriseInfo.getEnterpriseSn() : null); ei.setProjectSn(projectSn); + ei.setEnterpriseTypeId(Long.valueOf(jzgEnterpriseInfo.getCorpType())); return ei; } @@ -586,7 +749,7 @@ public class JzgTask { return null; } - private JzgRt jzgPost(String appKey, String appSecret, String projectCode, String uri, JSONObject jsonObject) { + private JzgRt jzgPost(String appKey, String appSecret, String projectCode, String uri, JSONObject jsonObject, String host) { try { Map params = new HashMap<>(); String nonce = RandomUtil.randomString(16); @@ -605,7 +768,8 @@ public class JzgTask { params.put("sign", sign); String toParams = HttpUtil.toParams(params); //发送请求 - String url = "http://lznmg.xinyegk.com/" + uri + "?" + toParams; + String url = host + uri + "?" + toParams; + url = URLUtil.normalize(url); log.info("jzgPost url: {}", url); String body = jsonObject.toJSONString(); log.info("jzgPost body: {}", body);