From e83f644cce0865d50a9585de0c37dd32e435f9ef Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期三, 20 九月 2023 17:14:23 +0800
Subject: [PATCH] 1、增加分类授权查询树的接口。 2、增加分类授权保存接口。

---
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java                  |   27 ++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeApplyWebManagementService.java         |   14 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/SystemClassifyRoleMapper.java                |   10 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeApplyWebManagementServiceImpl.java |   81 +++++++++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/SystemClassifyRoleMapper.xml                              |   82 +++++++++++++
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java  |  105 +++++++++++++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyWebManagementController.java    |   20 +++
 7 files changed, 337 insertions(+), 2 deletions(-)

diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java
index a982c88..4eaffc8 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java
@@ -9,6 +9,7 @@
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springblade.core.tool.utils.StringUtil;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
@@ -107,4 +108,108 @@
 		}
 	}
 
+	public <T, R> List<Tree> doListSystemClassTrees(List<T> doList, TreeWrapperOptions wrapperOptions, Function<T, R> f) {
+		if (CollectionUtils.isEmpty(doList)) {
+			return new ArrayList();
+		} else {
+			List<Tree> allTree = new ArrayList();
+			List<Tree> children = new ArrayList();
+			Iterator var6 = doList.iterator();
+
+			while(true) {
+				while(var6.hasNext()) {
+					T doObject = (T) var6.next();
+					Tree tree = new Tree();
+					List<String> oidFieldNames = VciBaseUtil.str2List(wrapperOptions.getOidFieldName());
+					List<String> oidValues = new LinkedList();
+					oidFieldNames.stream().forEach((s) -> {
+						oidValues.add(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("oid", doObject)));
+					});
+					tree.setOid((String)oidValues.stream().collect(Collectors.joining(wrapperOptions.getOidValueSep())));
+					tree.setName((String) VciBaseUtil.getValueFromField("name", doObject));
+					if (f != null) {
+						tree.setText((String)f.apply(doObject));
+					} else {
+						List<String> textFieldNames = VciBaseUtil.str2List(wrapperOptions.getTextFieldName());
+						List<String> textValues = new LinkedList();
+						textFieldNames.stream().forEach((s) -> {
+							textValues.add(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField(s, doObject)));
+						});
+						tree.setText((String)textValues.stream().collect(Collectors.joining(wrapperOptions.getTextValueSep())));
+					}
+
+					if (StringUtils.isNotBlank(wrapperOptions.getParentFieldName())) {
+						String stringValueFromObject = VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField(wrapperOptions.getParentFieldName(), doObject));
+						tree.setParentId(stringValueFromObject);
+					}
+
+					if (wrapperOptions.isAllAttributes()) {
+						try {
+							tree.setAttributes(VciBaseUtil.objectToMapString(doObject));
+						} catch (Exception var13) {
+							if (this.logger.isErrorEnabled()) {
+								this.logger.error("鎶婂璞¤浆鎹负map鏃跺嚭鐜颁簡閿欒锛屼絾鏄笉褰卞搷鏍戠殑灞曠ず锛屽涓氬姟鍙兘鏈夊奖鍝�");
+							}
+						}
+					}
+
+					if (wrapperOptions.isMultipleSelect() || wrapperOptions.isShowCheckBox()) {
+						tree.setShowCheckbox(true);
+					}
+
+					if (wrapperOptions.getParentOid() == null) {
+						wrapperOptions.setParentOid("");
+					}
+
+					if (!StringUtils.isBlank(tree.getParentId()) && (!StringUtils.isNotBlank(wrapperOptions.getParentOid()) || !wrapperOptions.getParentOid().equalsIgnoreCase(tree.getParentId()))) {
+						children.add(tree);
+					} else {
+						allTree.add(tree);
+					}
+				}
+
+				(new Tree()).findSystemClassChild(allTree, children);
+				if (allTree.size() <= 0) {
+					allTree.addAll(children);
+				}
+
+				return allTree;
+			}
+		}
+	}
+//
+//	public void findSystemClassChild(List<Tree> treenode, List<Tree> children) {
+//		Tree node;
+//		for(Iterator var3 = treenode.iterator(); var3.hasNext(); {
+//			if (var3 == null) {
+//				var3.next();
+//			} else {
+//				((Tree) var3.next()).getChildren().add(node);
+//			}
+//		}) {
+//			node = (Tree)var3.next();
+//			Iterator var5 = children.iterator();
+//
+//			while(var5.hasNext()) {
+//				Tree childnode = (Tree)var5.next();
+//				if (node.getAttributes().get("classifyOid").equalsIgnoreCase(childnode.getParentId())) {
+//					childnode.setParentName(node.getText());
+//					if (StringUtil.isBlank(childnode.getParentBtmName())) {
+//						childnode.setParentBtmName((String)node.getAttributes().getOrDefault("btmname", ""));
+//					}
+//
+//					node.getChildren().add(childnode);
+//				}
+//			}
+//
+//			if (node.getChildren().size() > 0) {
+//				this.findSystemClassChild(node.getChildren(), children);
+//				node.setLeaf(false);
+//			} else {
+//				node.setLeaf(true);
+//			}
+//		}
+//
+//	}
+
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java
index 61d8b70..4b8fb68 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java
@@ -207,6 +207,33 @@
 
 	}
 
