Browse Source

内控系统代码提交

zhuwei 1 year ago
parent
commit
466ce95d4e
18 changed files with 398 additions and 172 deletions
  1. 4 0
      blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java
  2. 1 1
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  3. 1 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/InformationQuery.java
  4. 4 0
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/enums/UserEnum.java
  5. 2 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileAutoController.java
  6. 0 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java
  7. 138 28
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  8. 91 22
      blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileTransJavaDemo.java
  9. 1 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java
  10. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml
  11. 0 1
      blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
  12. 2 0
      blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java
  13. 0 1
      blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java
  14. 1 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.java
  15. 10 3
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml
  16. 139 111
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java
  17. 2 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
  18. 1 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

+ 4 - 0
blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java

@@ -117,7 +117,11 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
             result = userClient.userInfo(tenantId, username, UserEnum.ARCHIVES.getName()); //档案
         } else if (userType.equals(UserEnum.MANAGER.getName())) {
             result = userClient.userInfo(tenantId, username, UserEnum.MANAGER.getName());  //后管
+        } else if (userType.equals(UserEnum.HAC.getName())) {
+            result = userClient.userInfo(tenantId, username, UserEnum.HAC.getName());  //后管
         }
+
+
         //TODO
 
         // 判断返回信息

+ 1 - 1
blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java

