|
@@ -0,0 +1,611 @@
|
|
|
|
|
+package com.siwei.apply.service.cadastre.impl;
|
|
|
|
|
+
|
|
|
|
|
+import com.siwei.apply.domain.cadastre.*;
|
|
|
|
|
+import com.siwei.apply.mapper.cadastre.ZymlMapper;
|
|
|
|
|
+import com.siwei.apply.service.cadastre.IZymlService;
|
|
|
|
|
+import com.siwei.common.core.domain.R;
|
|
|
|
|
+import com.siwei.common.core.utils.StringUtils;
|
|
|
|
|
+import com.siwei.common.security.utils.SecurityUtils;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 这里修改不一致的返回
|
|
|
|
|
+ */
|
|
|
|
|
+@Service
|
|
|
|
|
+public class ZymlServiceImpl implements IZymlService {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private ZymlMapper zymlMapper;
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取资源目录列表
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param param 需要获取的目录节点bsm,用于抽取特定资源目录数据
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R GetList(String param) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ List<ZymlDTO> res = new ArrayList<>();
|
|
|
|
|
+ if (StringUtils.isEmpty(SecurityUtils.getUsername())) {
|
|
|
|
|
+ res = zymlMapper.GetList("", param, "");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ String resources = SecurityUtils.getLoginUser().getSysUser().getDept().getResources();
|
|
|
|
|
+ String username = SecurityUtils.getUsername();
|
|
|
|
|
+ if ("".equals(username)) {
|
|
|
|
|
+ return R.fail(501, "登录信息获取失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ String userXzqdm = SecurityUtils.getLoginUserXzq();
|
|
|
|
|
+ if (StringUtils.isNotEmpty(resources)) {
|
|
|
|
|
+ res = zymlMapper.GetList(username, param, resources);
|
|
|
|
|
+ } else if (StringUtils.isXzqhQuery(userXzqdm)) {
|
|
|
|
|
+ res = zymlMapper.GetList4XZQH(username, userXzqdm, param);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ res = zymlMapper.GetList(username, param, resources);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ for (ZymlDTO zymlDTO : res) {
|
|
|
|
|
+ // TODO 转换arcgis服务地址 将http转换https
|
|
|
|
|
+ // zymlDTO.setUrl(StringUtils.convertArcgisHttpsUrl(zymlDTO.getUrl()));
|
|
|
|
|
+ if (zymlDTO.getParent() == 1 && zymlDTO.getCount() > 0) {
|
|
|
|
|
+ zymlDTO.setName(zymlDTO.getName() + "[" + zymlDTO.getCount() + "]");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return R.ok(res, "成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ return R.fail(500, "失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取资源目录列表
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param param 需要获取的目录节点bsm,用于抽取特定资源目录数据
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R GetTree(String param) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ String resources = "";
|
|
|
|
|
+ List<ZymlDTO> res = new ArrayList<>();
|
|
|
|
|
+ if (StringUtils.isEmpty(SecurityUtils.getUsername())) {
|
|
|
|
|
+ if ("parent".equals(param)) {
|
|
|
|
|
+ param = "";
|
|
|
|
|
+ resources = "parent";
|
|
|
|
|
+ }
|
|
|
|
|
+ res = zymlMapper.GetList("admin", param, resources);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ resources = SecurityUtils.getLoginUser().getSysUser().getDept().getResources();
|
|
|
|
|
+ if ("parent".equals(param)) {
|
|
|
|
|
+ param = "";
|
|
|
|
|
+ resources = "parent";
|
|
|
|
|
+ }
|
|
|
|
|
+ String username = SecurityUtils.getUsername();
|
|
|
|
|
+ if ("".equals(username)) {
|
|
|
|
|
+ return R.fail(501, "登录信息获取失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ String userXzqdm = SecurityUtils.getLoginUserXzq();
|
|
|
|
|
+ if (StringUtils.isNotEmpty(resources)) {
|
|
|
|
|
+ res = zymlMapper.GetList(username, param, resources);
|
|
|
|
|
+ } else if (StringUtils.isXzqhQuery(userXzqdm)) {
|
|
|
|
|
+ res = zymlMapper.GetList4XZQH(username, userXzqdm, param);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ res = zymlMapper.GetList(username, param, resources);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ for (ZymlDTO zymlDTO : res) {
|
|
|
|
|
+ // TODO 转换arcgis服务地址 将http转换https
|
|
|
|
|
+ // zymlDTO.setUrl(StringUtils.convertArcgisHttpsUrl(zymlDTO.getUrl()));
|
|
|
|
|
+ if (zymlDTO.getParent() == 1 && zymlDTO.getCount() > 0) {
|
|
|
|
|
+ zymlDTO.setName(zymlDTO.getName() + "[" + zymlDTO.getCount() + "]");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ List<ZymlTreeDataDTO> treedata = new ArrayList<>();
|
|
|
|
|
+ for (int i = 0; i < res.size(); i++) {
|
|
|
|
|
+ ZymlDTO cur = res.get(i);
|
|
|
|
|
+ ZymlTreeDataDTO c = new ZymlTreeDataDTO();
|
|
|
|
|
+ // c.setDisabled((cur.getParent() == 1));
|
|
|
|
|
+ c.setId(cur.getBsm());
|
|
|
|
|
+ c.setPid(cur.getPbsm());
|
|
|
|
|
+ c.setLabel(cur.getName());
|
|
|
|
|
+ c.setParent(String.valueOf(cur.getParent()));
|
|
|
|
|
+ c.setTitle(cur.getName());
|
|
|
|
|
+ c.setType(cur.getType());
|
|
|
|
|
+ c.setLegend(cur.getLegend());
|
|
|
|
|
+ c.setUrl(cur.getUrl());
|
|
|
|
|
+ c.setSource(cur.getSde());
|
|
|
|
|
+ c.setFavorite(cur.getMy());
|
|
|
|
|
+ c.setMinimumlevel(cur.getMinimumlevel());
|
|
|
|
|
+ c.setMaximumlevel(cur.getMaximumlevel());
|
|
|
|
|
+ c.setFormat(cur.getFormat());
|
|
|
|
|
+ c.setLayergroup(cur.getLayergroup());
|
|
|
|
|
+ c.setQpfa(cur.getQpfa());
|
|
|
|
|
+ c.setFwys(cur.getFwys());
|
|
|
|
|
+ c.setFwgzkj(cur.getFwgzkj());
|
|
|
|
|
+ c.setFwmc(cur.getFwmc());
|
|
|
|
|
+ c.setServerType(cur.getServerType());
|
|
|
|
|
+ c.setGeomfield(cur.getGeomfield());
|
|
|
|
|
+ treedata.add(c);
|
|
|
|
|
+ }
|
|
|
|
|
+ List<ZymlTreeDataDTO> data = buildDeptTree2(treedata);
|
|
|
|
|
+ return R.ok(data, "成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ return R.fail(500, "失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R GetByBsms(String bsm) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ if (StringUtils.isEmpty(bsm)) {
|
|
|
|
|
+ return R.ok(new ArrayList<>(), "成功");
|
|
|
|
|
+ }
|
|
|
|
|
+ String[] params = bsm.split(",");
|
|
|
|
|
+ // String username = SecurityUtils.getUsername();
|
|
|
|
|
+ // if ("".equals(username)) {
|
|
|
|
|
+ // return R.error("登录信息获取失败", null);
|
|
|
|
|
+ // }
|
|
|
|
|
+ List<ZymlDTO> res = zymlMapper.GetByBsms(params);
|
|
|
|
|
+ return R.ok(res, "成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ return R.fail(500, "失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R GetByBsm(String bsm) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ if (StringUtils.isEmpty(bsm)) {
|
|
|
|
|
+ return R.ok(new ArrayList<>(), "成功");
|
|
|
|
|
+ }
|
|
|
|
|
+ // String username = SecurityUtils.getUsername();
|
|
|
|
|
+ // if ("".equals(username)) {
|
|
|
|
|
+ // return R.error("登录信息获取失败", null);
|
|
|
|
|
+ // }
|
|
|
|
|
+ ZymlDTO res = zymlMapper.GetByBsm(bsm);
|
|
|
|
|
+ return R.ok(res, "成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ return R.fail(500, "失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R getDataSourceTree(String param) {
|
|
|
|
|
+ List<ZymlTreeDTO> res = zymlMapper.GetTree("");
|
|
|
|
|
+ List<ZymlTreeDTO> data = buildDeptTree(res);
|
|
|
|
|
+ return R.ok(data, "成功");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R getXzqCode(String deptName) {
|
|
|
|
|
+ return R.ok(SecurityUtils.getLoginUserXzq());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R GetLegendAttr(String ywlx) {
|
|
|
|
|
+ if (StringUtils.isEmpty(ywlx)) {
|
|
|
|
|
+ return R.fail(500, "参数未传递!");
|
|
|
|
|
+ }
|
|
|
|
|
+ List<Map> res = zymlMapper.GetLegendAttr(ywlx);
|
|
|
|
|
+ Map<String, String> data = new HashMap<>();
|
|
|
|
|
+ for (Map cur : res) {
|
|
|
|
|
+ data.put(cur.get("value").toString(), cur.get("name").toString());
|
|
|
|
|
+ }
|
|
|
|
|
+ return R.ok(data);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R GetMyCollect(String param) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ String username = SecurityUtils.getUsername();
|
|
|
|
|
+ if ("".equals(username)) {
|
|
|
|
|
+ username = "admin";
|
|
|
|
|
+ // return R.error("登录信息获取失败", null);
|
|
|
|
|
+ }
|
|
|
|
|
+ // String userXzqdm = SecurityUtils.getLoginUserXzq();
|
|
|
|
|
+ List<ZymlDTO> res = new ArrayList<>();
|
|
|
|
|
+ res = zymlMapper.GetMyCollect(username);
|
|
|
|
|
+ // if (StringUtils.isXzqhQuery(userXzqdm)) {
|
|
|
|
|
+ // res = zymlMapper.GetMyCollect4XZQH(username, userXzqdm);
|
|
|
|
|
+ // } else {
|
|
|
|
|
+ // res = zymlMapper.GetMyCollect(username);
|
|
|
|
|
+ // }
|
|
|
|
|
+ List<ZymlTreeDataDTO> treedata = new ArrayList<>();
|
|
|
|
|
+ for (int i = 0; i < res.size(); i++) {
|
|
|
|
|
+ ZymlDTO cur = res.get(i);
|
|
|
|
|
+ ZymlTreeDataDTO c = new ZymlTreeDataDTO();
|
|
|
|
|
+ // c.setDisabled((cur.getParent() == 1));
|
|
|
|
|
+ c.setId(cur.getBsm());
|
|
|
|
|
+ c.setPid(cur.getPbsm());
|
|
|
|
|
+ c.setLabel(cur.getName());
|
|
|
|
|
+ c.setTitle(cur.getName());
|
|
|
|
|
+ c.setType(cur.getType());
|
|
|
|
|
+ c.setSource(cur.getSde());
|
|
|
|
|
+ c.setFavorite(cur.getMy());
|
|
|
|
|
+ c.setUrl(cur.getUrl());
|
|
|
|
|
+ c.setLegend(cur.getLegend());
|
|
|
|
|
+ c.setServerType(cur.getServerType());
|
|
|
|
|
+ c.setFwgzkj(cur.getFwgzkj());
|
|
|
|
|
+ c.setFwmc(cur.getFwmc());
|
|
|
|
|
+ c.setFormat(cur.getFormat());
|
|
|
|
|
+ c.setGeomfield(cur.getGeomfield());
|
|
|
|
|
+ treedata.add(c);
|
|
|
|
|
+ }
|
|
|
|
|
+ return R.ok(treedata, "成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ return R.fail(500, "失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R GetAttrs(String bsm) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ if (StringUtils.isEmpty(bsm)) {
|
|
|
|
|
+ return R.ok(new ArrayList<>(), "成功");
|
|
|
|
|
+ }
|
|
|
|
|
+ List<ResourceAttrsDTO> res = zymlMapper.GetAttrs(bsm);
|
|
|
|
|
+ return R.ok(res, "成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ return R.fail(500, "失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R Collect(Map params) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ if (StringUtils.isNull(params.get("bsm"))) {
|
|
|
|
|
+ return R.fail(500, "标识码为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ String bsm = (String) params.get("bsm");
|
|
|
|
|
+ if (StringUtils.isEmpty(bsm)) {
|
|
|
|
|
+ return R.fail(500, "标识码为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ String username = SecurityUtils.getUsername();
|
|
|
|
|
+ if ("".equals(username)) {
|
|
|
|
|
+ username = "admin";
|
|
|
|
|
+ // return R.error("登录信息获取失败", null);
|
|
|
|
|
+ }
|
|
|
|
|
+ ZymlBsmDTO zymlBsmDTO = new ZymlBsmDTO();
|
|
|
|
|
+ zymlBsmDTO.setBsm(bsm);
|
|
|
|
|
+ zymlBsmDTO.setUsername(username);
|
|
|
|
|
+ Integer count = zymlMapper.GetCollectCount(zymlBsmDTO);
|
|
|
|
|
+ if (count > 0) {
|
|
|
|
|
+ zymlMapper.DeleteCollect(zymlBsmDTO);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ zymlMapper.AddCollect(zymlBsmDTO);
|
|
|
|
|
+ }
|
|
|
|
|
+ return R.ok(true, "成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ return R.fail(500, "失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R GetDbfxList(String param) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ List<DbfxResourceDTO> res = zymlMapper.GetDbfxList(param);
|
|
|
|
|
+ for (DbfxResourceDTO dbfxResourceDTO : res) {
|
|
|
|
|
+ if (!StringUtils.isEmpty(dbfxResourceDTO.getFzbsm())) {
|
|
|
|
|
+ dbfxResourceDTO.setLssj(zymlMapper.GetLssjList(dbfxResourceDTO.getFzbsm()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return R.ok(res, "成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ return R.fail(500, "失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R GetLegend(String zybsm) {
|
|
|
|
|
+ if (StringUtils.isNull(zybsm)) {
|
|
|
|
|
+ return R.fail(500, "标识码为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ try {
|
|
|
|
|
+ List<ZymlLegendDTO> res = zymlMapper.GetLegend(zybsm);
|
|
|
|
|
+ return R.ok(res, "成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ return R.fail(500, "失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 构建前端所需要树结构
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param XzqDtos 行政区列表
|
|
|
|
|
+ * @return 树结构列表
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<ZymlTreeDataDTO> buildDeptTree2(List<ZymlTreeDataDTO> XzqDtos) {
|
|
|
|
|
+ List<ZymlTreeDataDTO> returnList = new ArrayList<>();
|
|
|
|
|
+ List<String> tempList = new ArrayList<String>();
|
|
|
|
|
+ for (ZymlTreeDataDTO XzqDto : XzqDtos) {
|
|
|
|
|
+ tempList.add(XzqDto.getId());
|
|
|
|
|
+ }
|
|
|
|
|
+ for (ZymlTreeDataDTO XzqDto : XzqDtos) {
|
|
|
|
|
+ // 如果是顶级节点, 遍历该父节点的所有子节点
|
|
|
|
|
+ if (!tempList.contains(XzqDto.getPid())) {
|
|
|
|
|
+ recursionFn2(XzqDtos, XzqDto);
|
|
|
|
|
+ returnList.add(XzqDto);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (returnList.isEmpty()) {
|
|
|
|
|
+ returnList = XzqDtos;
|
|
|
|
|
+ }
|
|
|
|
|
+ return returnList;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 递归列表
|
|
|
|
|
+ */
|
|
|
|
|
+ private void recursionFn2(List<ZymlTreeDataDTO> list, ZymlTreeDataDTO t) {
|
|
|
|
|
+ // 得到子节点列表
|
|
|
|
|
+ List<ZymlTreeDataDTO> childList = getChildList2(list, t);
|
|
|
|
|
+ t.setChildren(childList);
|
|
|
|
|
+ for (ZymlTreeDataDTO tChild : childList) {
|
|
|
|
|
+ if (hasChild2(list, tChild)) {
|
|
|
|
|
+ recursionFn2(list, tChild);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 得到子节点列表
|
|
|
|
|
+ */
|
|
|
|
|
+ private List<ZymlTreeDataDTO> getChildList2(List<ZymlTreeDataDTO> list, ZymlTreeDataDTO t) {
|
|
|
|
|
+ List<ZymlTreeDataDTO> tlist = new ArrayList<>();
|
|
|
|
|
+ Iterator<ZymlTreeDataDTO> it = list.iterator();
|
|
|
|
|
+ while (it.hasNext()) {
|
|
|
|
|
+ ZymlTreeDataDTO n = (ZymlTreeDataDTO) it.next();
|
|
|
|
|
+ if (StringUtils.isNotNull(n.getPid()) && t.getId().equals(n.getPid())) {
|
|
|
|
|
+ tlist.add(n);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return tlist;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 判断是否有子节点
|
|
|
|
|
+ */
|
|
|
|
|
+ private boolean hasChild2(List<ZymlTreeDataDTO> list, ZymlTreeDataDTO t) {
|
|
|
|
|
+ return getChildList2(list, t).size() > 0 ? true : false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 构建前端所需要树结构
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param XzqDtos 行政区列表
|
|
|
|
|
+ * @return 树结构列表
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<ZymlTreeDTO> buildDeptTree(List<ZymlTreeDTO> XzqDtos) {
|
|
|
|
|
+ List<ZymlTreeDTO> returnList = new ArrayList<>();
|
|
|
|
|
+ List<String> tempList = new ArrayList<String>();
|
|
|
|
|
+ for (ZymlTreeDTO XzqDto : XzqDtos) {
|
|
|
|
|
+ tempList.add(XzqDto.getId());
|
|
|
|
|
+ }
|
|
|
|
|
+ for (ZymlTreeDTO XzqDto : XzqDtos) {
|
|
|
|
|
+ // 如果是顶级节点, 遍历该父节点的所有子节点
|
|
|
|
|
+ if (!tempList.contains(XzqDto.getPid())) {
|
|
|
|
|
+ recursionFn(XzqDtos, XzqDto);
|
|
|
|
|
+ returnList.add(XzqDto);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (returnList.isEmpty()) {
|
|
|
|
|
+ returnList = XzqDtos;
|
|
|
|
|
+ }
|
|
|
|
|
+ return returnList;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 递归列表
|
|
|
|
|
+ */
|
|
|
|
|
+ private void recursionFn(List<ZymlTreeDTO> list, ZymlTreeDTO t) {
|
|
|
|
|
+ // 得到子节点列表
|
|
|
|
|
+ List<ZymlTreeDTO> childList = getChildList(list, t);
|
|
|
|
|
+ t.setChildren(childList);
|
|
|
|
|
+ for (ZymlTreeDTO tChild : childList) {
|
|
|
|
|
+ if (hasChild(list, tChild)) {
|
|
|
|
|
+ recursionFn(list, tChild);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 得到子节点列表
|
|
|
|
|
+ */
|
|
|
|
|
+ private List<ZymlTreeDTO> getChildList(List<ZymlTreeDTO> list, ZymlTreeDTO t) {
|
|
|
|
|
+ List<ZymlTreeDTO> tlist = new ArrayList<>();
|
|
|
|
|
+ Iterator<ZymlTreeDTO> it = list.iterator();
|
|
|
|
|
+ while (it.hasNext()) {
|
|
|
|
|
+ ZymlTreeDTO n = (ZymlTreeDTO) it.next();
|
|
|
|
|
+ if (StringUtils.isNotNull(n.getPid()) && t.getId().equals(n.getPid())) {
|
|
|
|
|
+ tlist.add(n);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return tlist;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 判断是否有子节点
|
|
|
|
|
+ */
|
|
|
|
|
+ private boolean hasChild(List<ZymlTreeDTO> list, ZymlTreeDTO t) {
|
|
|
|
|
+ return getChildList(list, t).size() > 0 ? true : false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 递归循环
|
|
|
|
|
+ public List<ZymlDTO> GetZymlSubsetList(String username, String pbsm, String name, Boolean share) {
|
|
|
|
|
+ String sharestate = null;
|
|
|
|
|
+ if (share != null && share == true) {
|
|
|
|
|
+ sharestate = "0";
|
|
|
|
|
+ }
|
|
|
|
|
+ List<ZymlDTO> ret = new ArrayList<>();
|
|
|
|
|
+ List<ZymlDTO> res = zymlMapper.GetListCondition(username, null, pbsm, name, sharestate);
|
|
|
|
|
+ for (ZymlDTO dto : res) {
|
|
|
|
|
+ List<ZymlDTO> subset = GetZymlSubsetList(username, dto.getBsm(), name, share);
|
|
|
|
|
+ ret.addAll(subset);
|
|
|
|
|
+ }
|
|
|
|
|
+ ret.addAll(res);
|
|
|
|
|
+ return ret;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R GetZymlList(String bsm, String pbsm, String name, Boolean share, Boolean subset) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ List<ZymlDTO> res = new ArrayList<>();
|
|
|
|
|
+ String sharestate = "1";
|
|
|
|
|
+ if (share != null && share == true) {
|
|
|
|
|
+ sharestate = "0";
|
|
|
|
|
+ }
|
|
|
|
|
+ // TODO 暂时为admin
|
|
|
|
|
+ // String username = SecurityUtils.getUsername();
|
|
|
|
|
+ String username = "admin";
|
|
|
|
|
+ if (StringUtils.isNotEmpty(username)) {
|
|
|
|
|
+ // 暂定管理员权限可以查询所有数据,其他只能看到自己的
|
|
|
|
|
+ if (username.equals("admin")) {
|
|
|
|
|
+ username = null;
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return R.fail(500, "参数缺失");
|
|
|
|
|
+ }
|
|
|
|
|
+ List<ZymlDTO> ret = zymlMapper.GetListCondition(username, bsm, pbsm, name, sharestate);
|
|
|
|
|
+ if (subset != null && subset) {
|
|
|
|
|
+ for (ZymlDTO dto : ret) {
|
|
|
|
|
+ List<ZymlDTO> subsetList = GetZymlSubsetList(username, dto.getBsm(), name, share);
|
|
|
|
|
+ res.addAll(subsetList);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ res.addAll(ret);
|
|
|
|
|
+ List<ZymlTreeDataDTO> treedata = new ArrayList<>();
|
|
|
|
|
+ for (int i = 0; i < res.size(); i++) {
|
|
|
|
|
+ ZymlDTO cur = res.get(i);
|
|
|
|
|
+ ZymlTreeDataDTO c = new ZymlTreeDataDTO();
|
|
|
|
|
+ // c.setDisabled((cur.getParent() == 1));
|
|
|
|
|
+ c.setId(cur.getBsm());
|
|
|
|
|
+ c.setPid(cur.getPbsm());
|
|
|
|
|
+ c.setLabel(cur.getName());
|
|
|
|
|
+ c.setTitle(cur.getName());
|
|
|
|
|
+ c.setType(cur.getType());
|
|
|
|
|
+ c.setLegend(cur.getLegend());
|
|
|
|
|
+ c.setUrl(cur.getUrl());
|
|
|
|
|
+ c.setSource(cur.getSde());
|
|
|
|
|
+ c.setFavorite(cur.getMy());
|
|
|
|
|
+ c.setMinimumlevel(cur.getMinimumlevel());
|
|
|
|
|
+ c.setMaximumlevel(cur.getMaximumlevel());
|
|
|
|
|
+ c.setFormat(cur.getFormat());
|
|
|
|
|
+ c.setLayergroup(cur.getLayergroup());
|
|
|
|
|
+ c.setQpfa(cur.getQpfa());
|
|
|
|
|
+ c.setFwys(cur.getFwys());
|
|
|
|
|
+ c.setFwgzkj(cur.getFwgzkj());
|
|
|
|
|
+ c.setFwmc(cur.getFwmc());
|
|
|
|
|
+ c.setServerType(cur.getServerType());
|
|
|
|
|
+ c.setSharestate(cur.getSharestate());
|
|
|
|
|
+ c.setYear(cur.getYear());
|
|
|
|
|
+ treedata.add(c);
|
|
|
|
|
+ }
|
|
|
|
|
+ List<ZymlTreeDataDTO> data = buildDeptTree2(treedata);
|
|
|
|
|
+ return R.ok(data, "成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ return R.fail(500, "失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public R GetZymlShareList(String name) {
|
|
|
|
|
+ List<ZymlDTO> res = new ArrayList<>();
|
|
|
|
|
+ List<ZymlDTO> ret = zymlMapper.GetListCondition(null, null, null, null, null);
|
|
|
|
|
+ for (ZymlDTO dto : ret) {
|
|
|
|
|
+ List<ZymlDTO> subsetList = GetZymlSubsetList(null, dto.getBsm(), null, null);
|
|
|
|
|
+ res.addAll(subsetList);
|
|
|
|
|
+ }
|
|
|
|
|
+ res.addAll(ret);
|
|
|
|
|
+ List<ZymlTreeDataDTO> treedata = new ArrayList<>();
|
|
|
|
|
+ for (int i = 0; i < res.size(); i++) {
|
|
|
|
|
+ ZymlDTO cur = res.get(i);
|
|
|
|
|
+ ZymlTreeDataDTO c = new ZymlTreeDataDTO();
|
|
|
|
|
+ // c.setDisabled((cur.getParent() == 1));
|
|
|
|
|
+ c.setId(cur.getBsm());
|
|
|
|
|
+ c.setPid(cur.getPbsm());
|
|
|
|
|
+ c.setLabel(cur.getName());
|
|
|
|
|
+ c.setTitle(cur.getName());
|
|
|
|
|
+ c.setType(cur.getType());
|
|
|
|
|
+ c.setLegend(cur.getLegend());
|
|
|
|
|
+ c.setUrl(cur.getUrl());
|
|
|
|
|
+ c.setSource(cur.getSde());
|
|
|
|
|
+ c.setFavorite(cur.getMy());
|
|
|
|
|
+ c.setMinimumlevel(cur.getMinimumlevel());
|
|
|
|
|
+ c.setMaximumlevel(cur.getMaximumlevel());
|
|
|
|
|
+ c.setFormat(cur.getFormat());
|
|
|
|
|
+ c.setLayergroup(cur.getLayergroup());
|
|
|
|
|
+ c.setQpfa(cur.getQpfa());
|
|
|
|
|
+ c.setFwys(cur.getFwys());
|
|
|
|
|
+ c.setFwgzkj(cur.getFwgzkj());
|
|
|
|
|
+ c.setFwmc(cur.getFwmc());
|
|
|
|
|
+ c.setServerType(cur.getServerType());
|
|
|
|
|
+ c.setSharestate(cur.getSharestate());
|
|
|
|
|
+ c.setYear(cur.getYear());
|
|
|
|
|
+ c.setCreateBy(cur.getCreate_by());
|
|
|
|
|
+ c.setCreateTime(cur.getCreate_time());
|
|
|
|
|
+ c.setDataexplain(cur.getDataexplain());
|
|
|
|
|
+ treedata.add(c);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 获取树
|
|
|
|
|
+ List<ZymlTreeDataDTO> newRET = new ArrayList<>();
|
|
|
|
|
+ List<ZymlTreeDataDTO> data = buildDeptTree2(treedata);
|
|
|
|
|
+ for (ZymlTreeDataDTO dto : data) {
|
|
|
|
|
+ Map<String, Object> statsMap = new HashMap<>();
|
|
|
|
|
+ statsMap.put("stats", false);
|
|
|
|
|
+ statsMap.put("id", dto.getId());
|
|
|
|
|
+ statsMap.put("data", dto);
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Object> retStatsMap = handleZymlTreeShare(statsMap);
|
|
|
|
|
+ Boolean retstats = (Boolean) retStatsMap.get("stats");
|
|
|
|
|
+ if (retstats) {
|
|
|
|
|
+ ZymlTreeDataDTO newData0 = (ZymlTreeDataDTO) retStatsMap.get("data");
|
|
|
|
|
+ newRET.add(newData0);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return R.ok(newRET);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Map<String, Object> handleZymlTreeShare(Map<String, Object> data) {
|
|
|
|
|
+ ZymlTreeDataDTO dtoObj = (ZymlTreeDataDTO) data.get("data");
|
|
|
|
|
+ Boolean stats = (Boolean) data.get("stats");
|
|
|
|
|
+ // 判断是否是共享类型
|
|
|
|
|
+ String sharestate = dtoObj.getSharestate();
|
|
|
|
|
+ if (StringUtils.isNotEmpty(sharestate) && sharestate.equals("0")) {
|
|
|
|
|
+ stats = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ List<ZymlTreeDataDTO> child = dtoObj.getChildren();
|
|
|
|
|
+ List<ZymlTreeDataDTO> newchild = new ArrayList<>();
|
|
|
|
|
+ for (ZymlTreeDataDTO dto : child) {
|
|
|
|
|
+ Map<String, Object> statsMap = new HashMap<>();
|
|
|
|
|
+ statsMap.put("stats", false);
|
|
|
|
|
+ statsMap.put("id", dto.getId());
|
|
|
|
|
+ statsMap.put("data", dto);
|
|
|
|
|
+ Map<String, Object> retStatsMap = handleZymlTreeShare(statsMap);
|
|
|
|
|
+ Boolean retstats = (Boolean) retStatsMap.get("stats");
|
|
|
|
|
+ if (retstats) {
|
|
|
|
|
+ ZymlTreeDataDTO newData0 = (ZymlTreeDataDTO) retStatsMap.get("data");
|
|
|
|
|
+ stats = true;
|
|
|
|
|
+ newchild.add(newData0);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ dtoObj.setChildren(newchild);
|
|
|
|
|
+ data.put("data", dtoObj);
|
|
|
|
|
+ data.put("stats", stats);
|
|
|
|
|
+ return data;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|