|
@@ -1,362 +0,0 @@
|
|
|
-package com.persagy.adm.server.custom.controller;
|
|
|
-
|
|
|
-import cn.hutool.core.util.IdUtil;
|
|
|
-import cn.hutool.core.util.StrUtil;
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
|
-import com.fasterxml.jackson.databind.JsonNode;
|
|
|
-import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
-import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
|
-import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
-import com.persagy.adm.server.custom.client.RwdClient;
|
|
|
-import com.persagy.adm.server.custom.common.AdmConst;
|
|
|
-import com.persagy.adm.server.custom.common.AdmRequest;
|
|
|
-import com.persagy.adm.server.custom.dao.*;
|
|
|
-import com.persagy.adm.server.custom.entity.Dict;
|
|
|
-import com.persagy.adm.server.custom.entity.InfoDef;
|
|
|
-import com.persagy.adm.server.custom.entity.TypeDef;
|
|
|
-import com.persagy.adm.server.custom.entity.db.*;
|
|
|
-import com.persagy.adm.server.custom.service.IConfigService;
|
|
|
-import com.persagy.adm.server.custom.service.ISyncApp;
|
|
|
-import com.persagy.adm.server.custom.service.ServiceUtil;
|
|
|
-import com.persagy.dmp.basic.model.QueryCriteria;
|
|
|
-import com.persagy.dmp.common.constant.ResponseCode;
|
|
|
-import com.persagy.dmp.common.exception.BusinessException;
|
|
|
-import com.persagy.dmp.common.model.response.CommonResult;
|
|
|
-import com.persagy.dmp.common.utils.ResultHelper;
|
|
|
-import com.persagy.dmp.define.entity.GraphDefine;
|
|
|
-import com.persagy.dmp.define.entity.RelationDefine;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
-import org.springframework.web.bind.annotation.*;
|
|
|
-
|
|
|
-import java.io.IOException;
|
|
|
-import java.util.*;
|
|
|
-
|
|
|
-@CrossOrigin
|
|
|
-@RestController
|
|
|
-@RequestMapping("/tool")
|
|
|
-public class ToolController {
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ObjectMapper objectMapper;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- @Qualifier(ServiceUtil.SYNC_APP_IMPL)
|
|
|
- private ISyncApp syncApp;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private RwdClient rwdClient;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private IConfigService configService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private AdmM2dEquipMapper m2dEquipMapper;
|
|
|
-
|
|
|
- @GetMapping("/hello")
|
|
|
- public CommonResult<Integer> hello(){
|
|
|
- return ResultHelper.single(configService.queryCommonConfig(null).size());
|
|
|
- }
|
|
|
-
|
|
|
- @RequestMapping("/dict")
|
|
|
- public CommonResult<Dict> dict(@RequestBody AdmRequest req, @RequestParam(required = false) String module){
|
|
|
- Dict map = syncApp.queryDict(req.getGroupCode(), req.getProjectId(), req.getUserId(), !"infos".equals(module), false);
|
|
|
-
|
|
|
- List<Map<String, Object>> majorList = map.getMajor();
|
|
|
- List<TypeDef> sysList = map.getSystem();
|
|
|
- List<TypeDef> equipList = map.getEquipment();
|
|
|
- distinct(sysList);
|
|
|
- distinct(equipList);
|
|
|
-
|
|
|
- clearTime(majorList);
|
|
|
- clearTime(sysList);
|
|
|
- clearTime(equipList);
|
|
|
-
|
|
|
- //设置正向交付类型
|
|
|
- List<AdmM2dEquip> m2dList = configService.queryM2dEquip(req.getProjectId());
|
|
|
- HashSet<String> m2dSet = new HashSet<>();
|
|
|
- m2dList.forEach(item -> m2dSet.add(item.getClassCode()));
|
|
|
- for(TypeDef eqType : equipList) {
|
|
|
- if(m2dSet.contains(eqType.getCode()))
|
|
|
- eqType.setM2d(true);
|
|
|
- }
|
|
|
-
|
|
|
- //组织专业-系统树形结构
|
|
|
- for(Map<String, Object> major : majorList){
|
|
|
- ArrayList<TypeDef> childrenSys = new ArrayList<>();
|
|
|
- major.put("children", childrenSys);
|
|
|
- String majorCode = (String) major.get("code");
|
|
|
- for(Iterator<TypeDef> sysIter = sysList.iterator(); sysIter.hasNext();){
|
|
|
- TypeDef sysDef = sysIter.next();
|
|
|
- if(sysDef.getMajorCode() != null && sysDef.getMajorCode().equals(majorCode)){
|
|
|
- childrenSys.add(sysDef);
|
|
|
- sysIter.remove();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- map.setSystem(null);
|
|
|
-
|
|
|
- if("infos".equals(module)) { //信息点配置
|
|
|
-
|
|
|
- } else { //关系、管道、无模型设备
|
|
|
- List<RelationDefine> relDefs = (List<RelationDefine>)map.getRelation();
|
|
|
- List<GraphDefine> graph = ServiceUtil.call (() -> rwdClient.queryGraphDef(req.getGroupCode(), req.getProjectId(), AdmConst.APP_ID, req.getUserId(), new QueryCriteria()));
|
|
|
- List<Map<String, Object>> rels = new ArrayList<>();
|
|
|
- for(GraphDefine gd : graph){
|
|
|
- HashMap<String, Object> m = new HashMap<>();
|
|
|
- m.put("code", gd.getCode());
|
|
|
- m.put("name", gd.getName());
|
|
|
- m.put("type", "graph");
|
|
|
- rels.add(m);
|
|
|
-
|
|
|
- ArrayList<RelationDefine> chidren = new ArrayList<>();
|
|
|
- m.put("children", chidren);
|
|
|
- for(RelationDefine relDef : relDefs) {
|
|
|
- if(relDef.getGraphCode().equals(gd.getCode()))
|
|
|
- chidren.add(relDef);
|
|
|
- }
|
|
|
- }
|
|
|
- map.setRelation(rels);
|
|
|
- }
|
|
|
-
|
|
|
- return ResultHelper.single(map);
|
|
|
- }
|
|
|
-
|
|
|
- private <T> void distinct(List<T> list){
|
|
|
- List<T> result = new ArrayList<>();
|
|
|
- HashSet<String> codes = new HashSet<>();
|
|
|
- for(T def : list) {
|
|
|
- String code = null;
|
|
|
- if(def instanceof TypeDef)
|
|
|
- code = ((TypeDef) def).getCode();
|
|
|
- else if(def instanceof InfoDef)
|
|
|
- code = ((InfoDef) def).getCode();
|
|
|
- if(!codes.contains(code)) {
|
|
|
- codes.add(code);
|
|
|
- result.add(def);
|
|
|
- }
|
|
|
- }
|
|
|
- list.clear();
|
|
|
- list.addAll(result);
|
|
|
- }
|
|
|
-
|
|
|
- private void clearTime(List<?> list){
|
|
|
- for(Object o : list) {
|
|
|
- if(o instanceof TypeDef) {
|
|
|
- ((TypeDef) o).setCreationTime(null);
|
|
|
- ((TypeDef) o).setModifiedTime(null);
|
|
|
- } else if(o instanceof Map) {
|
|
|
- ((Map) o).put("creationTime", null);
|
|
|
- ((Map) o).put("modifiedTime", null);
|
|
|
- ((Map) o).put("name", ((Map) o).get("label")); //handle major
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @RequestMapping("/cfgs")
|
|
|
- public CommonResult<Object> cfgs(@RequestBody AdmRequest req, @RequestParam(required = false) String module){
|
|
|
- String projectId = req.getProjectId();
|
|
|
- HashMap<String, Object> data = new HashMap<>();
|
|
|
-
|
|
|
- //配置数据查询
|
|
|
- if("infos".equals(module)) { //信息点配置
|
|
|
- List<AdmInfosConfig> infoConfig = configService.queryInfosConfig(projectId);
|
|
|
- data.put("infoConfig", infoConfig);
|
|
|
- } else {
|
|
|
- List<AdmRelsConfig> relConfig = configService.queryRelsConfig(projectId);
|
|
|
- List<AdmPipeConfig> pipeConfig = configService.queryPipeConfig(projectId);
|
|
|
- List<AdmContainerConfig> containerConfig = configService.queryContainerConfig(projectId);
|
|
|
-
|
|
|
- data.put("relConfig", relConfig);
|
|
|
- data.put("pipeConfig", pipeConfig);
|
|
|
- data.put("containerConfig", containerConfig);
|
|
|
- }
|
|
|
-
|
|
|
- return ResultHelper.single(data);
|
|
|
- }
|
|
|
-
|
|
|
- @RequestMapping("/typeInfos")
|
|
|
- public CommonResult<Object> typeInfos(@RequestBody AdmRequest req, @RequestParam String typeCode){
|
|
|
- QueryCriteria criteria = new QueryCriteria();
|
|
|
- ObjectNode node = objectMapper.createObjectNode();
|
|
|
- node.put("classCode", typeCode);
|
|
|
- criteria.setCriteria(node);
|
|
|
-
|
|
|
- List<Object> roots = new ArrayList<>();
|
|
|
-
|
|
|
- List<InfoDef> funcList = ServiceUtil.call(() -> rwdClient.queryFunc(req.getGroupCode(), req.getProjectId(), AdmConst.APP_ID, req.getUserId(), criteria));
|
|
|
- distinct(funcList);
|
|
|
- for(InfoDef infoDef : funcList) {
|
|
|
- if("交付工具".equals(infoDef.getFirstTag()))
|
|
|
- continue;
|
|
|
- buildInfosTree(roots, infoDef);
|
|
|
- }
|
|
|
-
|
|
|
- return ResultHelper.single(roots);
|
|
|
- }
|
|
|
-
|
|
|
- private void buildInfosTree(List<Object> roots, InfoDef infoDef){
|
|
|
- Map<String, Object> folder = null;
|
|
|
- if(StrUtil.isNotBlank(infoDef.getFirstTag())) {
|
|
|
- folder = findParent(roots, infoDef.getFirstTag());
|
|
|
- if(StrUtil.isNotBlank(infoDef.getSecondTag())){
|
|
|
- folder = findParent((List<Object>) folder.get("children"), infoDef.getSecondTag());
|
|
|
- }
|
|
|
- }
|
|
|
- if(folder == null)
|
|
|
- roots.add(infoDef);
|
|
|
- else
|
|
|
- ((List<Object>) folder.get("children")).add(infoDef);
|
|
|
- }
|
|
|
-
|
|
|
- private Map<String, Object> findParent(List<Object> list, String tag){
|
|
|
- for(Object o : list){
|
|
|
- if(o instanceof Map){
|
|
|
- if(tag.equals(((Map) o).get("code")))
|
|
|
- return (Map<String, Object>) o;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- Map<String, Object> p = new HashMap<>();
|
|
|
- p.put("code", tag);
|
|
|
- p.put("name", tag);
|
|
|
- p.put("info_tag", true);
|
|
|
- p.put("children", new ArrayList<>());
|
|
|
- list.add(p);
|
|
|
- return p;
|
|
|
- }
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private AdmRelsConfigMapper relsConfigMapper;
|
|
|
- @Autowired
|
|
|
- private AdmPipeConfigMapper pipeConfigMapper;
|
|
|
- @Autowired
|
|
|
- private AdmContainerConfigMapper containerConfigMapper;
|
|
|
-
|
|
|
- @PostMapping("/updateCfgItem")
|
|
|
- public CommonResult<Object> updateCfgItem(@RequestBody Map<String, Object> content) {
|
|
|
- String type = (String) content.get("type");
|
|
|
- Map<String, Object> itemMap = (Map<String, Object>) content.get("item");
|
|
|
- String delId = (String) content.get("delId");
|
|
|
- String newId = null;
|
|
|
- if(itemMap != null && !itemMap.containsKey("id")){
|
|
|
- newId = IdUtil.fastSimpleUUID();
|
|
|
- itemMap.put("id", newId);
|
|
|
- }
|
|
|
-
|
|
|
- boolean create = newId != null;
|
|
|
- if("rel".equals(type)) {
|
|
|
- doUpdateItem(delId, itemMap, create, AdmRelsConfig.class, relsConfigMapper);
|
|
|
- } else if ("pipe".equals(type)) {
|
|
|
- doUpdateItem(delId, itemMap, create, AdmPipeConfig.class, pipeConfigMapper);
|
|
|
- } else if("container".equals(type)) {
|
|
|
- doUpdateItem(delId, itemMap, create, AdmContainerConfig.class, containerConfigMapper);
|
|
|
- }
|
|
|
-
|
|
|
- return ResultHelper.single(newId);
|
|
|
- }
|
|
|
-
|
|
|
- private <T extends BaseAdmEntity> void doUpdateItem(String delId, Map<String, Object> itemMap, boolean create, Class<T> cls, BaseMapper<T> mapper){
|
|
|
- if(StrUtil.isNotBlank(delId))
|
|
|
- mapper.deleteById(delId);
|
|
|
- else {
|
|
|
- T cfg = mapToObj(itemMap, cls);
|
|
|
- if(create)
|
|
|
- mapper.insert(cfg);
|
|
|
- else
|
|
|
- mapper.updateById(cfg);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private <T extends BaseAdmEntity> T mapToObj(Map<String, Object> map, Class<T> cls){
|
|
|
- try {
|
|
|
- String json = objectMapper.writeValueAsString(map);
|
|
|
- return objectMapper.readValue(json, cls);
|
|
|
- } catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
- throw new BusinessException(ResponseCode.A0427.getCode(), ResponseCode.A0427.getDesc());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private AdmInfosConfigMapper infosConfigMapper;
|
|
|
-
|
|
|
- @PostMapping("/updateInfos")
|
|
|
- public CommonResult<Object> updateInfos(@RequestBody AdmInfosConfig cfg) {
|
|
|
- String newId = null;
|
|
|
- if(StrUtil.isBlank(cfg.getId())){
|
|
|
- newId = IdUtil.fastSimpleUUID();
|
|
|
- cfg.setId(newId);
|
|
|
- }
|
|
|
- if(cfg.getInfos() != null) {
|
|
|
- for(Object o : cfg.getInfos()) {
|
|
|
- if(o instanceof Map){
|
|
|
- ((Map<?, ?>) o).remove("name");
|
|
|
- ((Map<?, ?>) o).remove("cfgItemType");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if(newId != null)
|
|
|
- infosConfigMapper.insert(cfg);
|
|
|
- else
|
|
|
- infosConfigMapper.updateById(cfg);
|
|
|
-
|
|
|
- return ResultHelper.single(newId);
|
|
|
- }
|
|
|
-
|
|
|
- @PostMapping("/updateM2d")
|
|
|
- public CommonResult<Object> updateM2d(@RequestBody Map<String, Object> cfg){
|
|
|
- String code = (String) cfg.get("code");
|
|
|
- boolean m2d = (Boolean)cfg.get("m2d");
|
|
|
- AdmM2dEquip item = m2dEquipMapper.selectOne(new QueryWrapper<AdmM2dEquip>().eq("class_code", code));
|
|
|
- if(m2d){
|
|
|
- if(item == null){
|
|
|
- item = new AdmM2dEquip();
|
|
|
- item.setId(IdUtil.simpleUUID());
|
|
|
- item.setClassCode(code);
|
|
|
- m2dEquipMapper.insert(item);
|
|
|
- }
|
|
|
- } else {
|
|
|
- if(item != null)
|
|
|
- m2dEquipMapper.deleteById(item.getId());
|
|
|
- }
|
|
|
- return ResultHelper.success();
|
|
|
- }
|
|
|
-
|
|
|
- @PostMapping("/bdAndFls")
|
|
|
- public CommonResult<List<ObjectNode>> bdAndFls(@RequestBody AdmRequest req){
|
|
|
- Map<String, Object> data = syncApp.downloadFrameData(req.getGroupCode(), req.getProjectId(), req.getUserId());
|
|
|
- List<ObjectNode> bdAndFls = (List<ObjectNode>)data.get("buildingsAndFloors");
|
|
|
-
|
|
|
- List<ObjectNode> bds = new ArrayList<>();
|
|
|
- Iterator<ObjectNode> iter = bdAndFls.iterator();
|
|
|
- while (iter.hasNext()){
|
|
|
- ObjectNode node = iter.next();
|
|
|
- if(AdmConst.OBJ_TYPE_BUILDING.equals(node.get("objType").asText())) {
|
|
|
- bds.add(node);
|
|
|
- iter.remove();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for(ObjectNode bd : bds) {
|
|
|
- String id = bd.get("id").asText();
|
|
|
- for(ObjectNode fl : bdAndFls) {
|
|
|
- JsonNode node = fl.get("buildingId");
|
|
|
- if(node != null){
|
|
|
- String bdId = node.asText();
|
|
|
- if(bdId.equals(id)){
|
|
|
- ArrayNode children = (ArrayNode)bd.get("children");
|
|
|
- if(children == null)
|
|
|
- children = bd.putArray("children");
|
|
|
- children.add(fl);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return ResultHelper.single(bds);
|
|
|
- }
|
|
|
-
|
|
|
-}
|