@@ -48,7 +48,7 @@ public interface LauncherConstant {
     /**
      * nacos dev 地址 172.31.222.127   192.168.0.109 127.0.0.1
      */
-    String NACOS_DEV_ADDR = "127.0.0.1:8848";
+    String NACOS_DEV_ADDR = "192.168.0.109:8848";
 
     /**
      * nacos prod 地址

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/InformationQuery.java

@@ -127,7 +127,7 @@ public class InformationQuery extends BaseEntity {
 
 
     @ApiModelProperty("业务时间")
-    private String BusinessTime;
+    private String businessTime;
 
     @ApiModelProperty("电签文件大小,单位K")
     private Long eVisaPdfSize;

+ 4 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/enums/UserEnum.java

@@ -49,6 +49,10 @@ public enum UserEnum {
      */
     MANAGER("saber", 4),
 
+    /**
+     * 内控系统
+     */
+    HAC("hac", 5),
     ;
 
     final String name;

+ 2 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileAutoController.java

@@ -45,7 +45,8 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 @RequestMapping("/archiveFileAuto")
 @Api(value = "案卷收集接口", tags = "案卷收集接口")
-public class ArchiveFileAutoController extends BladeController {
+public class
+ArchiveFileAutoController extends BladeController {
 
     private final ArchiveFileClient archiveFileClient;
     private final IOSSClient iossClient;

+ 0 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -381,7 +381,6 @@ public class ArchiveFileController extends BladeController {
             }
         } else {
             contractById = contractClient.getContractById(contractId);
-
         }
         return R.data(contractById);
     }

+ 138 - 28
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -44,6 +44,7 @@ import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.business.feign.MetadataClassificationClient;
 import org.springblade.business.vo.ArchiveFileVO;
 import org.springblade.common.utils.CommonUtil;
+import org.springblade.common.utils.IDUtils;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
@@ -53,6 +54,7 @@ import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.FileUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.manager.entity.ArchiveTreeContract;
@@ -2088,37 +2090,19 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	 */
 	@Override
 	public R searchInfo(MultipartFile file) throws IOException {
-		JSONObject json = new JSONObject();
-		String fileUrl = FileUtils.getSysLocalFileUrl();
-
-		File fileInfo = org.springblade.common.utils.FileUtils.convert(file);
-		BladeFile data = iossClient.updateFile(file.getBytes(), "testInfo.wav");
-		String token = "cc96fcdce38f49f1af2298a949d39800";
-		String appkey = "7T7TkowOxND01n1y";
-		//	SpeechRecognizerRESTfulDemo demo = new SpeechRecognizerRESTfulDemo(appkey, token);
-
-/*		String fileName = "/Users/hongchuangyanfa/Downloads/nls-sample-16k.wav" ;//SpeechRecognizerRESTfulDemo.class.getClassLoader().getResource("/Users/hongchuangyanfa/Downloads/nls-sample-16k.wav").getPath();
-		String format = "pcm";
-		int sampleRate = 16000;
-		boolean enablePunctuationPrediction = true;
-		boolean enableInverseTextNormalization = true;
-		boolean enableVoiceDetection = false;
-		String dataInfo = demo.process(fileInfo, format, sampleRate, enablePunctuationPrediction, enableInverseTextNormalization, enableVoiceDetection);
-	*/
-
-		//System.out.println("123");
-		//System.out.println(dataInfo);
-		//JSONObject json = new JSONObject();
-		//json.put("year","2023");
+		JSONObject jsonObject = new JSONObject();
 
 		final String accessKeyId = "LTAI5tMwtPCL85iXbUtjLTxD";
 		final String accessKeySecret = "WiUW5ag7HhQZPNoMAoQSC5LuxD2kLw";
 		final String appKey = "IxV21DxuzHuc8Oe4";
-		//  String fileUrl = FileUtils.getSysLocalFileUrl()+"/voiceInfo/123456.wav";
 
+		String fileName = "voiceInfo/" + UUID.randomUUID() + ".wav";
+		String localfileUrl = FileUtils.getSysLocalFileUrl() + fileName;
+		File localFile = new File(localfileUrl);
+		FileUtil.toFile(file, localFile);
+
+		String fileLink = "http://fileinfo.hczcxx.cn/" + fileName;
 
-		///String fileLink = "http://fileinfo.hczcxx.cn/voiceInfo/c574b9f3-f4fe-43db-abeb-5c5f24a15eb4.wav";
-		String fileLink = data.getLink();
 		FileTransJavaDemo demo = new FileTransJavaDemo(accessKeyId, accessKeySecret);
 		// 第一步:提交录音文件识别请求,获取任务ID用于后续的识别结果轮询。
 		String taskId = demo.submitFileTransRequest(appKey, fileLink);
@@ -2127,6 +2111,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		} else {
 			System.out.println("录音文件识别请求失败!");
 		}
+
 		// 第二步:根据任务ID轮询识别结果。
 		String result = demo.getFileTransResult(taskId);
 		if (result != null) {
@@ -2135,12 +2120,137 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			JSONArray word = dataInfo.getJSONArray("Words");
 			JSONArray sentences = dataInfo.getJSONArray("Sentences");
 
+			String sayInfo = sentences.getJSONObject(0).getString("Text");
+			if (sayInfo.indexOf("查询") >= 0 || sayInfo.indexOf("搜索") >= 0 || sayInfo.indexOf("检索") >= 0) {
+				int num1 = sayInfo.lastIndexOf("查询") + 2;
+				int num2 = sayInfo.lastIndexOf("搜索") + 2;
+				int num3 = sayInfo.lastIndexOf("检索") + 2;
+				int max = num1 > num2 ? num1 : num2;         //先求出前两个数中的最大值
+				max = max > num3 ? max : num3;          //将前一轮比较出的最大值与num3比较
+
+				int min = sayInfo.length();
+				if (sayInfo.indexOf("的档案") >= 0) {
+
+					min = sayInfo.indexOf("的档案");
+				} else if (sayInfo.indexOf("的数据") >= 0) {
+
+					min = sayInfo.indexOf("的数据");
+
+				} else if (sayInfo.indexOf("的文件") >= 0) {
+
+					min = sayInfo.indexOf("的文件");
+				}
+
+				if (max <= min) {
+					sayInfo = sayInfo.substring(max, min);
+				}
+
+				jsonObject.put("queryValue", sayInfo);
+				jsonObject.put("searchWord", sayInfo);
+			} else {
+				// 将中文 数字 转化为 阿拉伯 数字
+				if (sayInfo.indexOf("年") >= 0 || sayInfo.indexOf("月") >= 0) {
+					sayInfo = sayInfo.replaceAll("零", "0");
+					sayInfo = sayInfo.replaceAll("一", "1");
+					sayInfo = sayInfo.replaceAll("二", "2");
+					sayInfo = sayInfo.replaceAll("三", "3");
+					sayInfo = sayInfo.replaceAll("四", "4");
+					sayInfo = sayInfo.replaceAll("五", "5");
+					sayInfo = sayInfo.replaceAll("六", "6");
+					sayInfo = sayInfo.replaceAll("七", "7");
+					sayInfo = sayInfo.replaceAll("八", "8");
+					sayInfo = sayInfo.replaceAll("九", "9");
+				}
+				jsonObject.put("searchWord", sayInfo);
+				Map<String, String> keyInfo = new HashMap<>();
+				//类别
+				keyInfo.put("普通", "carrierType-1");
+				keyInfo.put("竣工图", "carrierType-2");
+				keyInfo.put("计量", "carrierType-3");
+				keyInfo.put("质检", "carrierType-4");
+				keyInfo.put("声像", "carrierType-5");
+				keyInfo.put("隐蔽", "carrierType-6");
+				keyInfo.put("原材试验", "carrierType-7");
+				keyInfo.put("管理文件", "carrierType-8");
+				keyInfo.put("变更令", "carrierType-9");
+
+				//年度
+				for (int i = 2016; i <= 2036; i++) {
+					keyInfo.put(i + "年", "year-" + i);
+				}
+
+				//月
+				for (int i = 1; i <= 12; i++) {
+					keyInfo.put(i + "月", "month-" + i);
+				}
+
+				//期限 永久 30年 10年
+				keyInfo.put("永久", "storageTime-3");
+				keyInfo.put("30年", "storageTime-2");
+				keyInfo.put("10年", "storageTime-1");
+
+				//密级有
+				keyInfo.put("机密", "secretLevel-1");
+				keyInfo.put("绝密", "secretLevel-2");
+				keyInfo.put("秘密", "secretLevel-3");
+				keyInfo.put("公开", "secretLevel-4");
+
+				for (String keyd : keyInfo.keySet()) {
+					if (sayInfo.contains(keyd)) {
+						String keyWord = keyInfo.get(keyd);
+						String keys[] = keyWord.split("-");
+						if (jsonObject.containsKey(keys[0])) {
+							String newVal = jsonObject.getString(keys[0]) + "," + keys[1];
+							jsonObject.put(keys[0], newVal);
+						} else {
+							jsonObject.put(keys[0], keys[1]);
+						}
+					}
+				}
+			}
 		} else {
-			System.out.println("录音文件识别结果查询失败!");
+			jsonObject.put("searchWord", "录音文件识别结果查询失败");
 		}
 
-		return R.data(json);
-	}
+		if (localFile.exists()) {
+			localFile.delete();
+		}
 