+	public void findSystemClassChild(List<Tree> treenode, List<Tree> children) {
+		Tree node;
+		for(Iterator var3 = treenode.iterator(); var3.hasNext(); this.getChildren().add(node)) {
+			node = (Tree)var3.next();
+			Iterator var5 = children.iterator();
+
+			while(var5.hasNext()) {
+				Tree childnode = (Tree)var5.next();
+				if (node.getAttributes().get("classifyOid").equalsIgnoreCase(childnode.getParentId())) {
+					childnode.setParentName(node.getText());
+					if (StringUtil.isBlank(childnode.getParentBtmName())) {
+						childnode.setParentBtmName((String)node.getAttributes().getOrDefault("btmname", ""));
+					}
+
+					node.getChildren().add(childnode);
+				}
+			}
+
+			if (node.getChildren().size() > 0) {
+				this.findSystemClassChild(node.getChildren(), children);
+				node.setLeaf(false);
+			} else {
+				node.setLeaf(true);
+			}
+		}
+
+	}
 	@Override
 	public String toString() {
 		return "Tree{oid='" + this.oid + '\'' + ", text='" + this.text + '\'' + ", leaf=" + this.leaf + ", showCheckbox=" + this.showCheckbox + ", checked=" + this.checked + ", children=" + this.children + ", icon='" + this.icon + '\'' + ", iconCls='" + this.iconCls + '\'' + ", parentId='" + this.parentId + '\'' + ", parentName='" + this.parentName + '\'' + ", parentBtmName='" + this.parentBtmName + '\'' + ", expanded=" + this.expanded + ", href='" + this.href + '\'' + ", index='" + this.index + '\'' + ", attributes=" + this.attributes + '}';
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyWebManagementController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyWebManagementController.java
index 805c7de..046eac1 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyWebManagementController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyWebManagementController.java
@@ -1,11 +1,16 @@
 package com.vci.ubcs.code.controller;
 
 
+import com.vci.ubcs.code.dto.CodeClassifyTemplateAttrDTO;
+import com.vci.ubcs.code.entity.SystemClassifyRole;
+import com.vci.ubcs.code.service.ICodeApplyWebManagementService;
 import com.vci.ubcs.code.service.ICodeClassifyService;
+import com.vci.ubcs.starter.web.pagemodel.Tree;
 import lombok.AllArgsConstructor;
 import org.springblade.core.tool.api.R;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 涓婚搴撳畾涔夎〃 鎺у埗鍣�
@@ -21,6 +26,8 @@
 	 * 鍒嗙被鏈嶅姟瀵硅薄
 	 */
 	private final ICodeClassifyService codeClassifyService;
+
+	private final ICodeApplyWebManagementService codeApplyWebManagementService;
 
 	/***
 	 * 鏍规嵁鍓嶇閫夋嫨鐨勫垎绫绘潈闄愭巿鏉冩巿鏉�
@@ -45,5 +52,14 @@
 		return R.success("鏌ヨ鎴愬姛");
 	}
 
+	@PostMapping( "/batchAddSave")
+	public R batchAddSave(@RequestBody List<SystemClassifyRole> list,String systemOid,String systemId){
+		return codeApplyWebManagementService.batchAddSave(list,systemOid,systemId);
+	}
+
+	@GetMapping("/getSystemClassifyRoleTree")
+	public List<Tree> getSystemClassifyRoleTree(String systemOid,String systemId){
+		return codeApplyWebManagementService.getSystemClassifyRoleTree(systemOid,systemId);
+	}
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/SystemClassifyRoleMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/SystemClassifyRoleMapper.java
new file mode 100644
index 0000000..6bd0191
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/SystemClassifyRoleMapper.java
@@ -0,0 +1,10 @@
+package com.vci.ubcs.code.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.code.entity.SystemClassifyRole;
+
+import java.util.List;
+
+public interface SystemClassifyRoleMapper extends BaseMapper<SystemClassifyRole> {
+	public List<SystemClassifyRole> getListSystemClassifyRole(String systemOid, String systemId);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeApplyWebManagementService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeApplyWebManagementService.java
new file mode 100644
index 0000000..3ea2f51
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeApplyWebManagementService.java
@@ -0,0 +1,14 @@
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.SystemClassifyRole;
+import com.vci.ubcs.starter.web.pagemodel.Tree;
+import org.springblade.core.tool.api.R;
+
+import java.util.List;
+
+public interface ICodeApplyWebManagementService extends IService<SystemClassifyRole> {
+	R batchAddSave(List<SystemClassifyRole> list,String systemOid,String systemId);
+
+	List<Tree> getSystemClassifyRoleTree(String systemOid, String systemId);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeApplyWebManagementServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeApplyWebManagementServiceImpl.java
new file mode 100644
index 0000000..fd899e0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeApplyWebManagementServiceImpl.java
@@ -0,0 +1,81 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.SystemClassifyRole;
+import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
+import com.vci.ubcs.code.mapper.SystemClassifyRoleMapper;
+import com.vci.ubcs.code.service.ICodeApplyWebManagementService;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
+import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
+import com.vci.ubcs.starter.web.pagemodel.Tree;
+import jodd.util.StringUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+@Service
+public class CodeApplyWebManagementServiceImpl extends ServiceImpl<SystemClassifyRoleMapper, SystemClassifyRole> implements ICodeApplyWebManagementService {
+
+	/**
+	 * 涓婄骇鑺傜偣鐨勫睘鎬у悕绉�
+	 */
+	public static  final String PARENT_FIELD_NAME = "classParentOid";
+
+	/**
+	 * 瀵硅薄鐨勬搷浣�
+	 */
+	@Resource
+	private RevisionModelUtil revisionModelUtil;
+
+
+	@Override
+	public R batchAddSave(List<SystemClassifyRole> roleList,String systemOid,String systemId) {
+		if(roleList.size() == 0){
+			return R.fail("浼犲叆鏁版嵁涓虹┖锛岃纭锛侊紒");
+		}
+		//鍏堝垹闄わ紝鍐嶄繚瀛�
+		QueryWrapper<SystemClassifyRole> wrapper = new QueryWrapper<>();
+		wrapper.eq("systemOid",systemOid);
+		wrapper.eq("systemId",systemId);
+		this.remove(wrapper);
+		//鏁版嵁澶勭悊
+		roleList.stream().forEach(systemClassifyRole -> {
+			if(StringUtil.isBlank(systemClassifyRole.getOid())){
+				DefaultAttrAssimtUtil.addDefaultAttrAssimt(systemClassifyRole,"systemClassifyRole");
+				systemClassifyRole.setSystemId(systemId);
+				systemClassifyRole.setSystemOid(systemOid);
+			}else{
+				systemClassifyRole.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
+				systemClassifyRole.setCreateTime(new Date());
+				systemClassifyRole.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
+				systemClassifyRole.setLastModifyTime(new Date());
+				systemClassifyRole.setTs(new Date());
+			}
+			systemClassifyRole.setTenantId(AuthUtil.getTenantId());
+		});
+		//淇濆瓨
+		this.saveBatch(roleList);
+		return R.success("鎿嶄綔鎴愬姛");
+	}
+
+	@Override
+	public List<Tree> getSystemClassifyRoleTree(String systemOid, String systemId) {
+		List<SystemClassifyRole> listSystemClassifyRole = baseMapper.getListSystemClassifyRole(systemOid, systemId);
+		TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
+		treeWrapperOptions.setOidFieldName("CLASSIFYOID");
+		List<Tree> tree= revisionModelUtil.doListSystemClassTrees(listSystemClassifyRole,treeWrapperOptions,(SystemClassifyRole s) ->{
+			//鍙互鍦ㄨ繖閲屽鐞嗘爲鑺傜偣鐨勬樉绀�
+			return s.getClassifyId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
+				.getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
+		});
+		return tree;
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/SystemClassifyRoleMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/SystemClassifyRoleMapper.xml
new file mode 100644
index 0000000..d21813b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/SystemClassifyRoleMapper.xml
@@ -0,0 +1,82 @@
+<?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.vci.ubcs.code.mapper.SystemClassifyRoleMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="plSystemClassifyRoleMap" type="com.vci.ubcs.code.entity.SystemClassifyRole">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="TENANT_ID" property="tenantId"/>
+        <result column="SYSTEMOID" property="systemOid"/>
+        <result column="SYSTEMID" property="systemId"/>
+        <result column="CLASSIFYOID" property="classifyOid"/>
+        <result column="CLASSIFYID" property="classifyId"/>
+        <result column="SELECTED" property="selected"/>
+        <result column="CLASSPARENTOID" property="classParentOid"/>
+    </resultMap>
+    <select id="getListSystemClassifyRole" resultType="com.vci.ubcs.code.entity.SystemClassifyRole">
+        select pc.OID,
+               pc.REVISIONOID,
+               pc.NAMEOID,
+               pc.BTMNAME,
+               pc.LASTR,
+               pc.FIRSTR,
+               pc.LASTV,
+               pc.FIRSTV,
+               pc.CREATOR,
+               pc.CREATETIME,
+               pc.LASTMODIFIER,
+               pc.LASTMODIFYTIME,
+               pc.REVISIONRULE,
+               pc.VERSIONRULE,
+               pc.REVISIONSEQ,
+               pc.REVISIONVALUE,
+               pc.VERSIONSEQ,
+               pc.VERSIONVALUE,
+               pc.LCTID,
+               pc.LCSTATUS,
+               pc.TS,
+               pc.ID,
+               p.NAME,
+               pc.DESCRIPTION,
+               pc.OWNER,
+               pc.COPYFROMVERSION,
+               pc.GROUPCODE,
+               pc.TENANT_ID,
+               pc.SYSTEMOID,
+               pc.SYSTEMID,
+               p.oid CLASSIFYOID,
+               p.id CLASSIFYID,
+               case when pc.selected is null then 'false' else  pc.SELECTED end SELECTED,
+               p.PARENTCODECLASSIFYOID CLASSPARENTOID
+        from PL_CODE_CLASSIFY p ,
+             PL_CODE_SYSTEM_CLASSIFY_ROLE pc
+        where p.oid = pc.CLASSIFYOID(+)
+          and '${systemOid}' = pc.SYSTEMOID(+)
+          and '${systemId}' = pc.SYSTEMID(+)
+    </select>
+
+</mapper>

--
Gitblit v1.9.3