Browse Source

术语关联顺序修改

rgb 6 years ago
parent
commit
6301cd3bb8

+ 134 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/RelationOrder.java

@@ -0,0 +1,134 @@
+package com.diagbot.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+ * <p>
+ * 术语关系排序表
+ * </p>
+ *
+ * @author gaodm
+ * @since 2019-05-15
+ */
+@TableName("kl_relation_order")
+public class RelationOrder implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 关系表主键id
+     */
+    private Long tRelationId;
+
+    /**
+     * 区域顺序
+     */
+    private Integer orderNo;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long gettRelationId() {
+        return tRelationId;
+    }
+
+    public void settRelationId(Long tRelationId) {
+        this.tRelationId = tRelationId;
+    }
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    @Override
+    public String toString() {
+        return "RelationOrder{" +
+        "id=" + id +
+        ", isDeleted=" + isDeleted +
+        ", gmtCreate=" + gmtCreate +
+        ", gmtModified=" + gmtModified +
+        ", creator=" + creator +
+        ", modifier=" + modifier +
+        ", tRelationId=" + tRelationId +
+        ", orderNo=" + orderNo +
+        "}";
+    }
+}

+ 113 - 35
knowledgeman-service/src/main/java/com/diagbot/facade/RelationContactFacade.java

@@ -16,10 +16,13 @@ import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.RelationContactListDTO;
 import com.diagbot.dto.RelationNodeDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.Concept;
 import com.diagbot.entity.Relation;
+import com.diagbot.entity.RelationOrder;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.RelationService;
+import com.diagbot.service.impl.RelationOrderServiceImpl;
 import com.diagbot.service.impl.RelationServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.RespDTOUtil;