+		// 最后处理方案
+		//永久
+		if (!jsonObject.containsKey("carrierType")) {
+			jsonObject.put("carrierType", "");
+		}
+		//年度
+		if (!jsonObject.containsKey("year")) {
+			jsonObject.put("year", "");
+		}
+		//月
+		if (!jsonObject.containsKey("month")) {
+			jsonObject.put("month", "");
+		}
+		//期限 永久
+		if (!jsonObject.containsKey("storageTime")) {
+			jsonObject.put("storageTime", "");
+		}
+		//密级有
+		if (!jsonObject.containsKey("secretLevel")) {
+			jsonObject.put("secretLevel", "");
+		}
+		// 文本框
+		//密级有
+		if (!jsonObject.containsKey("queryValue")) {
+			jsonObject.put("queryValue", "");
+		}
+		//节点
+		if (!jsonObject.containsKey("nodeIds")) {
+			jsonObject.put("nodeIds", "");
+		}
 
+		//语音文字
+		if (!jsonObject.containsKey("searchWord")) {
+			jsonObject.put("searchWord", "");
+		}
+		return R.data(jsonObject);
+	}
 }

+ 91 - 22
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileTransJavaDemo.java

@@ -8,7 +8,11 @@ import com.aliyuncs.IAcsClient;
 import com.aliyuncs.exceptions.ClientException;
 import com.aliyuncs.http.MethodType;
 import com.aliyuncs.profile.DefaultProfile;
