From 67edbc775115df55dc6bdbd8050c9a4ec7c16899 Mon Sep 17 00:00:00 2001 From: erdanergou Date: Thu, 13 Apr 2023 08:13:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=93=E5=BA=93=E5=AF=B9?= =?UTF-8?q?=E5=A4=96=E5=BC=80=E6=94=BE=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CompanyController.java | 14 + .../controller/DepositoryController.java | 10 +- .../controller/PageController.java | 9 + .../service/CompanyService.java | 10 + .../service/DepositoryService.java | 9 + .../service/impl/CompanyServiceImpl.java | 15 + .../service/impl/DepositoryServiceImpl.java | 110 ++++++- .../utils/LinkInterfaceUtil.java | 27 ++ .../pages/authorization/depositoryOpen.html | 272 ++++++++++++++++++ .../templates/pages/user/table-user.html | 2 +- .../pages/warehouse/selectOnlyDepository.html | 39 +-- .../depository_manage/OtherTest.java | 61 +--- .../templates/pages/user/table-user.html | 2 +- .../pages/warehouse/selectOnlyDepository.html | 39 +-- 14 files changed, 489 insertions(+), 130 deletions(-) create mode 100644 src/main/resources/templates/pages/authorization/depositoryOpen.html diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java b/src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java index a5ba7526..3ddcfbb8 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java @@ -423,6 +423,20 @@ public class CompanyController { return new RestResponse(list); } + /** + * 获取行政组织与岗位树 + */ + @GetMapping("/getOrgAndPostThree") + public RestResponse getOrgAndPostThree(HttpServletRequest request){ + List list = new ArrayList<>(); + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + return new RestResponse(companyService.BuildOrgAndPostThree(userToken)); + } + /** * 用于创建施工单位 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 d9d0df15..72f38ca5 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java @@ -1412,11 +1412,12 @@ public class DepositoryController { list = depositoryService.InitTreeMenus("", userToken); } else { list = depositoryService.InitTreeMenus(adminorg.toString(), userToken); - } return new RestResponse(list); } + + // 构造库位树 @GetMapping("/treeMenus_Place") public RestResponse InitTreeMenus_Place(@RequestParam(value = "depositoryId") Integer depositoryId) { @@ -1425,6 +1426,13 @@ public class DepositoryController { return new RestResponse(list); } + @GetMapping("/treeMenusOnlyDepository") + public RestResponse treeMenusOnlyDepository(){ + List list = new ArrayList<>(); + list = depositoryService.InitTreeMenusOnlyDepository(); + return new RestResponse(list); + } + // 根据id获取仓库信息 @GetMapping("/findDepositoryByDid") public RestResponse findDepositoryByDid(@RequestParam(value = "depositoryId") Integer depositoryId) { diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java index c2e3dec4..592d4902 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -3298,5 +3298,14 @@ public class PageController { } + /** + * 用来跳转到仓库对外开放页面 + */ + @GetMapping("/depositoryRole") + public ModelAndView depositoryRole(){ + ModelAndView mv = new ModelAndView(); + mv.setViewName("pages/authorization/depositoryOpen"); + return mv; + } } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/CompanyService.java b/src/main/java/com/dreamchaser/depository_manage/service/CompanyService.java index 43084bd4..a8fc4297 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/CompanyService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/CompanyService.java @@ -1,5 +1,7 @@ package com.dreamchaser.depository_manage.service; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.dreamchaser.depository_manage.entity.Company; import com.dreamchaser.depository_manage.entity.User; import com.dreamchaser.depository_manage.entity.UserByPort; @@ -114,4 +116,12 @@ public interface CompanyService { * 用于构造企业微信行政组织结构 */ List BuildQyWxAdministrationTreeMenus(UserByPort userByPort,String UserAgent); + + + /** + * 用于构造行政组织及岗位树 + * @param userByPort 当前登录用户 + * @return + */ + JSONArray BuildOrgAndPostThree(UserByPort userByPort); } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java index cbc68733..1dc9cda9 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java @@ -154,6 +154,15 @@ public interface DepositoryService { * @return */ List InitTreeMenus(String adminorg,UserByPort userByPort); + + + /** + * 构造仓库树 + * @return + */ + List InitTreeMenusOnlyDepository(); + + /** * 获取当前部门以及公共仓库 * @param adminorg diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/CompanyServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/CompanyServiceImpl.java index 26a9a1b0..10e297d4 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/CompanyServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/CompanyServiceImpl.java @@ -258,6 +258,21 @@ public class CompanyServiceImpl implements CompanyService { return list; } + /** + * 用于构造行政组织及岗位树 + * @param userByPort 当前登录用户 + * @return + */ + @Override + public JSONArray BuildOrgAndPostThree(UserByPort userByPort) { + JSONArray orgAndPostThree = LinkInterfaceUtil.getOrgAndPostThree(userByPort); + // 将获取到的json字符串进行修改为使用的结构 + String replace = JSONObject.toJSONString(orgAndPostThree).replace("name", "title").replace("child", "children"); + // 将其变回json格式 + return JSONObject.parseArray(replace); + } + + /** diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java index 16b44eb1..b751b97b 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java @@ -395,6 +395,17 @@ public class DepositoryServiceImpl implements DepositoryService { return list; } + /** + * 构造仓库树 + * @return + */ + @Override + public List InitTreeMenusOnlyDepository() { + List list = new ArrayList<>(); + list = buildTree_New(InitOnlyDepositoryTree(), 0); + return list; + } + /** * 根据多个主键id获取对应数据 @@ -805,8 +816,7 @@ public class DepositoryServiceImpl implements DepositoryService { // 定义开启线程数 Integer openThreadSize = 0; - for (int i = 0; i < depositories.size(); i++) { - Depository depository = depositories.get(i); + for (Depository depository : depositories) { if ("".equals(adminorg) || "361".equals(adminorg)) { // 如果不按部门分类或是仓储中心人员,则全部加载 Future submit = completionService.submit(new PlaceTask(depository)); futureList.add(submit); @@ -858,4 +868,100 @@ public class DepositoryServiceImpl implements DepositoryService { } + /** + * 用于获取只有仓库的树结构 + * @return + */ + public List InitOnlyDepositoryTree() { + // 定义结果集 + List list = new ArrayList<>(); + + // 定义仓库id列表 + List depositoryIdList = new ArrayList<>(); + // 获取所有仓库 + List depositoryAll = depositoryMapper.findDepositoryAll(); + Integer totalVal = depositoryAll.size(); + + // 定义分页数量 + double size = 10.0; + + // 定义线程数 + Integer threadSize = (int) Math.ceil(totalVal / size); + + // 定义开启线程数目 + Integer openThreadSize = 0; + // 开启对应数量的线程 + ExecutorService exs = Executors.newFixedThreadPool(threadSize); + // 线程结果集 + List> futureList = new ArrayList>(); + + // 1.定义CompletionService + CompletionService completionService = new ExecutorCompletionService(exs); + for (int i = 0; i < depositoryAll.size(); i++) { + // 获取当前类型 + Depository depository = depositoryAll.get(i); + if (((i + 1) % 10) == 0) { // 如果有10个开启线程进行处理 + depositoryIdList.add(depository.getId()); + Future future = completionService.submit(new TaskForOnlyDepository(depositoryIdList)); + openThreadSize++; + futureList.add(future); // 添加到结果集 + depositoryIdList = new ArrayList<>(); // 情况列表 + } else { + // 添加id到列表中 + depositoryIdList.add(depository.getId()); + } + } + + if (depositoryIdList.size() > 0) { + // 如果有剩余,开启线程进行处理 + Future future = completionService.submit(new TaskForOnlyDepository(depositoryIdList)); + futureList.add(future); + openThreadSize++; + } + + // 3.获取结果 + for (int i = 0; i < openThreadSize; i++) { + Object result = null; + try { + result = completionService.take().get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + list.addAll((Collection) result); + } + exs.shutdown(); + // 用于判断当前列表中是否有所有上级 + return list; + } + + /** + * 用于构造树结构 + */ + class TaskForOnlyDepository implements Callable{ + + List depositoryIdList; + + public TaskForOnlyDepository(List depositoryIdList) { + this.depositoryIdList = depositoryIdList; + } + + @Override + public Object call() throws Exception { + /** + * 获取当前仓库id对应的仓库 + */ + List depositories = depositoryMapper.selectDepositoryByIds(depositoryIdList); + List result = new ArrayList<>(); + for (Depository depository:depositories + ) { + Map stringObjectMap = InitTreeMenus2(depository, new ArrayList<>()); + result.add(stringObjectMap); + } + return result; + } + } + + } diff --git a/src/main/java/com/dreamchaser/depository_manage/utils/LinkInterfaceUtil.java b/src/main/java/com/dreamchaser/depository_manage/utils/LinkInterfaceUtil.java index 3c356e5e..83eef9de 100644 --- a/src/main/java/com/dreamchaser/depository_manage/utils/LinkInterfaceUtil.java +++ b/src/main/java/com/dreamchaser/depository_manage/utils/LinkInterfaceUtil.java @@ -325,9 +325,15 @@ public class LinkInterfaceUtil { } JSONObject jsonObject = JSONObject.parseObject(post); return (JSONArray) jsonObject.get("data"); + } + /** + * 获取当前用户可见的菜单集 + * @param userToken 当前登录用户 + * @return + */ public static List getUserAccessToAddresses(UserByPort userToken) { //定义链接地址 String url = PortConfig.external_url_6666 + "/system_authorizing/obtain_authorization"; @@ -350,5 +356,26 @@ public class LinkInterfaceUtil { List stringList = JSONObject.parseArray(powerid.toJSONString(), String.class); return stringList; } + + + public static JSONArray getOrgAndPostThree(UserByPort userToken){ + //定义链接地址 + String url = PortConfig.external_url + "/org/get_organdpost_three"; + Map param = new HashMap<>(); + param.put("id", "309"); + param.put("level", 0); + param.put("all", 0); + String jsonString = JSONObject.toJSONString(param); + JSONObject paramObject = JSONObject.parseObject(jsonString); + String post = null; + try { + post = HttpUtils.send(url, paramObject, HTTP.UTF_8, userToken); + } catch (IOException e) { + e.printStackTrace(); + } + JSONObject jsonObject = JSONObject.parseObject(post); + JSONObject data = (JSONObject) jsonObject.get("data"); + return data.getJSONArray("list"); + } } diff --git a/src/main/resources/templates/pages/authorization/depositoryOpen.html b/src/main/resources/templates/pages/authorization/depositoryOpen.html new file mode 100644 index 00000000..1a16349c --- /dev/null +++ b/src/main/resources/templates/pages/authorization/depositoryOpen.html @@ -0,0 +1,272 @@ + + + + + layui + + + + + + + + + +
+
+
+
+
    +
  • 人员
  • +
  • 岗位
  • +
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/pages/user/table-user.html b/src/main/resources/templates/pages/user/table-user.html index eb7e095f..a4dd185d 100644 --- a/src/main/resources/templates/pages/user/table-user.html +++ b/src/main/resources/templates/pages/user/table-user.html @@ -205,7 +205,7 @@ dataType: 'json', contentType: "application/json;charset=utf-8", success: function (d) { - if (data.value != "") { + if (data.value !== "") { $('#adminorg').empty(); $('#adminorg').append(new Option("请选择部门", "")); diff --git a/src/main/resources/templates/pages/warehouse/selectOnlyDepository.html b/src/main/resources/templates/pages/warehouse/selectOnlyDepository.html index 30a1186c..64cb28d3 100644 --- a/src/main/resources/templates/pages/warehouse/selectOnlyDepository.html +++ b/src/main/resources/templates/pages/warehouse/selectOnlyDepository.html @@ -10,7 +10,6 @@ -