@@ -37,10 +40,17 @@ import com.diagbot.vo.RemoveRelationContactVO;
 @Component
 public class RelationContactFacade extends RelationServiceImpl {
 	
+	@Autowired
+    private ConceptFacade conceptFacade; 
+	@Autowired
+    private RelationOrderFacade relationOrderFacade; 
 	@Autowired
     @Qualifier("relationServiceImpl")
     private RelationService relationService;
 	@Autowired
+    @Qualifier("relationOrderServiceImpl")
+    private RelationOrderServiceImpl relationOrderServiceImpl;
+	@Autowired
     private UserServiceClient userServiceClient;
 	
     /**
@@ -67,16 +77,84 @@ public class RelationContactFacade extends RelationServiceImpl {
 	 * @return
 	 */
 	public Boolean addRelation(RelationNodeVO relationNodeVO) {
-		List<Relation> relationList = repairRelationDataForAdd(relationNodeVO);
+		if(relationNodeVO.getConceptId()==null){
+			throw new CommonException(CommonErrorCode.RPC_ERROR,"conceptId必填!");
+		}
+		if(relationNodeVO.getNodeList()==null||relationNodeVO.getNodeList().size()==0){
+			throw new CommonException(CommonErrorCode.RPC_ERROR,"nodeList不能为空!");
+		}
+		
+		List<Long> relationIdList = repairRelationDataForDelBeforeAdd(relationNodeVO.getConceptId(), relationNodeVO.getSonRelationId());
+		QueryWrapper<RelationOrder> relationOrderQe = new QueryWrapper<>();
+		relationOrderQe.in("t_relation_id", relationIdList);
+		relationOrderFacade.remove(relationOrderQe);
+		
+		List<List<Relation>> relationGroupList = repairRelationDataForAdd(relationNodeVO);
 		String currentUser = UserUtils.getCurrentPrincipleID();
         Date now = DateUtil.now();
-        relationList.forEach(i->{
-        	i.setCreator(currentUser);
-        	i.setGmtCreated(now);
-        	i.setModifier(currentUser);
-        	i.setGmtModified(now);
+        List<Relation> relationList = new ArrayList<>();
+        relationGroupList.forEach(i->{
+        	i.forEach(j->{
+        		j.setCreator(currentUser);
+            	j.setGmtCreated(now);
+            	j.setModifier(currentUser);
+            	j.setGmtModified(now);
+            	relationList.add(j);
+        	});
         });
-		return relationService.saveOrUpdateBatch(relationList);
+        relationService.saveOrUpdateBatch(relationList);
+        
+        if(relationNodeVO.getIsOrderBy()==1){
+        	List<RelationOrder> relationOrderList = new ArrayList<>();
+        	relationGroupList.forEach(i->{
+        		int orderNo = 0;
+            	for(Relation j : i){
+            		orderNo++;
+            		RelationOrder relationOrder = new RelationOrder();
+            		relationOrder.setOrderNo(orderNo);
+            		relationOrder.settRelationId(j.getId());
+            		relationOrder.setGmtCreate(now);
+            		relationOrder.setGmtModified(now);
+            		relationOrder.setCreator(currentUser);
+            		relationOrder.setModifier(currentUser);
+            		relationOrderList.add(relationOrder);
+            	}
+            });
+        	relationOrderServiceImpl.saveBatch(relationOrderList);
+        }
+        
+		return true;
+	}
+	
+	/**
+	 * 处理关系节点-添加或者编辑前先删除掉
+	 * @param conceptId
+	 * @param relationId
+	 * @return
+	 */
+	private List<Long> repairRelationDataForDelBeforeAdd(Long conceptId,Long relationId){
+		List<Long> relationIdList = new ArrayList<>();
+		
+		QueryWrapper<Relation> relationQe = new QueryWrapper<>();
+		relationQe.eq("end_id", conceptId);
+		relationQe.eq(relationId!=null,"relation_id", relationId);
+		List<Relation> relationList = list(relationQe);
+		
+		if(relationList.size()==0){
+			return relationIdList;
+		}
+		
+		relationIdList.addAll(relationList.stream().map(i->i.getId()).collect(Collectors.toList()));
+		
+		relationList.forEach(i->{
+			relationIdList.addAll(repairRelationDataForDelBeforeAdd(i.getStartId(),relationId));
+		});
+		
+		if(!remove(relationQe)){
+			throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
+		}
+		
+		return relationIdList;
 	}
 	
 	/**
@@ -84,36 +162,26 @@ public class RelationContactFacade extends RelationServiceImpl {
 	 * @param relationNodeVO
 	 * @return
 	 */
-	private List<Relation> repairRelationDataForAdd(RelationNodeVO relationNodeVO){
-		List<Relation> relationList = new ArrayList<>();
+	private List<List<Relation>> repairRelationDataForAdd(RelationNodeVO relationNodeVO){
+		List<List<Relation>> retList = new ArrayList<>();
 		
 		if(relationNodeVO.getNodeList()!=null&&relationNodeVO.getNodeList().size()>0){
-			
-			QueryWrapper<Relation> relationQe = new QueryWrapper<>();
-			relationQe.eq("end_id", relationNodeVO.getConceptId());
-			if(relationNodeVO.getSonRelationId()!=null){
-				relationQe.eq("relation_id", relationNodeVO.getSonRelationId());
-				relationNodeVO.getNodeList().forEach(i->{
-					i.setRelationId(relationNodeVO.getSonRelationId());
-				});
-			}else{
-				relationQe.in("relation_id", relationNodeVO.getNodeList().stream().map(i->i.getRelationId()).distinct().collect(Collectors.toList()));
-			}
-			remove(relationQe);
-			
+			List<Relation> relationList = new ArrayList<>();
 			relationNodeVO.getNodeList().forEach(i->{
-				i.setParentConceptId(relationNodeVO.getConceptId());
-				relationList.addAll(repairRelationDataForAdd(i));
+				Relation relation = new Relation();
+				relation.setStartId(i.getConceptId());
+				relation.setEndId(relationNodeVO.getConceptId());
+				relation.setRelationId(i.getRelationId());
+				relationList.add(relation);
+				
+				if(i.getNodeList()!=null&&i.getNodeList().size()>0){
+					retList.addAll(repairRelationDataForAdd(i));
+				}
 			});
-		}else if(relationNodeVO.getParentConceptId()!=null){
-			Relation relation = new Relation();
-			relation.setStartId(relationNodeVO.getConceptId());
-			relation.setEndId(relationNodeVO.getParentConceptId());
-			relation.setRelationId(relationNodeVO.getRelationId());
-			relationList.add(relation);
+			retList.add(relationList);
 		}
 		
-		return relationList;
+		return retList;
 	}
 	
 	/**
@@ -124,6 +192,10 @@ public class RelationContactFacade extends RelationServiceImpl {
 	public RelationNodeDTO relationContactDetail(RelationContactDetailVO relationContactDetailVO){
 		RelationNodeDTO relationNodeDTO = new RelationNodeDTO();
 		
+		Concept concept = conceptFacade.getById(relationContactDetailVO.getConceptId());
+		relationNodeDTO.setConceptId(concept.getId());
+		relationNodeDTO.setConceptName(concept.getLibName());
+		
 		relationNodeDTO.setNodeList(repairRelationDataForQuery(relationContactDetailVO.getConceptId(), relationContactDetailVO.getRelationId()));
 		
 		return relationNodeDTO;
@@ -151,7 +223,9 @@ public class RelationContactFacade extends RelationServiceImpl {
 	 * @return
 	 */
 	public Boolean removeRelationContact(RemoveRelationContactVO removeRelationContactVO){
-		repairRelationDataForDel(removeRelationContactVO.getConceptId(), removeRelationContactVO.getRelationId(),removeRelationContactVO.getIsDeleted());
+		String currentUser = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+		repairRelationDataForDel(removeRelationContactVO.getConceptId(), removeRelationContactVO.getRelationId(),removeRelationContactVO.getIsDeleted(),currentUser,now);
 		return true;
 	}
 	
@@ -159,9 +233,11 @@ public class RelationContactFacade extends RelationServiceImpl {
 	 * 处理关系节点-删除/恢复事件
 	 * @param conceptId
 	 * @param relationId
-	 * @return
+	 * @param isDeleted
+	 * @param currentUser 操作人
+	 * @param now 操作时间
 	 */
-	private void repairRelationDataForDel(Long conceptId,Long relationId,String isDeleted){
+	private void repairRelationDataForDel(Long conceptId,Long relationId,String isDeleted,String currentUser,Date now){
 		QueryWrapper<Relation> relationQe = new QueryWrapper<>();
 		relationQe.eq("end_id", conceptId);
 		relationQe.eq(relationId!=null,"relation_id", relationId);
@@ -187,12 +263,14 @@ public class RelationContactFacade extends RelationServiceImpl {
 		
 		Relation relation = new Relation();
 		relation.setIsDeleted(isDeleted);
+		relation.setGmtModified(now);
+		relation.setModifier(currentUser);
 		if(!update(relation, relationQe)){
 			throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
 		}
 		
 		relationList.forEach(i->{
-			repairRelationDataForDel(i.getStartId(), relationId,isDeleted);
+			repairRelationDataForDel(i.getStartId(), relationId,isDeleted,currentUser,now);
 		});
 	}
 

+ 15 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/RelationOrderFacade.java

@@ -0,0 +1,15 @@
+package com.diagbot.facade;
+
+import org.springframework.stereotype.Component;
+
+import com.diagbot.service.impl.RelationOrderServiceImpl;
+
+/**
+ * @Description: 术语顺序业务层
+ * @author: Weixuan Huang
+ * @time: 2019/1/16 14:17
+ */
+@Component
+public class RelationOrderFacade extends RelationOrderServiceImpl {
+	
+}

+ 16 - 0
knowledgeman-service/src/main/java/com/diagbot/mapper/RelationOrderMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.RelationOrder;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 术语关系排序表 Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2019-05-15
+ */
+public interface RelationOrderMapper extends BaseMapper<RelationOrder> {
+
+}

+ 16 - 0
knowledgeman-service/src/main/java/com/diagbot/service/RelationOrderService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.RelationOrder;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 术语关系排序表 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2019-05-15
+ */
+public interface RelationOrderService extends IService<RelationOrder> {
+
+}

+ 20 - 0
knowledgeman-service/src/main/java/com/diagbot/service/impl/RelationOrderServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.RelationOrder;
+import com.diagbot.mapper.RelationOrderMapper;
+import com.diagbot.service.RelationOrderService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 术语关系排序表 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2019-05-15
+ */
+@Service
+public class RelationOrderServiceImpl extends ServiceImpl<RelationOrderMapper, RelationOrder> implements RelationOrderService {
+
+}

+ 12 - 4
knowledgeman-service/src/main/java/com/diagbot/vo/RelationNodeVO.java

@@ -19,10 +19,10 @@ public class RelationNodeVO {
 	 */
 	private Long conceptId;
 	
-	/**
-	 * 上一级概念id end_id
-	 */
-	private Long parentConceptId;
+//	/**
+//	 * 上一级概念id end_id
+//	 */
+//	private Long parentConceptId;
 	
 	/**
 	 * 当前概念(起点术语) 与 上一级概念(终点术语) 关系id
@@ -31,9 +31,17 @@ public class RelationNodeVO {
     
 	/**
 	 * 当前概念 与 下一级概念 关系id
+	 * 当前系列操作的关系一样时,relationId和sonRelationId都传过来,传一样的值,方便操作,sonRelationId用来删除相关一系列关系;
+	 * 当前系列操作的关系不是全部一样时,不传sonRelationId,这样会删除当前概念下的全部关系
 	 */
 	private Long sonRelationId;
 	
+	/**
+	 * 主要第一级时用,判断是否需要排序
+	 * 是否排序,1-排序,0-不排序
+	 */
+	private Integer isOrderBy = 0;
+	
 	/**
 	 * 下一级概念
 	 */

+ 1 - 2
knowledgeman-service/src/main/resources/mapper/RelationMapper.xml

@@ -64,7 +64,6 @@
 		JOIN kl_lexicon_relationship e ON a.relation_id=e.id
 		WHERE 1=1
  		AND a.is_deleted='N' 
- 		AND b.is_deleted='N' 
  		AND c.is_deleted='N'
  		AND d.is_deleted='N'
  		AND e.is_deleted='N'
@@ -72,7 +71,7 @@
  		<if test="relationId!=null">
  			AND a.relation_id=#{relationId}
  		</if>
-		ORDER BY b.order_no DESC,a.id ASC
+		ORDER BY b.order_no DESC,a.gmt_modified DESC
     </select>
     
     <select id="relationContactList" resultType="com.diagbot.dto.RelationContactListDTO">

+ 17 - 0
knowledgeman-service/src/main/resources/mapper/RelationOrderMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.RelationOrderMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.RelationOrder">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="t_relation_id" property="tRelationId" />
+        <result column="order_no" property="orderNo" />
+    </resultMap>
+
+</mapper>

+ 1 - 1
knowledgeman-service/src/test/java/com/diagbot/CodeGeneration.java

@@ -56,7 +56,7 @@ public class CodeGeneration {
         StrategyConfig strategy = new StrategyConfig();
         strategy.setTablePrefix(new String[] { "kl_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "kl_evaluation", "kl_index_config"}); // 需要生成的表
+        strategy.setInclude(new String[] { "kl_relation_order"}); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);