-import org.springblade.common.utils.CommonUtil;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 public class FileTransJavaDemo {
     // 地域ID,常量,固定值。
@@ -155,30 +159,95 @@ public class FileTransJavaDemo {
         return result;
     }
 
-    /*public static void main(String args[]) throws Exception {
+    public static void main11(String args[]) {
 
-        final String accessKeyId = "LTAI5tMwtPCL85iXbUtjLTxD";
-        final String accessKeySecret = "WiUW5ag7HhQZPNoMAoQSC5LuxD2kLw";
-        final String appKey = "IxV21DxuzHuc8Oe4";
-        //  String fileUrl = FileUtils.getSysLocalFileUrl()+"/voiceInfo/123456.wav";
+        String sayInfo = "搜索重庆渝北的档案。";
+        JSONObject jsonObject = new JSONObject();
+        //查询、搜索、检索、查看
+        if (sayInfo.indexOf("查询") >= 0 || sayInfo.indexOf("搜索") >= 0 || sayInfo.indexOf("检索") >= 0) {
+            System.out.println("123");
+            int num1 = sayInfo.lastIndexOf("查询") + 2;
+            int num2 = sayInfo.lastIndexOf("搜索") + 2;
+            int num3 = sayInfo.lastIndexOf("检索") + 2;
+            int max = num1 > num2 ? num1 : num2;         //先求出前两个数中的最大值
+            max = max > num3 ? max : num3;          //将前一轮比较出的最大值与num3比较
 
+            int min = sayInfo.length();
+            if (sayInfo.indexOf("的档案") >= 0) {
+                min = sayInfo.indexOf("的档案");
+            } else if (sayInfo.indexOf("的数据") >= 0) {
+                min = sayInfo.indexOf("的数据");
+            } else if (sayInfo.indexOf("的文件") >= 0) {
+                min = sayInfo.indexOf("的文件");
+            }
+
+            if (max <= min) {
+                sayInfo = sayInfo.substring(max, min);
+            }
+            System.out.println(sayInfo);
 
-        String fileLink = "http://fileinfo.hczcxx.cn/voiceInfo/录音 (1).wav";
-        FileTransJavaDemo demo = new FileTransJavaDemo(accessKeyId, accessKeySecret);
-        // 第一步:提交录音文件识别请求,获取任务ID用于后续的识别结果轮询。
-        String taskId = demo.submitFileTransRequest(appKey, fileLink);
-        if (taskId != null) {
-            System.out.println("录音文件识别请求成功,task_id: " + taskId);
-        } else {
-            System.out.println("录音文件识别请求失败!");
-            return;
-        }
-        // 第二步:根据任务ID轮询识别结果。
-        String result = demo.getFileTransResult(taskId);
-        if (result != null) {
-            System.out.println("录音文件识别结果查询成功:" + result);
         } else {
-            System.out.println("录音文件识别结果查询失败!");
+            if (sayInfo.indexOf("年") >= 0 || sayInfo.indexOf("月") >= 0) {
+                sayInfo = sayInfo.replaceAll("零", "0");
+                sayInfo = sayInfo.replaceAll("一", "1");
+                sayInfo = sayInfo.replaceAll("二", "2");
+                sayInfo = sayInfo.replaceAll("三", "3");
+                sayInfo = sayInfo.replaceAll("四", "4");
+                sayInfo = sayInfo.replaceAll("五", "5");
+                sayInfo = sayInfo.replaceAll("六", "6");
+                sayInfo = sayInfo.replaceAll("七", "7");
+                sayInfo = sayInfo.replaceAll("八", "8");
+                sayInfo = sayInfo.replaceAll("九", "9");
+                sayInfo = sayInfo.replaceAll("十年", "10年");
+                sayInfo = sayInfo.replaceAll("三十年", "30年");
+            }
+
+            Map<String, String> keyInfo = new HashMap<>();
+            //类别
+            keyInfo.put("普通", "carrierType-1");
+            keyInfo.put("竣工图", "carrierType-2");
+            keyInfo.put("计量", "carrierType-3");
+            keyInfo.put("质检", "carrierType-4");
+            keyInfo.put("声像", "carrierType-5");
+            keyInfo.put("隐蔽", "carrierType-6");
+            keyInfo.put("原材试验", "carrierType-7");
+            keyInfo.put("管理文件", "carrierType-8");
+            keyInfo.put("变更令", "carrierType-9");
+
+            //年度
+            for (int i = 2016; i <= 2036; i++) {
+                keyInfo.put(i + "年", "year-" + i);
+            }
+
+            //月
+            for (int i = 1; i <= 12; i++) {
+                keyInfo.put(i + "月", "month-" + i);
+            }
+
+            //期限 永久
+            keyInfo.put("永久", "storageTime-3");
+            keyInfo.put("30年", "storageTime-2");
+            keyInfo.put("10年", "storageTime-1");
+
+            //密级有
+            keyInfo.put("机密", "secretLevel-1");
+            keyInfo.put("绝密", "carrierType-2");
+            keyInfo.put("秘密", "carrierType-3");
+            keyInfo.put("公开", "carrierType-4");
+
+            for (String keyd : keyInfo.keySet()) {
+                if (sayInfo.contains(keyd)) {
+                    String keyWord = keyInfo.get(keyd);
+                    String keys[] = keyWord.split("-");
+                    if (jsonObject.containsKey(keys[0])) {
+                        String newVal = jsonObject.getString(keys[0]) + "," + keys[1];
+                        jsonObject.put(keys[0], newVal);
+                    } else {
+                        jsonObject.put(keys[0], keys[1]);
+                    }
+                }
+            }
         }
-    }*/
+        System.out.println(jsonObject);
+    }
 }

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java

