From 50a8190dc0ab70a41cf6ecb17b31d7fdbf373eab Mon Sep 17 00:00:00 2001 From: guofy12 Date: Wed, 26 Oct 2022 23:25:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E6=AC=A1=E6=8F=90=E4=BA=A4=EF=BC=9A?= =?UTF-8?q?=20=E5=88=9B=E5=BB=BA=E8=84=91=E5=9B=BE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/xm/controller/XmTopController.java | 6 ++ .../java/com/server/xm/entity/XmNode.java | 20 +++++- .../com/server/xm/entity/XmNodeStyle.java | 18 +++++- .../main/java/com/server/xm/entity/XmTop.java | 31 +++++++-- .../java/com/server/xm/entity/vo/XmTopVo.java | 16 +++-- .../com/server/xm/service/XmTopService.java | 2 +- .../xm/service/impl/XmTopServiceImpl.java | 63 ++++++++++++++++--- .../main/resources/mapper/XmNodeMapper.xml | 20 +++--- .../resources/mapper/XmNodeStyleMapper.xml | 8 +-- .../src/main/resources/mapper/XmTopMapper.xml | 12 ++-- 10 files changed, 154 insertions(+), 42 deletions(-) diff --git a/ruoyi-modules/server-xm/src/main/java/com/server/xm/controller/XmTopController.java b/ruoyi-modules/server-xm/src/main/java/com/server/xm/controller/XmTopController.java index 258098d6..70b0a02f 100644 --- a/ruoyi-modules/server-xm/src/main/java/com/server/xm/controller/XmTopController.java +++ b/ruoyi-modules/server-xm/src/main/java/com/server/xm/controller/XmTopController.java @@ -1,6 +1,7 @@ package com.server.xm.controller; import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.TableDataInfo; import com.server.xm.entity.XmTop; import com.server.xm.entity.vo.XmTopVo; @@ -42,5 +43,10 @@ public class XmTopController extends BaseController { List list = this.xmTopService.queryAll(xmTop); return getDataTable(list); } + @PostMapping("/create") + public AjaxResult create(@RequestBody XmTopVo xmTopVo){ + this.xmTopService.insert(xmTopVo); + return AjaxResult.success(); + } } diff --git a/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmNode.java b/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmNode.java index 1280ad15..9c1e40b0 100644 --- a/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmNode.java +++ b/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmNode.java @@ -1,6 +1,10 @@ package com.server.xm.entity; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.common.core.utils.uuid.UUID; import com.ruoyi.common.core.web.domain.BaseEntity; +import com.server.xm.entity.vo.XmTopVo; +import org.springframework.context.annotation.Bean; import java.util.Date; import java.io.Serializable; @@ -39,10 +43,20 @@ public class XmNode extends BaseEntity { * 是否删除,1已删除,0未删除 */ private String delFlag; - + public XmNode(){} + public XmNode(XmTopVo xmTopVo,String level,String parentId,String topId){ + BeanUtils.copyProperties(xmTopVo,this); +// if(null == xmTopVo.getId()){ +// this.setId(UUID.randomUUID().toString()); +// } + this.setName(xmTopVo.getTopic()); + this.setNodeLevel(level); + this.setParentId(parentId); + this.setTopId(topId); + } public String getId() { - return id; + return this.id; } public void setId(String id) { @@ -90,7 +104,7 @@ public class XmNode extends BaseEntity { } public String getDelFlag() { - return delFlag; + return null != this.delFlag?this.delFlag : "0"; } public void setDelFlag(String delFlag) { diff --git a/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmNodeStyle.java b/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmNodeStyle.java index 96b33f0f..abbc2c7f 100644 --- a/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmNodeStyle.java +++ b/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmNodeStyle.java @@ -1,6 +1,9 @@ package com.server.xm.entity; +import com.alibaba.fastjson2.JSON; +import com.ruoyi.common.core.utils.uuid.UUID; import com.ruoyi.common.core.web.domain.BaseEntity; +import com.server.xm.entity.vo.XmTopVo; /** @@ -40,9 +43,22 @@ public class XmNodeStyle extends BaseEntity { */ private String nodeId; + public XmNodeStyle(){} + public XmNodeStyle(XmTopVo xmTopVo){ + this.setId(UUID.randomUUID().toString()); + this.setDirection(xmTopVo.getDirection().toString()); + this.setIcons(JSON.toJSONString(xmTopVo.getIcons())); + this.setTags(JSON.toJSONString(xmTopVo.getTags())); + this.setMemo(xmTopVo.getMemo()); + this.setHyperLink(xmTopVo.getHyperLink()); + this.setStyle(JSON.toJSONString(xmTopVo.getStyle())); + this.setNodeId(xmTopVo.getId()); + } + + public String getId() { - return id; + return this.id; } public void setId(String id) { diff --git a/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmTop.java b/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmTop.java index 49c74d8b..09f746f3 100644 --- a/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmTop.java +++ b/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/XmTop.java @@ -1,9 +1,12 @@ package com.server.xm.entity; +import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.web.domain.BaseEntity; +import com.server.xm.entity.vo.XmTopVo; import java.util.Date; import java.io.Serializable; +import java.util.UUID; /** * Xmind列表(XmTop)实体类 @@ -22,19 +25,30 @@ public class XmTop extends BaseEntity { /** * 所属分类 */ - private String typeId; + private String type; /** * 节点等级 */ private String nodeLevel; + private String parentId; /** * 是否删除,1已删除,0未删除 */ private String delFlag; + public XmTop(){} + public XmTop(XmTopVo xmTopVo,String level,String parentId){ + BeanUtils.copyProperties(xmTopVo,this); +// if(null == xmTopVo.getId()){ +// this.setId(UUID.randomUUID().toString()); +// } + this.setName(xmTopVo.getTopic()); + this.setNodeLevel(level); + this.setParentId(parentId); + } public String getId() { - return id; + return this.id; } public void setId(String id) { @@ -50,11 +64,11 @@ public class XmTop extends BaseEntity { } public String getTypeId() { - return typeId; + return type; } public void setTypeId(String typeId) { - this.typeId = typeId; + this.type = typeId; } public String getNodeLevel() { @@ -66,11 +80,18 @@ public class XmTop extends BaseEntity { } public String getDelFlag() { - return delFlag; + return null != this.delFlag ? this.delFlag : "0"; } public void setDelFlag(String delFlag) { this.delFlag = delFlag; } + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } } diff --git a/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/vo/XmTopVo.java b/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/vo/XmTopVo.java index fe9ad0b9..a49618e9 100644 --- a/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/vo/XmTopVo.java +++ b/ruoyi-modules/server-xm/src/main/java/com/server/xm/entity/vo/XmTopVo.java @@ -11,6 +11,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.UUID; public class XmTopVo implements Serializable { private static final long serialVersionUID = 814901162125497459L; @@ -25,7 +26,11 @@ public class XmTopVo implements Serializable { private List tags; private List children; - public XmTopVo() {} + public XmTopVo() { + if(null == this.id){ + this.setId(UUID.randomUUID().toString()); + } + } public XmTopVo(XmTop top, XmNodeStyle style){ //基本信息同步 BeanUtils.copyProperties(top,this); @@ -33,15 +38,16 @@ public class XmTopVo implements Serializable { this.setIcons(JSON.parseObject(style.getIcons(), ArrayList.class)); this.setStyle(JSON.parseObject(style.getStyle(),Map.class)); this.setTags(JSON.parseObject(style.getTags(),ArrayList.class)); + this.setDirection(Integer.parseInt(style.getDirection())); + this.setHyperLink(style.getHyperLink()); + this.setMemo(style.getMemo()); } - public static long getSerialVersionUID() { - return serialVersionUID; - } + public String getId() { - return id; + return this.id; } public void setId(String id) { diff --git a/ruoyi-modules/server-xm/src/main/java/com/server/xm/service/XmTopService.java b/ruoyi-modules/server-xm/src/main/java/com/server/xm/service/XmTopService.java index accde510..5ae1048b 100644 --- a/ruoyi-modules/server-xm/src/main/java/com/server/xm/service/XmTopService.java +++ b/ruoyi-modules/server-xm/src/main/java/com/server/xm/service/XmTopService.java @@ -42,7 +42,7 @@ public interface XmTopService { * @param xmTop 实例对象 * @return 实例对象 */ - XmTop insert(XmTop xmTop); + void insert(XmTopVo xmTopVo); /** * 修改数据 diff --git a/ruoyi-modules/server-xm/src/main/java/com/server/xm/service/impl/XmTopServiceImpl.java b/ruoyi-modules/server-xm/src/main/java/com/server/xm/service/impl/XmTopServiceImpl.java index 9afaf8f6..b15370bd 100644 --- a/ruoyi-modules/server-xm/src/main/java/com/server/xm/service/impl/XmTopServiceImpl.java +++ b/ruoyi-modules/server-xm/src/main/java/com/server/xm/service/impl/XmTopServiceImpl.java @@ -1,17 +1,21 @@ package com.server.xm.service.impl; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.server.xm.entity.XmNode; import com.server.xm.entity.XmNodeStyle; import com.server.xm.entity.XmTop; import com.server.xm.entity.vo.XmTopVo; +import com.server.xm.mapper.XmNodeMapper; import com.server.xm.mapper.XmNodeStyleMapper; import com.server.xm.mapper.XmTopMapper; import com.server.xm.service.XmTopService; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -26,6 +30,8 @@ public class XmTopServiceImpl implements XmTopService { private XmTopMapper xmTopMapper; @Resource private XmNodeStyleMapper styleMapper; + @Resource + private XmNodeMapper nodeMapper; /** * 通过ID查询单条数据 @@ -71,15 +77,58 @@ public class XmTopServiceImpl implements XmTopService { /** * 新增数据 * - * @param xmTop 实例对象 + * @param xmTopVo 实例对象 * @return 实例对象 */ @Override - public XmTop insert(XmTop xmTop) { - this.xmTopMapper.insert(xmTop); - return xmTop; - } + @Transactional + public void insert(XmTopVo xmTopVo) { + //查询头两个节点,存入top + List topList = new ArrayList<>(); + XmTop topEntity = new XmTop(xmTopVo,"1","-1"); + topList.add(topEntity); + List secList = xmTopVo.getChildren(); + //保存前两节点style + List styleList = new ArrayList<>(); + styleList.add(new XmNodeStyle(xmTopVo)); + if(!CollectionUtils.isEmpty(secList)){ + List secTopList = secList.stream().map(e -> new XmTop(e,"2",topEntity.getId())).collect(Collectors.toList()); + topList.addAll(secTopList); + //保存节点 + xmTopMapper.insertBatch(topList); + List secStyleList = secList.stream().map(e -> new XmNodeStyle(e)).collect(Collectors.toList()); + styleList.addAll(secStyleList); + //保存syle + styleMapper.insertBatch(styleList); + //递归下属节点 + List nodes = new ArrayList<>(); + List styles = new ArrayList<>(); + secList.stream().forEach(e -> { + if(!CollectionUtils.isEmpty(e.getChildren())){ + dealInsertNode(e.getChildren(),nodes,styles,3,e.getId(),topEntity.getId()); + } + }); + //保存 + nodeMapper.insertBatch(nodes); + styleMapper.insertBatch(styles); + } + + } + private void dealInsertNode(List xmTopVoList, List nodeList,List styleList,Integer level,String parentId,String topId){ + final Integer oldLevel = level; + List nodes = xmTopVoList.stream().map(e -> new XmNode(e,oldLevel.toString(),parentId,topId)).collect(Collectors.toList()); + nodeList.addAll(nodes); + List styles = xmTopVoList.stream().map(e -> new XmNodeStyle(e)).collect(Collectors.toList()); + styleList.addAll(styles); + Map> map = xmTopVoList.stream().filter(e -> null != e.getChildren()).collect(Collectors.toMap(e ->e.getId(),e->e.getChildren(),(k1,k2) ->k1)); + final Integer newLevel = ++level; + map.forEach((k,v) -> { + if(!CollectionUtils.isEmpty(v)){ + dealInsertNode(v,nodeList,styleList,newLevel,k,topId); + } + }); + } /** * 修改数据 * diff --git a/ruoyi-modules/server-xm/src/main/resources/mapper/XmNodeMapper.xml b/ruoyi-modules/server-xm/src/main/resources/mapper/XmNodeMapper.xml index 334a47aa..faa61d03 100644 --- a/ruoyi-modules/server-xm/src/main/resources/mapper/XmNodeMapper.xml +++ b/ruoyi-modules/server-xm/src/main/resources/mapper/XmNodeMapper.xml @@ -29,7 +29,7 @@ CREATE_BY, UPDATE_BY, DEL_FLAG - from sev-xmind.xm_node + from xm_node where ID = #{id} @@ -46,7 +46,7 @@ CREATE_BY, UPDATE_BY, DEL_FLAG - from sev-xmind.xm_node + from xm_node limit #{offset} , #{limit} @@ -55,7 +55,7 @@