package com.cloud.attendance.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.cloud.attendance.service.TokenService; import com.cloud.attendance.service.UserService; import com.cloud.attendance.utils.EnumStr; import com.cloud.common.utils.RestTemplateUtil; import com.cloud.model.sys.LoginAppUser; import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; @Service public class UserServiceImpl implements UserService { @Autowired private EnumStr enumStr; @Autowired private TokenService tokenService; // BbEmployee/feign/findEmpById @Override public Map findEmpById(String personId, Integer orgId) { // 调用 人员模块 String userHOSTNAME = enumStr.getUserHOSTNAME(); int userHTTP_port = enumStr.getUserHTTP_PORT(); String userQueryPerIdUrl = EnumStr.findEmpByIdUrl; String queryUrl = "http://"+userHOSTNAME+":"+userHTTP_port+userQueryPerIdUrl; JSONObject dataBaseParams = new JSONObject(); dataBaseParams.put("id",personId); dataBaseParams.put("orgId",orgId); String resp = RestTemplateUtil.post(queryUrl, dataBaseParams, MediaType.APPLICATION_FORM_URLENCODED, false); Map map = JSONObject.parseObject(resp, Map.class); if (map != null){ if ("200".equals(map.get("type"))){ // 学生类型 map.put("phone",null); // 手机号 处理为空 }else if ("100".equals(map.get("type"))){ map.put("no",null); // 学号处理为空 } }else { map = new HashMap(); // 防止 后面调用数据为空 } return map; } // /BbEmployee/list // "id=选择的部门id/001-总库" "start-->起始页-->true," "length-->条数--> true" // "orgId-->分库orgId--> false, -->String", "groupInformation-->人员姓名 身份证号 学号,手机号,组织机构名称等组合信息", // "type-->人员类型-学生 教师 校外", "distributionIds-->集群数组","phone" @Override public List queryPersonByContent(String contentValue, String gradeValue, String classValue, String identity, String orgId,Boolean delFlag,List orgIds){ // 调用 人员模块 String userHOSTNAME = enumStr.getUserHOSTNAME(); int userHTTP_port = enumStr.getUserHTTP_PORT(); String userQueryPerIdUrl = EnumStr.queryPersonList; String queryUrl = "http://"+userHOSTNAME+":"+userHTTP_port+userQueryPerIdUrl; JSONObject dataBaseParams = new JSONObject(); if (classValue != null){ dataBaseParams.put("id",classValue); }else if (gradeValue != null){ dataBaseParams.put("id",gradeValue); }else { LoginAppUser appUser = tokenService.currentUser(); Long orgId1 = appUser.getOrgId(); Integer officeId = appUser.getOfficeId(); dataBaseParams.put("id",officeId); if (StringUtils.isBlank(orgId)){ orgId = orgId1.toString(); } } if (orgIds != null && orgIds .size() > 0){ dataBaseParams.put("orgIds",orgIds); } dataBaseParams.put("start",0); dataBaseParams.put("length",5000); dataBaseParams.put("orgId",orgId); dataBaseParams.put("delFlag",delFlag); dataBaseParams.put("groupInformation",contentValue); dataBaseParams.put("type",identity); String resp = RestTemplateUtil.post(queryUrl, dataBaseParams, MediaType.APPLICATION_JSON_UTF8, false); JSONObject map = JSONObject.parseObject(resp); Integer total = map.getInteger("total"); if (total > 5000){ // 接着查询 } if (map == null){ map = new JSONObject(); // 防止 后面调用数据为空 } JSONArray data = map.getJSONArray("data"); // data.parallelStream().map List usrIds = Lists.transform(data, jsonObj->((JSONObject)jsonObj).getString("id")); return usrIds; } @Override public List queryPersonByContentForAll(String contentValue, String gradeValue, String classValue, String identity, String orgId){ // 调用 人员模块 String userHOSTNAME = enumStr.getUserHOSTNAME(); int userHTTP_port = enumStr.getUserHTTP_PORT(); String userQueryPerIdUrl = EnumStr.queryPersonList; String queryUrl = "http://"+userHOSTNAME+":"+userHTTP_port+userQueryPerIdUrl; JSONObject dataBaseParams = new JSONObject(); if (classValue != null){ dataBaseParams.put("id",classValue); }else if (gradeValue != null){ dataBaseParams.put("id",gradeValue); }else { LoginAppUser appUser = tokenService.currentUser(); Long orgId1 = appUser.getOrgId(); Integer officeId = appUser.getOfficeId(); dataBaseParams.put("id",officeId); if (StringUtils.isBlank(orgId)){ orgId = orgId1.toString(); } } dataBaseParams.put("start",0); dataBaseParams.put("length",5000); dataBaseParams.put("orgId",orgId); dataBaseParams.put("groupInformation",contentValue); dataBaseParams.put("type",identity); String resp = RestTemplateUtil.post(queryUrl, dataBaseParams, MediaType.APPLICATION_JSON_UTF8, false); JSONObject map = JSONObject.parseObject(resp); Integer total = map.getInteger("total"); if (total > 5000){ // 接着查询 } if (map == null){ map = new JSONObject(); // 防止 后面调用数据为空 } JSONArray data = map.getJSONArray("data"); return data; } // /BbEmployee/queryPersonSimpleInfoById @Override public Map getPersonInfoById(String perId) { // 调用 人员模块 String userHOSTNAME = enumStr.getUserHOSTNAME(); int userHTTP_port = enumStr.getUserHTTP_PORT(); String userQueryPerIdUrl = EnumStr.queryPersonSimpleInfoById; String queryUrl = "http://"+userHOSTNAME+":"+userHTTP_port+userQueryPerIdUrl; JSONObject dataBaseParams = new JSONObject(); dataBaseParams.put("personId",perId); dataBaseParams.put("delFlag",true); String resp = RestTemplateUtil.post(queryUrl, dataBaseParams, MediaType.APPLICATION_FORM_URLENCODED, false); Map map = JSONObject.parseObject(resp, Map.class); if (map != null){ if ("200".equals(map.get("type"))){ // 学生类型 map.put("phone",null); // 手机号 处理为空 }else if ("100".equals(map.get("type"))){ map.put("no",null); // 学号处理为空 } }else { map = new HashMap(); // 防止 后面调用数据为空 } return map; } @Override public Map queryAllPersonId() { // 调用 人员模块 String userHOSTNAME = enumStr.getUserHOSTNAME(); int userHTTP_port = enumStr.getUserHTTP_PORT(); String userQueryPerIdUrl = EnumStr.queryPersonList; String queryUrl = "http://"+userHOSTNAME+":"+userHTTP_port+userQueryPerIdUrl; JSONObject dataBaseParams = new JSONObject(); dataBaseParams.put("id","001"); dataBaseParams.put("start",0); dataBaseParams.put("length",5000); dataBaseParams.put("orgId",null); dataBaseParams.put("groupInformation",null); dataBaseParams.put("type",null); dataBaseParams.put("delFlag",true); // 是否查询全部 String resp = RestTemplateUtil.post(queryUrl, dataBaseParams, MediaType.APPLICATION_JSON_UTF8, false); JSONObject map = JSONObject.parseObject(resp); Integer total = map.getInteger("total"); if (total > 5000){ // 接着查询 } if (map == null){ map = new JSONObject(); // 防止 后面调用数据为空 } JSONArray data = map.getJSONArray("data"); // data.parallelStream().map // List usrIds = Lists.transform(data, jsonObj->((JSONObject)jsonObj).getString("id")); Map maps = data.stream().collect(Collectors.toMap(user->((JSONObject)user).getString("id"), user -> (JSONObject) user)); return maps; } public JSONArray queryAllPersonList() { // 调用 人员模块 String userHOSTNAME = enumStr.getUserHOSTNAME(); int userHTTP_port = enumStr.getUserHTTP_PORT(); String userQueryPerIdUrl = EnumStr.queryPersonList; String queryUrl = "http://"+userHOSTNAME+":"+userHTTP_port+userQueryPerIdUrl; JSONObject dataBaseParams = new JSONObject(); dataBaseParams.put("id","001"); dataBaseParams.put("start",0); dataBaseParams.put("length",5000); dataBaseParams.put("orgId",null); dataBaseParams.put("groupInformation",null); dataBaseParams.put("type",null); String resp = RestTemplateUtil.post(queryUrl, dataBaseParams, MediaType.APPLICATION_JSON_UTF8, false); JSONObject map = JSONObject.parseObject(resp); Integer total = map.getInteger("total"); if (total > 5000){ // 接着查询 } if (map == null){ map = new JSONObject(); // 防止 后面调用数据为空 } JSONArray data = map.getJSONArray("data"); return data; } @Override public Map queryPersonType() { String userHOSTNAME = enumStr.getUserHOSTNAME(); int userHTTP_port = enumStr.getUserHTTP_PORT(); String userQueryPerIdUrl = EnumStr.queryPersonList; String queryUrl = "http://"+enumStr.getUserHOSTNAME()+":"+enumStr.getUserHTTP_PORT() +"/data/api-u/dict/getSysDictByType"; // ?orgId=1&type=PEO_TYPE&module=SYSTEM // loginData/api-u/dict/getSysDictByType?orgId=1&type=PEO_TYPE&module=SYSTEM JSONObject params = new JSONObject(); params.put("orgId","1"); params.put("type","PEO_TYPE"); params.put("module","SYSTEM"); String s = RestTemplateUtil.get(queryUrl, params, true); JSONObject resp = JSONObject.parseObject(s); Map personType = new HashMap<>(); if ("0".equals(resp.getString("code"))){ JSONArray data = resp.getJSONArray("data"); if (data!=null &&data.size()>0){ personType = data.parallelStream().collect(Collectors.toMap( perType -> ((JSONObject) perType).getString("value"), perType -> ((JSONObject) perType).getString("lable"))); } }else { throw new RuntimeException(resp.getString("message")); } return personType; } }