@@ -715,7 +715,7 @@ public class FileUtils {
         if (SystemUtils.isMacOs()) {
             file_path = "/Users/hongchuangyanfa/Desktop/";
         } else if (SystemUtils.isWindows()) {
-            file_path = "C://upload";
+            file_path = "C://upload//";
         }
         return file_path;
     }

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -36,7 +36,7 @@
         <result column="sort" property="sort"/>
         <result column="pdf_trial_url" property="pdfTrialUrl"/>
         <result column="pdf_trial_url_position" property="pdfTrialUrlPosition"/>
-        <result column="business_time" property="BusinessTime"/>
+       <result column="business_time" property="businessTime"/>
         <result column="e_visa_pdf_page" property="eVisaPdfPage"/>
         <result column="e_visa_pdf_size" property="eVisaPdfSize"/>
     </resultMap>

+ 0 - 1
blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java

@@ -61,7 +61,6 @@ import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
 @AllArgsConstructor
 @RequestMapping("/dept")
 @Api(value = "部门", tags = "部门")
-@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 public class DeptController extends BladeController {
 
     private final IDeptService deptService;

+ 2 - 0
blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java

@@ -317,8 +317,10 @@ public class MenuController extends BladeController {
 
         //接口
         vo.setApiScope(menuService.apiScopeTreeKeys(roleIds));
+
         // 内控系统
         vo.setHacMenu(menuService.apiScopeTreeKeys(roleIds));
+
         //征拆系统
         vo.setLarMenu(menuService.apiScopeTreeKeys(roleIds));
 

+ 0 - 1
blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java

@@ -72,7 +72,6 @@ public class TenantController extends BladeController {
     @GetMapping("/detail")
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "详情", notes = "传入tenant")
-    @PreAuth(RoleConstant.HAS_ROLE_ADMIN)
     public R<Tenant> detail(Tenant tenant) {
         Tenant detail = tenantService.getOne(Condition.getQueryWrapper(tenant));
         return R.data(detail);

+ 1 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.java

@@ -83,4 +83,5 @@ public interface RoleMapper extends BaseMapper<Role> {
 
     List<RoleTypeVO> getRoleInfoByParentId(String ParentId);
 
+    List<Role> getRoleDeptInfoByParentId(String ParentId);
 }

+ 10 - 3
blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml

@@ -77,13 +77,12 @@
         SELECT
         role_alias
         FROM
-        blade_role
+        c_role_dept_info
         WHERE
         id IN
         <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
             #{ids}
         </foreach>
-        and is_deleted = 0
     </select>
 
     <select id="selectRoleAndTableOwnerListByRoleId" resultType="org.springblade.manager.entity.WbsTableOwnerRole">
@@ -101,7 +100,15 @@
     </select>
 
     <select id="getRoleInfoByParentId" resultMap="RoleTypeVOMap">
-        select id,id as `value`,role_name as label from blade_role where is_deleted = 0 and parent_id=#{ParentId}
+        select id, id as `value`, role_name as label
+        from blade_role
+        where is_deleted = 0
+          and parent_id = #{ParentId}
     </select>
 
+    <select id="getRoleDeptInfoByParentId" resultMap="roleResultMap">
+        select *
+        from c_role_dept_info
+        where parent_id = #{ParentId}
+    </select>
 </mapper>

+ 139 - 111
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java

@@ -107,59 +107,75 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
 
         // 组装配置-后台
         List<RoleMenu> roleMenus = new ArrayList<>();
-        roleIds.forEach(roleId -> menuIds.forEach(menuId -> {
-            RoleMenu roleMenu = new RoleMenu();
-            roleMenu.setRoleId(roleId);
-            roleMenu.setMenuId(Long.valueOf(menuId.split("---")[0]));
-            roleMenu.setStatus(menuId.split("---")[1]);
-            roleMenus.add(roleMenu);
-        }));
-
+        if (menuIds != null && menuIds.size() >= 1) {
+            roleIds.forEach(roleId -> menuIds.forEach(menuId -> {
+                RoleMenu roleMenu = new RoleMenu();
+                roleMenu.setRoleId(roleId);
+                roleMenu.setMenuId(Long.valueOf(menuId.split("---")[0]));
+                roleMenu.setStatus(menuId.split("---")[1]);
+                roleMenus.add(roleMenu);
+            }));
+        }
         // 组装配置-客户端
-        roleIds.forEach(roleId -> menuClientIds.forEach(menuIdC -> {
-            RoleMenu roleMenu = new RoleMenu();
-            roleMenu.setRoleId(roleId);
-            roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
-            roleMenu.setStatus(menuIdC.split("---")[1]);
-            roleMenus.add(roleMenu);
-        }));
-
+        if (menuClientIds != null && menuClientIds.size() >= 1) {
+            roleIds.forEach(roleId -> menuClientIds.forEach(menuIdC -> {
+                RoleMenu roleMenu = new RoleMenu();
+                roleMenu.setRoleId(roleId);
+                roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
+                roleMenu.setStatus(menuIdC.split("---")[1]);
+                roleMenus.add(roleMenu);
+            }));
+        }
         // 组装配置-档案
-        roleIds.forEach(roleId -> menuArchivesIds.forEach(menuIdC -> {
-            RoleMenu roleMenu = new RoleMenu();
-            roleMenu.setRoleId(roleId);
-            roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
-            roleMenu.setStatus(menuIdC.split("---")[1]);
-            roleMenus.add(roleMenu);
-        }));
-
+        if (menuArchivesIds != null && menuArchivesIds.size() >= 1) {
+            roleIds.forEach(roleId -> menuArchivesIds.forEach(menuIdC -> {
+                RoleMenu roleMenu = new RoleMenu();
+                roleMenu.setRoleId(roleId);
+                roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
+                roleMenu.setStatus(menuIdC.split("---")[1]);
+                roleMenus.add(roleMenu);
+            }));
+        }
         // 组装配置-内控
-        roleIds.forEach(roleId -> menuHacIds.forEach(menuIdC -> {
-            RoleMenu roleMenu = new RoleMenu();
-            roleMenu.setRoleId(roleId);
-            roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
-            roleMenu.setStatus(menuIdC.split("---")[1]);
-            roleMenus.add(roleMenu);
-        }));
-
+        if (menuHacIds != null && menuHacIds.size() >= 1) {
+            roleIds.forEach(roleId -> menuHacIds.forEach(menuIdC -> {
+                RoleMenu roleMenu = new RoleMenu();
+                roleMenu.setRoleId(roleId);
+                roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
+                roleMenu.setStatus(menuIdC.split("---")[1]);
+                roleMenus.add(roleMenu);
+            }));
+        }
         // 组装配置-征拆
-        roleIds.forEach(roleId -> menuLarIds.forEach(menuIdC -> {
-            RoleMenu roleMenu = new RoleMenu();
-            roleMenu.setRoleId(roleId);
-            roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
-            roleMenu.setStatus(menuIdC.split("---")[1]);
-            roleMenus.add(roleMenu);
-        }));
-
+        if (menuLarIds != null && menuLarIds.size() >= 1) {
+            roleIds.forEach(roleId -> menuLarIds.forEach(menuIdC -> {
+                RoleMenu roleMenu = new RoleMenu();
+                roleMenu.setRoleId(roleId);
+                roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
+                roleMenu.setStatus(menuIdC.split("---")[1]);
+                roleMenus.add(roleMenu);
+            }));
+        }
         // 新增配置
-        roleMenuService.saveBatch(roleMenus);
-
+        boolean b = roleMenuService.saveBatch(roleMenus);
+        System.out.println("ddd");
         // 递归设置下属角色菜单集合
-        recursionRoleMenu(roleIds, menuIds);
-        recursionRoleMenu(roleIds, menuClientIds);
-        recursionRoleMenu(roleIds, menuArchivesIds);
-        recursionRoleMenu(roleIds, menuHacIds); //内控
-        recursionRoleMenu(roleIds, menuLarIds); //征拆
+        if (menuIds != null && menuIds.size() >= 1) {
+            recursionRoleMenu(roleIds, menuIds);
+        }
+        if (menuClientIds != null && menuClientIds.size() >= 1) {
+            recursionRoleMenu(roleIds, menuClientIds);
+        }
+        if (menuArchivesIds != null && menuArchivesIds.size() >= 1) {
+            recursionRoleMenu(roleIds, menuArchivesIds);
+        }
+        if (menuHacIds != null && menuHacIds.size() >= 1) {
+            recursionRoleMenu(roleIds, menuHacIds); //内控
+        }
+        if (menuLarIds != null && menuLarIds.size() >= 1) {
+            recursionRoleMenu(roleIds, menuLarIds); //征拆
+        }
+
         return true;
     }
 
@@ -171,50 +187,58 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
             String id = split[0]; //id
             menuIds.add(Long.valueOf(id));
         }
-        roleIds.forEach(roleId -> baseMapper.selectList(Wrappers.<Role>query().lambda().eq(Role::getParentId, roleId)).forEach(role -> {
-            List<RoleMenu> roleMenuList = roleMenuService.list(Wrappers.<RoleMenu>query().lambda().eq(RoleMenu::getRoleId, role.getId()));
-            // 子节点过滤出父节点删除的菜单集合
-            List<Long> collectRoleMenuIds = roleMenuList.stream().map(RoleMenu::getMenuId).filter(menuId -> !menuIds.contains(menuId)).collect(Collectors.toList());
-            if (collectRoleMenuIds.size() > 0) {
-                // 删除子节点权限外的菜单集合
-                roleMenuService.remove(Wrappers.<RoleMenu>update().lambda().eq(RoleMenu::getRoleId, role.getId()).in(RoleMenu::getMenuId, collectRoleMenuIds));
-                // 递归设置下属角色菜单集合
-                recursionRoleMenu(Collections.singletonList(role.getId()), menuIdsAll);
-            }
-        }));
+        //
+        for (Long roleId : roleIds) {
+            List<Role> roleList = roleMapper.getRoleDeptInfoByParentId(roleId + "");
+            roleList.forEach(role -> {
+                List<RoleMenu> roleMenuList = roleMenuService.list(Wrappers.<RoleMenu>query().lambda().eq(RoleMenu::getRoleId, role.getId()));
+                // 子节点过滤出父节点删除的菜单集合
+                List<Long> collectRoleMenuIds = roleMenuList.stream().map(RoleMenu::getMenuId).filter(menuId -> !menuIds.contains(menuId)).collect(Collectors.toList());
+                if (collectRoleMenuIds.size() > 0) {
+                    // 删除子节点权限外的菜单集合
+                    roleMenuService.remove(Wrappers.<RoleMenu>update().lambda().eq(RoleMenu::getRoleId, role.getId()).in(RoleMenu::getMenuId, collectRoleMenuIds));
+                    // 递归设置下属角色菜单集合
+                    recursionRoleMenu(Collections.singletonList(role.getId()), menuIdsAll);
+                }
+            });
+        }
     }
 
     private boolean grantDataScope(List<Long> roleIds, List<Long> dataScopeIds) {
         // 删除角色配置的数据权限集合
-        roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, DATA_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
-        // 组装配置
-        List<RoleScope> roleDataScopes = new ArrayList<>();
-        roleIds.forEach(roleId -> dataScopeIds.forEach(scopeId -> {
-            RoleScope roleScope = new RoleScope();
-            roleScope.setScopeCategory(DATA_SCOPE_CATEGORY);
-            roleScope.setRoleId(roleId);
-            roleScope.setScopeId(scopeId);
-            roleDataScopes.add(roleScope);
-        }));
-        // 新增配置
-        roleScopeService.saveBatch(roleDataScopes);
+        if (roleIds != null && roleIds.size() >= 1 && dataScopeIds != null && dataScopeIds.size() >= 1) {
+            roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, DATA_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
+            // 组装配置
+            List<RoleScope> roleDataScopes = new ArrayList<>();
+            roleIds.forEach(roleId -> dataScopeIds.forEach(scopeId -> {
+                RoleScope roleScope = new RoleScope();
+                roleScope.setScopeCategory(DATA_SCOPE_CATEGORY);
+                roleScope.setRoleId(roleId);
+                roleScope.setScopeId(scopeId);
+                roleDataScopes.add(roleScope);
+            }));
+            // 新增配置
+            roleScopeService.saveBatch(roleDataScopes);
+        }
         return true;
     }
 
     private boolean grantApiScope(List<Long> roleIds, List<Long> apiScopeIds) {
-        // 删除角色配置的接口权限集合
-        roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, API_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
-        // 组装配置
-        List<RoleScope> roleApiScopes = new ArrayList<>();
-        roleIds.forEach(roleId -> apiScopeIds.forEach(scopeId -> {
-            RoleScope roleScope = new RoleScope();
-            roleScope.setScopeCategory(API_SCOPE_CATEGORY);
-            roleScope.setScopeId(scopeId);
-            roleScope.setRoleId(roleId);
-            roleApiScopes.add(roleScope);
-        }));
-        // 新增配置
-        roleScopeService.saveBatch(roleApiScopes);
+        if (roleIds != null && roleIds.size() >= 1 && apiScopeIds != null && apiScopeIds.size() >= 1) {
+            // 删除角色配置的接口权限集合
+            roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, API_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
+            // 组装配置
+            List<RoleScope> roleApiScopes = new ArrayList<>();
+            roleIds.forEach(roleId -> apiScopeIds.forEach(scopeId -> {
+                RoleScope roleScope = new RoleScope();
+                roleScope.setScopeCategory(API_SCOPE_CATEGORY);
+                roleScope.setScopeId(scopeId);
+                roleScope.setRoleId(roleId);
+                roleApiScopes.add(roleScope);
+            }));
+            // 新增配置
+            roleScopeService.saveBatch(roleApiScopes);
+        }
         return true;
     }
 
