diff --git a/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/controller/PayslipPageController.java b/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/controller/PayslipPageController.java index 0aa485d..57a8662 100644 --- a/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/controller/PayslipPageController.java +++ b/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/controller/PayslipPageController.java @@ -8,10 +8,13 @@ import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.weaver.common.authority.annotation.WeaPermission; import com.weaver.common.base.entity.result.WeaResult; import com.weaver.seconddev.sxjg.config.EbDbDataSourceConfigResp; import com.weaver.seconddev.sxjg.util.NccApiUtil; +import com.weaver.seconddev.sxjg.util.ProvinceCityNode; import lombok.extern.slf4j.Slf4j; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.*; @@ -154,32 +157,99 @@ public class PayslipPageController { //跟据doclistpk获取基础数据集合 @WeaPermission(publicPermission = true) @GetMapping("/getDataSourceList") - public WeaResult getDataSourceList(@RequestParam("dataSourcePk")String dataSourcePk) { - JSONArray result = new JSONArray(); - String sql = "select pk_defdoc,defdocname,enablestate,pid from ec_ebuilder_designer.uf_ncc_defdoc where doclistpk = '"+dataSourcePk+"'"; - List> rs = jdbcTemplateresp.queryForList(sql); - Map singlemap = null; - if(CollectionUtil.isNotEmpty(rs)) { - for(Map rsmap : rs) { - JSONObject rsobj = new JSONObject(); - String pk_defdoc = String.valueOf(rsmap.get("pk_defdoc")); - String defdocname = String.valueOf(rsmap.get("defdocname")); - String enablestate = String.valueOf(rsmap.get("enablestate")); - String parentdoc = String.valueOf(rsmap.get("pid")); - rsobj.put("pkvalue",pk_defdoc); - rsobj.put("pkname",defdocname); - rsobj.put("enablestate",enablestate); - if(!("null".equals(parentdoc))) { - sql = "select pk_defdoc from ec_ebuilder_designer.uf_ncc_defdoc where id = '"+parentdoc+"'"; - singlemap = jdbcTemplateresp.queryForMap(sql); - String singlepkdoc = String.valueOf(singlemap.get("pk_defdoc")); - rsobj.put("parentpkvlaue",singlepkdoc); - }else { - rsobj.put("parentpkvlaue",parentdoc); + public WeaResult getDataSourceList(@RequestParam("dataSourcePk")String dataSourcePk, + @RequestParam(value = "type",required = false,defaultValue = "0") Integer type) throws JsonProcessingException { + if(type == 10) {//籍贯省市区 + JSONArray result = new JSONArray(); + String sql = "select id,pk_defdoc,defdocname,enablestate,pid from ec_ebuilder_designer.uf_ncc_defdoc where doclistpk = '"+dataSourcePk+"'"; + List> rs = jdbcTemplateresp.queryForList(sql); + List data = new ArrayList<>(); + if(CollectionUtil.isNotEmpty(rs)) { + for(Map single : rs) { + String id = String.valueOf(single.get("id")); + String pk_defdoc = String.valueOf(single.get("pk_defdoc")); + String defdocname = String.valueOf(single.get("defdocname")); + //String enablestate = String.valueOf(single.get("enablestate")); + String pid = String.valueOf(single.get("pid")); + ProvinceCityNode provinceCityNode = new ProvinceCityNode(id,pid,pk_defdoc,defdocname); + data.add(provinceCityNode); } - result.add(rsobj); + //创建一个List集合来存放最终的树状结构数据 + List> menuList = new ArrayList<>(); + // 先存入最顶级的树(0代表没有父级,即最顶级),然后通过最顶级的id递归获取子级 + for (ProvinceCityNode entity : data) { + Map map = new HashMap<>(); + if (entity.parentid ==null || "null".equals(entity.parentid) || "".equals(entity.parentid) || "0".equals(entity.parentid)) { + map.put("id", entity.id); + map.put("value", entity.value); + map.put("isLeaf", entity.isLeaf); + map.put("parentid", entity.parentid); + map.put("loading", entity.loading); + map.put("label", entity.label); + map.put("disabled", entity.disabled); + map.put("children", getChildren(data, entity.id)); + menuList.add(map); + } + } + ObjectMapper objectMapper = new ObjectMapper(); + // 将 List> 转换为 JSON + String json = objectMapper.writeValueAsString(menuList); + result = JSONArray.parseArray(json); + } + return WeaResult.success(result); + }else { + JSONArray result = new JSONArray(); + String sql = "select pk_defdoc,defdocname,enablestate,pid from ec_ebuilder_designer.uf_ncc_defdoc where doclistpk = '"+dataSourcePk+"'"; + List> rs = jdbcTemplateresp.queryForList(sql); + Map singlemap = null; + if(CollectionUtil.isNotEmpty(rs)) { + for(Map rsmap : rs) { + JSONObject rsobj = new JSONObject(); + String pk_defdoc = String.valueOf(rsmap.get("pk_defdoc")); + String defdocname = String.valueOf(rsmap.get("defdocname")); + String enablestate = String.valueOf(rsmap.get("enablestate")); + String parentdoc = String.valueOf(rsmap.get("pid")); + rsobj.put("pkvalue",pk_defdoc); + rsobj.put("pkname",defdocname); + rsobj.put("enablestate",enablestate); + if(!("null".equals(parentdoc))) { + sql = "select pk_defdoc from ec_ebuilder_designer.uf_ncc_defdoc where id = '"+parentdoc+"'"; + singlemap = jdbcTemplateresp.queryForMap(sql); + String singlepkdoc = String.valueOf(singlemap.get("pk_defdoc")); + rsobj.put("parentpkvlaue",singlepkdoc); + }else { + rsobj.put("parentpkvlaue",parentdoc); + } + result.add(rsobj); + } + } + return WeaResult.success(result); + } + } + + /** + * 递归获取子级节点 + */ + public List> getChildren(List data, String id) { + List> list = new ArrayList<>(); + if (data == null || data.size() == 0 || id == null) { + return list; + } + for (ProvinceCityNode entity : data) { + Map map = new HashMap<>(); + //如果本级id与数据的父id相同,就说明是子父级关系 + if (id.equals(entity.parentid)) { + map.put("id", entity.id); + map.put("value", entity.value); + map.put("isLeaf", entity.isLeaf); + map.put("parentid", entity.parentid); + map.put("loading", entity.loading); + map.put("label", entity.label); + map.put("disabled", entity.disabled); + map.put("children", getChildren(data, entity.id)); + list.add(map); } } - return WeaResult.success(result); + return list; } } \ No newline at end of file diff --git a/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/controller/PayslipPageTestController.java b/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/controller/PayslipPageTestController.java index cb39ebb..7117724 100644 --- a/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/controller/PayslipPageTestController.java +++ b/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/controller/PayslipPageTestController.java @@ -4,7 +4,11 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.weaver.seconddev.sxjg.util.NccApiUtil; +import com.weaver.seconddev.sxjg.util.ProvinceCityNode; +import org.junit.Test; import java.text.SimpleDateFormat; import java.util.*; @@ -72,6 +76,67 @@ public class PayslipPageTestController { } } + public void test1() throws Exception { + Map rs = new HashMap<>(); + JSONObject r1 = new JSONObject(); + JSONArray r2 = new JSONArray(); + JSONObject r3 = new JSONObject(); + r3.put("pk_psndoc","0001A2100000006CWEBW"); + r2.add(r3); + r1.put("data",r2); + NccApiUtil nccApiUtil = new NccApiUtil(); + nccApiUtil.init(); + String token = nccApiUtil.getToken(); + String url = nccApiUtil.getBaseUrl()+"nccloud/api/hrtrn/openAPI/psninfoconf/list"; + String rs11 = nccApiUtil.doJsonPost(url,token,r1.toJSONString()); + JSONObject rsf = JSONObject.parseObject(rs11, Feature.OrderedField); + if("1000000000".equals(rsf.getString("code"))) { + JSONArray dataarr = rsf.getJSONArray("data"); + JSONArray dataguolv = new JSONArray(); + if(dataarr.size()>0) { + for(int i = 0; i list = new ArrayList<>(); + for (int i=0; i < dataguolv.size(); i++) { + list.add(dataguolv.getJSONObject(i)); + } + // 创建日期比较器 + Comparator dateComparator = new Comparator() { + @Override + public int compare(JSONObject obj1, JSONObject obj2) { + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + Date date1 = sdf.parse(obj1.getString("year")); + Date date2 = sdf.parse(obj2.getString("year")); + return date2.compareTo(date1); + } catch (Exception e) { + e.printStackTrace(); + return -1; + } + } + }; + // 根据日期进行排序 + Collections.sort(list, dateComparator); + String s = JSON.toJSONString(list); + System.out.println(s); + // 将排好序的 List 转换为 JSONArray + JSONArray r = new JSONArray(); + for(JSONObject js : list) { + r.add(js); + } + System.out.println(r.toJSONString()); + rsf.put("data",r); + }else { + } + } + /** * 判断年月在日期之间 */ @@ -105,4 +170,98 @@ public class PayslipPageTestController { }catch (Exception e){}; return flag; } + + @Test + public void tp() throws JsonProcessingException { + + List> rs = getMuneTree(); + ObjectMapper objectMapper = new ObjectMapper(); + + // 将 List> 转换为 JSON + String json = objectMapper.writeValueAsString(rs); + + System.out.println(json); + + } + /** + * 将有父子关系的数据转换成树形结构数据 + * + * @return 最终的树状结构的集合数据 + */ + public List> getMuneTree() { + // 获取数据库中带有有父子关系的数据 + List data = new ArrayList<>(); + ProvinceCityNode provinceCityNode11 = new ProvinceCityNode("1","null","pk11","第一级1"); + ProvinceCityNode provinceCityNode12 = new ProvinceCityNode("2","null","pk12","第一级2"); + ProvinceCityNode provinceCityNode13 = new ProvinceCityNode("3","null","pk13","第一级3"); + ProvinceCityNode provinceCityNode14 = new ProvinceCityNode("4","null","pk14","第一级4"); + ProvinceCityNode provinceCityNode111 = new ProvinceCityNode("11","1","pk111","第一级11"); + ProvinceCityNode provinceCityNode112 = new ProvinceCityNode("12","1","pk112","第一级12"); + ProvinceCityNode provinceCityNode113 = new ProvinceCityNode("13","1","pk113","第一级13"); + ProvinceCityNode provinceCityNode121 = new ProvinceCityNode("15","2","pk211","第一级21"); + ProvinceCityNode provinceCityNode122 = new ProvinceCityNode("16","2","pk212","第一级22"); + ProvinceCityNode provinceCityNode123 = new ProvinceCityNode("17","2","pk213","第一级23"); + ProvinceCityNode provinceCityNode1111 = new ProvinceCityNode("1111","11","pk111","第一级1111"); + ProvinceCityNode provinceCityNode1112 = new ProvinceCityNode("1112","11","pk111","第一级1112"); + ProvinceCityNode provinceCityNode1113 = new ProvinceCityNode("1113","11","pk111","第一级1113"); + data.add(provinceCityNode11); + data.add(provinceCityNode12); + data.add(provinceCityNode13); + data.add(provinceCityNode14); + data.add(provinceCityNode111); + data.add(provinceCityNode112); + data.add(provinceCityNode113); + data.add(provinceCityNode121); + data.add(provinceCityNode122); + data.add(provinceCityNode123); + data.add(provinceCityNode1111); + data.add(provinceCityNode1112); + data.add(provinceCityNode1113); + //创建一个List集合来存放最终的树状结构数据 + List> menuList = new ArrayList<>(); + // 先存入最顶级的树(0代表没有父级,即最顶级),然后通过最顶级的id递归获取子级 + for (ProvinceCityNode entity : data) { + Map map = new HashMap<>(); + if (entity.parentid ==null || "null".equals(entity.parentid) || "".equals(entity.parentid) || "0".equals(entity.parentid)) { + map.put("id", entity.id); + map.put("value", entity.value); + map.put("isLeaf", entity.isLeaf); + map.put("parentid", entity.parentid); + map.put("loading", entity.loading); + map.put("label", entity.label); + map.put("disabled", entity.disabled); + map.put("children", getChildren(data, entity.id)); + menuList.add(map); + } + } + return menuList; + } + /** + * 递归处理:通过id获取子级,查询子级下的子级 + * @param data 数据库的原始数据 + * @param id 主id + * @return 该id下得子级 + */ + public List> getChildren(List data, String id) { + List> list = new ArrayList<>(); + if (data == null || data.size() == 0 || id == null) { + return list; + } + for (ProvinceCityNode entity : data) { + Map map = new HashMap<>(); + //如果本级id与数据的父id相同,就说明是子父级关系 + if (id.equals(entity.parentid)) { + map.put("id", entity.id); + map.put("value", entity.value); + map.put("isLeaf", entity.isLeaf); + map.put("parentid", entity.parentid); + map.put("loading", entity.loading); + map.put("label", entity.label); + map.put("disabled", entity.disabled); + map.put("children", getChildren(data, entity.id)); + list.add(map); + } + } + return list; + } } diff --git a/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/util/ProvinceCityNode.java b/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/util/ProvinceCityNode.java new file mode 100644 index 0000000..2ff299e --- /dev/null +++ b/陕建岗位申请规则校验(ecode服务)checkPositionNew/src/main/java/com/weaver/seconddev/sxjg/util/ProvinceCityNode.java @@ -0,0 +1,20 @@ +package com.weaver.seconddev.sxjg.util; + +import java.util.ArrayList; +import java.util.List; + +public class ProvinceCityNode { + public String parentid; + public String id; + public String value; + public String label; + public boolean disabled = false; + public boolean isLeaf = false; + public boolean loading = false; + public ProvinceCityNode(String id,String parentid,String value, String label) { + this.value = value; + this.label = label; + this.id = id; + this.parentid = parentid; + } +} \ No newline at end of file