diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java index 7ae3dd7b..b2ac5cc6 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java @@ -226,7 +226,7 @@ public class DepositoryController { Integer depositoryRecordByDateByIn1 = depositoryRecordService.findApplicationInRecordByDate(days.get(i), days.get(i + 1), val); // 获取一段时间内的出库额度 Integer depositoryRecordByDateByOut1 = depositoryRecordService.findApplicationOutRecordByDate(days.get(i), days.get(i + 1), val); - Double warehouserCount1 = aDouble - depositoryRecordByDateByIn1 + depositoryRecordByDateByOut1; + Double warehouserCount1 = aDouble - depositoryRecordByDateByIn1 + depositoryRecordByDateByOut1; result.add(warehouserCount1); } Collections.reverse(result); @@ -379,7 +379,7 @@ public class DepositoryController { // 获取某个月某物料出库总额 // 测试 Double wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parmOut); - Double wareHouseCount1 = (double)productData.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1; + Double wareHouseCount1 = (double) productData.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1; productData.add(wareHouseCount1); } List result = new ArrayList<>(); @@ -956,12 +956,12 @@ public class DepositoryController { show_data.put(key.toString(), drCountbyDrName.clone()); } } else { - Future future = completionService.submit(new distributeTasks(depositoryAllNameAndId,type, 1, userByPort, yesterdayData, depositoryName)); + Future future = completionService.submit(new distributeTasks(depositoryAllNameAndId, type, 1, userByPort, yesterdayData, depositoryName)); futureList.add(future); taskNum += 1; } // 获取本月及之前月份各种类别入/出库总量 - Future future = completionService.submit(new distributeTasks(depositoryAllNameAndId,type, 3, userByPort, yesterdayData, depositoryName)); + Future future = completionService.submit(new distributeTasks(depositoryAllNameAndId, type, 3, userByPort, yesterdayData, depositoryName)); futureList.add(future); taskNum += 1; // 中国地图数据 @@ -971,7 +971,7 @@ public class DepositoryController { Map mapData = new HashMap<>(); if (!"0".equals(type)) { - Future future1 = completionService.submit(new distributeTasks(depositoryAllNameAndId,type, 4, userByPort, yesterdayData, depositoryName)); + Future future1 = completionService.submit(new distributeTasks(depositoryAllNameAndId, type, 4, userByPort, yesterdayData, depositoryName)); futureList.add(future1); taskNum += 1; } @@ -1004,14 +1004,14 @@ public class DepositoryController { if ("0".equals(type)) { // 如果是获取库存 - distributeTasks distributeTasks1 = new distributeTasks(depositoryAllNameAndId,type, 5, userByPort, yesterdayData, depositoryName); + distributeTasks distributeTasks1 = new distributeTasks(depositoryAllNameAndId, type, 5, userByPort, yesterdayData, depositoryName); distributeTasks1.setTodayInventory(todayInventory); distributeTasks1.setDepositoryService(depositoryService); distributeTasks1.setDepositoryRecordService(depositoryRecordService); - distributeTasks distributeTasks2 = new distributeTasks(depositoryAllNameAndId,type, 6, userByPort, yesterdayData, depositoryName); + distributeTasks distributeTasks2 = new distributeTasks(depositoryAllNameAndId, type, 6, userByPort, yesterdayData, depositoryName); distributeTasks2.setDepositoryService(depositoryService); distributeTasks2.setDepositoryRecordService(depositoryRecordService); - distributeTasks distributeTasks3 = new distributeTasks(depositoryAllNameAndId,type, 7, userByPort, yesterdayData, depositoryName); + distributeTasks distributeTasks3 = new distributeTasks(depositoryAllNameAndId, type, 7, userByPort, yesterdayData, depositoryName); distributeTasks3.setDepositoryService(depositoryService); distributeTasks3.setDepositoryRecordService(depositoryRecordService); Future future1 = completionService.submit(distributeTasks1); @@ -1062,7 +1062,7 @@ public class DepositoryController { return resMap; } - public Map getShowData(Map depositoryAllNameAndId,String type, UserByPort userByPort, Map yesterdayData, List depositoryName) { + public Map getShowData(Map depositoryAllNameAndId, String type, UserByPort userByPort, Map yesterdayData, List depositoryName) { // 获取遍历器 Iterator it = depositoryAllNameAndId.keySet().iterator(); // 仓库名称列表 @@ -1417,7 +1417,6 @@ public class DepositoryController { } - // 构造库位树 @GetMapping("/treeMenus_Place") public RestResponse InitTreeMenus_Place(@RequestParam(value = "depositoryId") Integer depositoryId) { @@ -1427,7 +1426,7 @@ public class DepositoryController { } @GetMapping("/treeMenusOnlyDepository") - public RestResponse treeMenusOnlyDepository(){ + public RestResponse treeMenusOnlyDepository() { List list = new ArrayList<>(); list = depositoryService.InitTreeMenusOnlyDepository(); return new RestResponse(list); @@ -1491,6 +1490,7 @@ public class DepositoryController { /** * 用于打印图片 + * * @param map * @param request * @param response @@ -1509,7 +1509,7 @@ public class DepositoryController { String name = depository.getDname() + "-" + place.getKingdeecode(); String qrCode = CreateQrCodeUtil.CreateBarCode128(qrCodeByDepository, name, 60, 200); try { - File file = ZipMultiFileUtil.base64ToFile(qrCode,name); + File file = ZipMultiFileUtil.base64ToFile(qrCode, name); qrCodeListForPlaces.add(file); } catch (Exception e) { e.printStackTrace(); @@ -1520,7 +1520,7 @@ public class DepositoryController { String name = depository.getDname(); String qrCode = CreateQrCodeUtil.CreateBarCode128(qrCodeByDepository, name, 60, 200); try { - File file = ZipMultiFileUtil.base64ToFile(qrCode,name); + File file = ZipMultiFileUtil.base64ToFile(qrCode, name); qrCodeListForPlaces.add(file); } catch (Exception e) { e.printStackTrace(); @@ -1531,31 +1531,44 @@ public class DepositoryController { /** * 用于设置仓库可见范围权限 - * @param map 存储数据 + * + * @param map 存储数据 * @param request 请求 * @return */ @PostMapping("/setWarehouseVisiblePermission") - public RestResponse setWarehouseVisiblePermission(@RequestBody Map map,HttpServletRequest request){ - if(map.containsKey("type")){ + public RestResponse setWarehouseVisiblePermission(@RequestBody Map map, HttpServletRequest request) { + if (map.containsKey("type")) { // 获取当前登录的用户 String token = request.getHeader("user-token"); if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); - map.put("userId",userToken.getId()); - // 添加时影响的行数 - Integer integer = roleService.addWarehouseVisiblePermission(map); + map.put("userId", userToken.getId()); // 需要添加的数量 Integer count = ObjectFormatUtil.toInteger(map.get("count")); - return CrudUtil.insertHandle(count,integer); - }else{ + // 操作时影响的行数 + Integer integer = 0; + if (count == 0) { + // 如果要删除 + } else { + // 如果不是删除 + integer = roleService.setWarehouseVisiblePermission(map); + } + return CrudUtil.insertHandle(count, integer); + } else { throw new MyException("缺少必要参数"); } } + @PostMapping("/findWarehouseVisiblePermission") + public RestResponse findWarehouseVisiblePermission(@RequestBody Map map){ + List list = roleService.findDepositoryIdForWarehouseVisiblePermissionByCondition(map); + return new RestResponse(list); + } + /** * 用于获取当前仓库的所有子类 * @@ -1596,6 +1609,7 @@ public class DepositoryController { return false; } + // 用于分发任务 @Data class distributeTasks implements Callable { @@ -1610,7 +1624,7 @@ public class DepositoryController { Map todayInventory; // 当前仓库的额度 Map depositoryAllNameAndId; // 仓库名称与仓库id的映射 - distributeTasks(Map depositoryAllNameAndId,String type, int taskType, UserByPort userByPort, Map yesterdayData, List depositoryName) { + distributeTasks(Map depositoryAllNameAndId, String type, int taskType, UserByPort userByPort, Map yesterdayData, List depositoryName) { this.depositoryAllNameAndId = depositoryAllNameAndId;// 仓库名称与仓库id映射 this.taskType = taskType; // 任务类型 this.type = type; // 请求类型 @@ -1626,7 +1640,7 @@ public class DepositoryController { Map result = new HashMap<>(); if (1 == taskType) { - Map showData = getShowData(depositoryAllNameAndId,type, userByPort, yesterdayData, depositoryName); + Map showData = getShowData(depositoryAllNameAndId, type, userByPort, yesterdayData, depositoryName); result.put("show_data", showData); } else if (2 == taskType) { @@ -1802,6 +1816,4 @@ public class DepositoryController { } - - } diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java b/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java index 1b7f8f84..411ccf3d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java @@ -182,4 +182,36 @@ public interface RoleMapper { */ Integer addWarehouseVisiblePermission(Map map); + + /** + * 根据条件查询可见范围的数量 + * @param map 待查询数据 + * @return + */ + Integer findWarehouseVisiblePermissionCountByCondition(Map map); + + + /** + * 根据条件删除仓库可见范围 + * @param map + * @return + */ + Integer delWarehouseVisiblePermissionByCondition(Map map); + + + /** + * 根据条件获取在可视范围内的仓库id + * @param map + * @return + */ + List findDepositoryIdForWarehouseVisiblePermissionByCondition(Map map); + + + /** + * 根据条件获取可视范围内的仓库数量 + * @param map + * @return + */ + Integer findDepositoryIDCountForWarehouseVisiblePermissionByCondition(Map map); + } diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.xml index 14ed22d3..3afedbc4 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.xml @@ -5,13 +5,13 @@ - + - - - - - + + + + + @@ -27,7 +27,7 @@ - + @@ -50,7 +50,6 @@ - update postoruserrole @@ -107,11 +106,11 @@ - INSERT INTO postoruserrole ( - id, classes, role,userid,did + INSERT INTO postoruserrole ( + id, classes, role,userid,did ) VALUES - + (#{id}, #{classes}, #{authority}, @@ -137,7 +136,7 @@ id, classes,uid,mtid ) VALUES - + (#{id}, #{classes}, #{userid}, @@ -147,8 +146,6 @@ - - - - + select + COUNT(*) + from depositoryopenrole + where 1 = 1 + + and `type` = #{type} + + + and userId = #{userId} + + and uid in + + #{uid} + + + and did in + + #{did} + + + + + + + delete + from depositoryopenrole + where + `type` = #{type} + + and uid in + + #{uid} + + + + and uid = #{uid} + + and did in + + #{did} + + + + + + + + + diff --git a/src/main/java/com/dreamchaser/depository_manage/service/RoleService.java b/src/main/java/com/dreamchaser/depository_manage/service/RoleService.java index 080d0d44..3291ba8d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/RoleService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/RoleService.java @@ -159,6 +159,21 @@ public interface RoleService { * @param map 添加具体数据 * @return */ - Integer addWarehouseVisiblePermission(Map map); + Integer setWarehouseVisiblePermission(Map map); + + + /** + * 用于删除权限 + * @param map 待删除数据 + */ + Integer delWarehouseVisiblePermission(Map map); + + + /** + * 根据调剂获取在可视范围内的仓库id + * @param map 待查询调剂 + * @return + */ + List findDepositoryIdForWarehouseVisiblePermissionByCondition(Map map); } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java index 7175f0e0..da9fa1ab 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java @@ -277,18 +277,15 @@ public class RoleServiceImpl implements RoleService { * @return */ @Override - public Integer addWarehouseVisiblePermission(Map map) { + public Integer setWarehouseVisiblePermission(Map map) { // 获取当前赋值的权限类型 String type = (String) map.get("type"); // 定义返回结果 Integer result = 0; // 用于插入权限列表 Map paramForInsert = new HashMap<>(); - paramForInsert.put("userId", map.get("userId")); - paramForInsert.put("time", System.currentTimeMillis()); - paramForInsert.put("depositoryIdList", map.get("depositoryIds")); - paramForInsert.put("state", 1); - List userIds = (List) map.get("userIds"); + + if ("person".equals(type)) { // 如果是对人员赋权 paramForInsert.put("type", 1); @@ -298,14 +295,102 @@ public class RoleServiceImpl implements RoleService { } else { throw new MyException("未知参数错误"); } - for (Object userId : userIds - ) { - paramForInsert.put("uid", userId); - result += roleMapper.addWarehouseVisiblePermission(paramForInsert); + // 获取当前要处理的数量 + Integer count = ObjectFormatUtil.toInteger(map.get("count")); + + List userIds = (List) map.get("userIds"); + paramForInsert.put("uidList", userIds); + // 获取当前要处理用于及其仓库的数量 + Integer countByCondition = roleMapper.findWarehouseVisiblePermissionCountByCondition(paramForInsert); + if (countByCondition > count) { + // 当前数量小于已存在的数量,则代表权限删除 + result = countByCondition - delWarehouseVisiblePermission(map); + } else { + paramForInsert.put("depositoryIdList", map.get("depositoryIds")); + paramForInsert.put("userId", map.get("userId")); + paramForInsert.put("time", System.currentTimeMillis()); + // 用于查询当前可见的仓库id数量 + Map paramForCount = new HashMap<>(); + paramForCount.put("type", paramForInsert.get("type")); + for (Object userId : userIds + ) { + paramForInsert.put("uid", userId); + paramForCount.put("uid", userId); + Integer paramCount = roleMapper.findDepositoryIDCountForWarehouseVisiblePermissionByCondition(paramForCount); + result += (roleMapper.addWarehouseVisiblePermission(paramForInsert) - paramCount); + } } + + return result; } + /** + * 用于删除权限 + * + * @param map 待删除数据 + */ + @Override + public Integer delWarehouseVisiblePermission(Map map) { + // 获取当前赋值的权限类型 + + Map paramForDelete = new HashMap<>(); + Integer integer = 0; + String type = (String) map.get("type"); + if ("person".equals(type)) { + // 如果是对人员赋权 + paramForDelete.put("type", 1); + } else if ("post".equals(type)) { + // 如果是对岗位赋权 + paramForDelete.put("type", 2); + } else { + throw new MyException("未知参数错误"); + } + List userIds = (List) map.get("userIds"); + List depositoryIds = (List) map.get("depositoryIds"); + if (depositoryIds.size() == 0) { + // 如果是要删除所有的 + + paramForDelete.put("uidList", userIds); + // 删除当前所有的权限 + integer = roleMapper.delWarehouseVisiblePermissionByCondition(paramForDelete); + } else { + // 如果不是所有 + for (Object uid : userIds + ) { + paramForDelete.put("uid", uid); + // 获取当前用户所拥有的权限 + List depositoryIdList = roleMapper.findDepositoryIdForWarehouseVisiblePermissionByCondition(paramForDelete); + // 获取当前已拥有的与新拥有的差集 + depositoryIdList.removeAll(depositoryIds); + paramForDelete.put("depositoryIdList", depositoryIdList); + integer += roleMapper.delWarehouseVisiblePermissionByCondition(paramForDelete); + } + } + return integer; + } + + /** + * 根据调剂获取在可视范围内的仓库id + * + * @param map 待查询调剂 + * @return + */ + @Override + public List findDepositoryIdForWarehouseVisiblePermissionByCondition(Map map) { + String type = (String) map.get("type"); + if ("person".equals(type)) { + // 如果是对人员赋权 + map.put("type", 1); + } else if ("post".equals(type)) { + // 如果是对岗位赋权 + map.put("type", 2); + } else { + throw new MyException("未知参数错误"); + } + return roleMapper.findDepositoryIdForWarehouseVisiblePermissionByCondition(map); + } + /** * 获取当前仓库的子仓库 diff --git a/src/main/resources/templates/pages/authorization/depositoryOpen.html b/src/main/resources/templates/pages/authorization/depositoryOpen.html index 414adfd5..69cd6fc7 100644 --- a/src/main/resources/templates/pages/authorization/depositoryOpen.html +++ b/src/main/resources/templates/pages/authorization/depositoryOpen.html @@ -202,9 +202,8 @@ beforeSend: function () { }, success: function (d) { - var data2 = d.data; depositoryTree.reload({ - data: data2 + data: d.data }); }, @@ -215,6 +214,27 @@ , id: "postTree" , showCheckbox: true //是否显示复选框 , data: [] + , click: function (obj) { + let data = obj.data; //得到当前点击的节点数据 + let elem = obj.elem; + if ("-1" === data.orgid) { + // 如果点击的是岗位 + let postId = data.id; // 岗位id + $.ajax({ + url: "/repository/findWarehouseVisiblePermission", + type: 'post', + dataType: 'json', + contentType: "application/json;charset=utf-8", + data: JSON.stringify({"type": "post", "uid": postId}), + success: function (res) { + let data = res.data; + depositoryTree.reload(); + tree.setChecked('depositoryTree', data); + tree.setChecked('postTree',[postId]) + } + }) + } + } }); @@ -232,25 +252,51 @@ } // 获取选中的仓库树id let allTreeId = getAllTreeId(treeData); - if(userIds.length > 0){ - let req = {}; - req.userIds = userIds; - req.depositoryIds = allTreeId; - req.type = tabType; - req.count = userIds.length * allTreeId.length; - $.ajax({ - url:"/repository/setWarehouseVisiblePermission", - type: 'post', - dataType: 'json', - contentType: "application/json;charset=utf-8", - data: JSON.stringify(req), - success :function() { - } - }) - }else{ - layer.msg("请选中赋权岗位或人员",{ - icon:5, - time:1000 + if (userIds.length > 0) { + if (!flagForForm) { + flagForForm = true; + let req = {}; + req.userIds = userIds; + req.depositoryIds = allTreeId; + req.type = tabType; + req.count = userIds.length * allTreeId.length; + $.ajax({ + url: "/repository/setWarehouseVisiblePermission", + type: 'post', + dataType: 'json', + contentType: "application/json;charset=utf-8", + data: JSON.stringify(req), + beforeSend: function () { + this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']}); + }, + success: function (res) { + layer.close(this.layerIndex); + if (res.status >= 300) { + layer.msg(res.statusInfo.message, { + icon: 5, + time: 1000 + }, function () { + location.reload(); + });//失败的表情 + flagForForm = false; + } else { + layer.msg("设置成功!", { + icon: 6,//成功的表情 + time: 1000 + }, //1秒关闭(如果不配置,默认是3秒) + function () { + //do something + location.reload(); + }); + } + } + }) + } + + } else { + layer.msg("请选中赋权岗位或人员", { + icon: 5, + time: 1000 }) } @@ -272,7 +318,10 @@ idList.push(temp.id); } } else { - idList.push(temp.id); + if (temp.children.length === 0) { + // 如果是底层仓库 + idList.push(temp.id); + } } if (temp.children !== null && temp.children !== undefined && temp.children.length > 0) { // 如果存在子树 diff --git a/src/main/resources/templates/pages/material/material-add.html b/src/main/resources/templates/pages/material/material-add.html index 3a786a5f..27d6d0a9 100644 --- a/src/main/resources/templates/pages/material/material-add.html +++ b/src/main/resources/templates/pages/material/material-add.html @@ -265,6 +265,7 @@ layer.close(this.layerIndex); if (data.status >= 300) { layer.msg(data.statusInfo.message);//失败的表情 + flagForForm = false; return; } else { layer.msg("添加成功!", { @@ -304,9 +305,6 @@ }) }); - $('body').on('click', '[data-refresh]', function () { - location.reload(); - }) }); diff --git a/target/classes/com/dreamchaser/depository_manage/mapper/RoleMapper.xml b/target/classes/com/dreamchaser/depository_manage/mapper/RoleMapper.xml index 14ed22d3..3afedbc4 100644 --- a/target/classes/com/dreamchaser/depository_manage/mapper/RoleMapper.xml +++ b/target/classes/com/dreamchaser/depository_manage/mapper/RoleMapper.xml @@ -5,13 +5,13 @@ - + - - - - - + + + + + @@ -27,7 +27,7 @@ - + @@ -50,7 +50,6 @@ - update postoruserrole @@ -107,11 +106,11 @@ - INSERT INTO postoruserrole ( - id, classes, role,userid,did + INSERT INTO postoruserrole ( + id, classes, role,userid,did ) VALUES - + (#{id}, #{classes}, #{authority}, @@ -137,7 +136,7 @@ id, classes,uid,mtid ) VALUES - + (#{id}, #{classes}, #{userid}, @@ -147,8 +146,6 @@ - - - - + select + COUNT(*) + from depositoryopenrole + where 1 = 1 + + and `type` = #{type} + + + and userId = #{userId} + + and uid in + + #{uid} + + + and did in + + #{did} + + + + + + + delete + from depositoryopenrole + where + `type` = #{type} + + and uid in + + #{uid} + + + + and uid = #{uid} + + and did in + + #{did} + + + + + + + + + diff --git a/target/classes/templates/pages/material/material-add.html b/target/classes/templates/pages/material/material-add.html index 3a786a5f..27d6d0a9 100644 --- a/target/classes/templates/pages/material/material-add.html +++ b/target/classes/templates/pages/material/material-add.html @@ -265,6 +265,7 @@ layer.close(this.layerIndex); if (data.status >= 300) { layer.msg(data.statusInfo.message);//失败的表情 + flagForForm = false; return; } else { layer.msg("添加成功!", { @@ -304,9 +305,6 @@ }) }); - $('body').on('click', '[data-refresh]', function () { - location.reload(); - }) });