@@ -317,46 +341,50 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
 
     @Transactional(rollbackFor = Exception.class)
     public Boolean submitRoleAndTableOwner(List<Long> roleIds, List<Long> tableOwners) {
-        for (Long role : roleIds) {
-            List<WbsTableOwnerRole> list = baseMapper.selectRoleAndTableOwnerListByRoleId(role);
+        if (tableOwners != null && tableOwners.size() >= 1) {
+            for (Long role : roleIds) {
+                List<WbsTableOwnerRole> list = baseMapper.selectRoleAndTableOwnerListByRoleId(role);
 
-            List<String> tableOwnerValuesIn = list.stream().map(WbsTableOwnerRole::getTableOwnerNumber).collect(Collectors.toList());
+                List<String> tableOwnerValuesIn = list.stream().map(WbsTableOwnerRole::getTableOwnerNumber).collect(Collectors.toList());
 
-            List<String> tableOwnerValuesOut = tableOwners.stream().map(String::valueOf).collect(Collectors.toList());
+                List<String> tableOwnerValuesOut = tableOwners.stream().map(String::valueOf).collect(Collectors.toList());
 
-            List<String> diffRent = getDiffRent(tableOwnerValuesOut, tableOwnerValuesIn);
+                List<String> diffRent = getDiffRent(tableOwnerValuesOut, tableOwnerValuesIn);
 
-            List<String> ids = new ArrayList<>();
+                List<String> ids = new ArrayList<>();
 
-            //获取ids
-            for (WbsTableOwnerRole wbsTableOwnerRole : list) {
-                for (String diff : diffRent) {
-                    if (wbsTableOwnerRole.getTableOwnerNumber().equals(diff)) {
-                        ids.add(String.valueOf(wbsTableOwnerRole.getId()));
+                //获取ids
+                for (WbsTableOwnerRole wbsTableOwnerRole : list) {
+                    for (String diff : diffRent) {
+                        if (wbsTableOwnerRole.getTableOwnerNumber().equals(diff)) {
+                            ids.add(String.valueOf(wbsTableOwnerRole.getId()));
+                        }
                     }
                 }
-            }
 
-            if (diffRent.size() == 0) {
-                return true;
-            } else {
-                if (tableOwnerValuesOut.size() > tableOwnerValuesIn.size()) {
-                    //新增
-                    for (String tableOwner : diffRent) {
-                        Long id = SnowFlakeUtil.getId();
-                        baseMapper.insertRoleAndTableOwner(id, role, tableOwner);
-                    }
+                if (diffRent.size() == 0) {
                     return true;
-
-                } else if (tableOwnerValuesOut.size() < tableOwnerValuesIn.size()) {
-                    //删除
-                    Integer row = baseMapper.deleteRoleAndTableOwner(ids);
-                    return row > 0;
+                } else {
+                    if (tableOwnerValuesOut.size() > tableOwnerValuesIn.size()) {
+                        //新增
+                        for (String tableOwner : diffRent) {
+                            Long id = SnowFlakeUtil.getId();
+                            baseMapper.insertRoleAndTableOwner(id, role, tableOwner);
+                        }
+                        return true;
+
+                    } else if (tableOwnerValuesOut.size() < tableOwnerValuesIn.size()) {
+                        //删除
+                        Integer row = baseMapper.deleteRoleAndTableOwner(ids);
+                        return row > 0;
+                    }
                 }
+                return false;
             }
-            return false;
+            return true;
+        } else {
+            return true;
         }
-        return false;
     }
 
     private static List<String> getDiffRent(List<String> list1, List<String> list2) {

+ 2 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -190,6 +190,7 @@ public class UserController {
             }
             user.setPostId(postId);
             user.setDeptId(deptId);
+            user.setRoleId(postId);
             user.setIsLeader(isLaderpostId);
         }
 
@@ -242,6 +243,7 @@ public class UserController {
             user.setIsLeader(isLaderpostId);
             user.setPostId(postId);
             user.setDeptId(deptId);
+            user.setRoleId(postId);
             user.setDeptInfo(JSONArray.toJSONString(deptList));
         }
         return R.status(userService.updateUser(user));

+ 1 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -337,6 +337,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
                 userInfo.setRoles(roleAlias);
             }
         }
+
         // 根据每个用户平台,建立对应的detail表,通过查询将结果集写入到detail字段
         Kv detail = Kv.create().set("type", userEnum.getName());
         if (userEnum == UserEnum.WEB) {