Эх сурвалжийг харах

Merge branch 'master' of http://121.41.40.202:3000/zhuwei/bladex

huangtf 1 жил өмнө
parent
commit
db886b2c60

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -2117,7 +2117,7 @@ public class ExcelTabController extends BladeController {
     }
 
 
-    @PostMapping("/save_buss_data111")
+    @PostMapping("/save_buss_data")
     @ApiOperationSupport(order = 13)
     @ApiOperation(value = "填报页面数据保存", notes = "填报页面数据保存")
     public R saveBussData2(@Valid @RequestBody JSONObject dataInfo) throws Exception {
@@ -3856,7 +3856,7 @@ public class ExcelTabController extends BladeController {
      * @return
      * @throws Exception
      */
-    @PostMapping("/save_buss_data")
+    @PostMapping("/save_buss_data2222")
     @ApiOperationSupport(order = 13)
     @ApiOperation(value = "填报页面数据保存", notes = "填报页面数据保存")
     public R saveBussData(@Valid @RequestBody JSONObject dataInfo) throws Exception {

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -458,6 +458,7 @@
                 #{roleTableOwnerSets}
             </foreach>
         </if>
+        ORDER BY sort,full_name,create_time
     </select>
 
     <select id="selectRoleInfo" resultType="org.springblade.manager.entity.SaveUserInfoByProject">

+ 9 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -1098,6 +1098,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
                     String sqlInfo = "";
                     LinkedHashMap<String, String> dataMap2 = tableInfo.getDataMap();
+                    /*检查发现有p_key_id缺失的情况,导致表单数据丢失,所以强制覆盖*/
+                    dataMap2.put("p_key_id",tableInfo.getPkeyId());
                     //统计保存的字段
 //                    saveData.append(wbsTreeContract.getNodeName()+"<br>");
 //                    for (String s : dataMap2.keySet()) {
@@ -1262,17 +1264,17 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         }
 
         //表单是否存储在
-    /*    String tabName = wbsTreeContract.getInitTableName();
+        String tabName = wbsTreeContract.getInitTableName();
         String isExitSql = " select * from information_schema.TABLES where TABLE_NAME='" + tabName + "'";
         List<Map<String, Object>> tabList = jdbcTemplate.queryForList(isExitSql);
         if (tabList == null || tabList.size() <= 0) {
             return reData;
         }
 
-        String querySql = "select * from " + wbsTreeContract.getInitTableName() + " where p_key_id=" + pkeyId;*/
+        String querySql = "select * from " + wbsTreeContract.getInitTableName() + " where p_key_id=" + pkeyId;
 
 
-        String querySql = "select * from table_data_info where p_key_id=" + pkeyId;
+        //String querySql = "select * from table_data_info where p_key_id=" + pkeyId;
         List<Map<String, Object>> dataIn = jdbcTemplate.queryForList(querySql);
 
         // 匹配关联
@@ -1404,13 +1406,13 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             e.printStackTrace();
         }
 
-        if (dataIn != null && dataIn.size() >= 1) {
+       /* if (dataIn != null && dataIn.size() >= 1) {
             for (Map<String, Object>  data : dataIn) {
                 reData.put(data.get("tab_key")+"",data.get("key_val"));
             }
-        }
+        }*/
 
-        /*if (dataIn != null && dataIn.size() >= 1) {
+        if (dataIn != null && dataIn.size() >= 1) {
             Map<String, Object> mysqlData = dataIn.get(0);
             for (String key : mysqlData.keySet()) {
                 String tabVal = mysqlData.get(key) + "";
@@ -1475,7 +1477,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     }
                 }
             }
-        }*/
+        }
 
         // 获取默认值
         QueryWrapper<TextdictInfo> queryWrapper = new QueryWrapper<>();

+ 17 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -273,7 +273,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     Map<String, Measurement> itemsMap = new HashMap<>();
                     tec.formDataMap.values().stream().filter(FormData::getIsCurrentNodeElement).forEach(e -> {
                         String eName = e.getEName();
-                        if (eName.contains("实测") && !eName.contains("平均") && !eName.contains("合格率") && !eName.contains("判")) {
+                        /*eName.contains("实测") && !eName.contains("平均") && !eName.contains("合格率") && !eName.contains("判")*/
+                        if (eName.contains("实测")&& (!eName.contains("平均值") ||!eName.contains("代表值"))&& !eName.contains("合格率") && !eName.contains("判")) {
                             String point = FormulaUtils.parseItemName(eName);
                             /*评定匹配检验单的元素用相似匹配*/
                             Measurement measurement = itemsMap.computeIfAbsent(point, k -> new Measurement(point));
@@ -512,7 +513,17 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             if(Func.isNotEmpty(missingList)){
                 /*2从当前节点的兄弟节点中查找匹配的元素*/
                 CurrentNode currentNode = this.tec.getCurrentNode();
-                List<Map<String,Object>> tableNamePkIdsMaps= this.jdbcTemplate.queryForList("select c.init_table_name tableName,c.p_key_id pkId,c.html_url url from (select b.id from m_wbs_tree_contract a join m_wbs_tree_contract b on (a.contract_id=b.contract_id and b.ancestors like CONCAT(a.ancestors,'%')) where a.p_key_id="+currentNode.getPkId()+" and b.is_deleted=0 and b.node_type=6 ORDER BY b.sort) k join m_wbs_tree_contract c on c.parent_id = k.id where  c.contract_id="+tec.getContractId()+" and c.is_deleted=0 ");
+                /*List<Map<String,Object>> tableNamePkIdsMaps= this.jdbcTemplate.queryForList("select c.init_table_name tableName,c.p_key_id pkId,c.html_url url from (select b.id from m_wbs_tree_contract a join m_wbs_tree_contract b on (a.contract_id=b.contract_id and b.ancestors like CONCAT(a.ancestors,'%')) where a.p_key_id="+currentNode.getPkId()+" and b.is_deleted=0 and b.node_type=6 ORDER BY b.sort) k join m_wbs_tree_contract c on c.parent_id = k.id where  c.contract_id="+tec.getContractId()+" and c.is_deleted=0 ");*/
+                WbsTreeContract parent = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,currentNode.getParentPkeyId()));
+                if(parent==null){
+                    return;
+                }
+                List<Map<String,Object>> tableNamePkIdsMaps= this.jdbcTemplate.queryForList(
+                        "select c.init_table_name tableName,c.p_key_id pkId,c.html_url url from" +
+                                " (select id from m_wbs_tree_contract where contract_id="+currentNode.getContractId()+" and is_deleted=0 and node_type=6 and tree_code like '"+parent.getTreeCode()+"%' ORDER BY sort) k" +
+                                " join m_wbs_tree_contract c on c.parent_id = k.id " +
+                                "where  c.contract_id="+currentNode.getContractId()+" and c.is_deleted=0 "
+                );
                 if(Func.isNotEmpty(tableNamePkIdsMaps)){
                    // removeList.clear();
                     missingList.forEach(miss->{
@@ -989,7 +1000,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                             List<FormData>  ele = new ArrayList<>();
                             relyList.forEach(rely->{
                                 FormData formData=  this.tec.getFormDataMap().get(rely);
-                                if(!formData.empty()){
+                                if(formData!=null&&!formData.empty()){
                                     ele.add(formData);
                                 }
                             });
@@ -2452,10 +2463,11 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 List<FormulaDataBlock> formulaDataBlocks = this.getSqlList("select a.* from m_formula_data_block a join (select parent_id from m_wbs_tree_contract where tree_code like '" + treeCode.getLast() + "%' and contract_id =" + wtcEva.getContractId() + " and major_data_type=2 and is_deleted=0 ORDER BY tree_code)b on a.sw_id=b.parent_id ", FormulaDataBlock.class);
                 if (formulaDataBlocks!=null&&formulaDataBlocks.size() > 0) {
                     /*获取分部工程名称*/
-                    WbsTreeContract node = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getId, wtcEva.getParentId()).eq(WbsTreeContract::getContractId,wtcEva.getContractId()));
+/*                    WbsTreeContract node = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getId, wtcEva.getParentId()).eq(WbsTreeContract::getContractId,wtcEva.getContractId()));
                     WbsTreePrivate wtp = this.wtpId(node.getPKeyId());
                     WbsTreePrivate publicWtp = this.getOriginWtp(wtp.getPKeyId());
-                    this.getWpMap(publicWtp.getId(),wtp.getPKeyId());
+                    List<WbsParam> list= this.getNodeWps(publicWtp.getId(),wtp.getPKeyId());*/
+
                     formulaDataBlocks.forEach(fdb -> {
                         List<ElementBlock> elementBlockList = JSON.parseArray(fdb.getVal(), ElementBlock.class);
                         elementBlockList.forEach(eb -> {

+ 1 - 54
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -1479,8 +1479,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
      * @param lowestNodeParentIds 最底层节点ParentIds
      * @param nodesAll            所有节点
      */
-    public void recursiveGetParentNodes
-    (List<WbsTreeContractLazyVO> result, List<Long> lowestNodeParentIds, List<WbsTreeContractLazyVO> nodesAll) {
+    public void recursiveGetParentNodes(List<WbsTreeContractLazyVO> result, List<Long> lowestNodeParentIds, List<WbsTreeContractLazyVO> nodesAll) {
         if (lowestNodeParentIds.isEmpty()) {
             return;
         }
@@ -1517,58 +1516,6 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         }
     }
 
-    /*public void recursiveGetParentNodes(List<WbsTreeContractLazyVO> result, List<Long> lowestNodeParentIds, List<WbsTreeContractLazyVO> nodesAll) {
-        if (lowestNodeParentIds.isEmpty()) {
-            return;
-        }
-
-        //父级Id与出现的次数Map
-        Map<Long, Long> parentIdGroup = lowestNodeParentIds.parallelStream()
-                .collect(Collectors.groupingByConcurrent(Function.identity(), Collectors.counting()));
-
-        Set<Long> keysWithValueOne = new HashSet<>(); //单次
-        Map<Long, Long> keysWithValueSome = new ConcurrentHashMap<>(); //多次
-
-        parentIdGroup.forEach((key, value) -> {
-            if (value == 1L) {
-                keysWithValueOne.add(key);
-            } else {
-                keysWithValueSome.put(key, value);
-            }
-        });
-
-        //批量查询单次节点
-        List<WbsTreeContractLazyVO> parentNodes = new ArrayList<>();
-        if (!keysWithValueOne.isEmpty()) {
-            parentNodes = nodesAll.parallelStream()
-                    .filter(f -> keysWithValueOne.contains(f.getId()))
-                    .collect(Collectors.toList());
-        }
-
-        //批量查询多次节点
-        List<WbsTreeContractLazyVO> multipleParentNodes = new ArrayList<>();
-        keysWithValueSome.forEach((key, count) -> {
-            List<WbsTreeContractLazyVO> nodes = nodesAll.parallelStream()
-                    .filter(f -> key.equals(f.getId()))
-                    .limit(1)  //限制只取一个
-                    .collect(Collectors.toList());
-            if (!nodes.isEmpty()) {
-                multipleParentNodes.addAll(Collections.nCopies(count.intValue(), nodes.get(0)));
-            }
-        });
-
-        //结果集
-        List<Long> collect = Stream.concat(parentNodes.stream(), multipleParentNodes.stream())
-                .map(WbsTreeContractLazyVO::getParentId)
-                .collect(Collectors.toList());
-
-        if (!collect.isEmpty()) {
-            result.addAll(parentNodes);
-            result.addAll(multipleParentNodes);
-            this.recursiveGetParentNodes(result, collect, nodesAll);
-        }
-    }*/
-
     @Override
     public boolean syncTabData(String pKeyId) throws Exception {
         WbsTreeContract node = baseMapper.selectOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, pKeyId));

+ 29 - 3
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java

@@ -31,6 +31,7 @@ import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.manager.entity.WbsTableOwnerRole;
 import org.springblade.manager.vo.WbsTableOwnerRoleVO;
 import org.springblade.system.dto.RoleDTO;
@@ -109,6 +110,21 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
         if (!AuthUtil.isAdministrator() && administratorCount > 0L) {
             throw new ServiceException("无权配置超管角色!");
         }
+
+        /*超级管理员角色,不能删除角色管理菜单(避免超管误删角色管理菜单,导致菜单消失不可查看)*/
+        if (roleIds.contains(1123598816738675201L)) {
+            /*角色管理菜单ids*/
+            String[] arrRoleMenu = {"1123598815738675308", "1123598815738675241", "1123598815738675242", "1123598815738675243", "1123598815738675244"};
+            long var = menuIds.stream()
+                    .map(menuId -> menuId.split("---")[0])
+                    .filter(id -> Arrays.asList(arrRoleMenu).contains(id))
+                    .count();
+
+            if (arrRoleMenu.length != var) {
+                throw new ServiceException("后管菜单权限【权限管理-角色管理】中的菜单无权进行更改,请重新配置!");
+            }
+        }
+
         // 防止越权配置管理员角色
         Long adminCount = baseMapper.selectCount(Wrappers.<Role>query().lambda().eq(Role::getRoleAlias, RoleConstant.ADMIN).in(Role::getId, roleIds));
         if (!AuthUtil.isAdmin() && adminCount > 0L) {
@@ -119,7 +135,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
 
         // 组装配置-后台
         List<RoleMenu> roleMenus = new ArrayList<>();
-        if (menuIds != null && menuIds.size() >= 1) {
+        if (menuIds.size() >= 1) {
             roleIds.forEach(roleId -> menuIds.forEach(menuId -> {
                 RoleMenu roleMenu = new RoleMenu();
                 roleMenu.setRoleId(roleId);
@@ -328,6 +344,12 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
         if (aLong > 0) {
             throw new ServiceException("角色名已存在,请重新输入");
         }
+        if (ObjectUtil.isNotEmpty(role.getId())) {
+            Role roleNow = baseMapper.selectById(role.getId());
+            if (roleNow != null && roleNow.getRoleName().equals("超级管理员") && roleNow.getRoleAlias().equals("administrator")) {
+                throw new ServiceException("没有权限,超级管理员信息无法更改!");
+            }
+        }
         return saveOrUpdate(role);
     }
 
@@ -356,8 +378,12 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
         if (cnt > 0L) {
             throw new ServiceException("请先删除子节点!");
         }
-        boolean b = removeByIds(Func.toLongList(ids));
-        return b;
+        List<Role> roles = baseMapper.selectList(Wrappers.<Role>query().lambda().select(Role::getRoleName, Role::getRoleAlias).in(Role::getId, Func.toLongList(ids)));
+        List<Role> collect = roles.stream().filter(f -> f.getRoleName().equals("超级管理员") && f.getRoleAlias().equals("administrator")).collect(Collectors.toList());
+        if (collect.size() > 0) {
+            throw new ServiceException("没有权限,超级管理员无法删除!");
+        }
+        return removeByIds(Func.toLongList(ids));
     }
 
     @Override