diff --git a/src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java b/src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java index cb561daa..3efab4c0 100644 --- a/src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java +++ b/src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java @@ -79,7 +79,7 @@ public class QyWxConfig { // 如果成功获取access_token // 定义redis过期时间 - Long expires_in = Long.valueOf(7200); + Long expires_in = 7200L; // 获取当前redis中存储的key值 Set keys = redisTemplate.keys("wms_access_token_*"); diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java index e441aba0..bdbd22fb 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java @@ -591,6 +591,7 @@ public class DepositoryRecordController { String sp_no = jsonObject.getString("sp_no"); Map QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("sp_no", sp_no); + QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); QyWxApprovalMap.put("mainId", id.toString()); redisTemplateForHash.opsForHash().putAll(sp_no, QyWxApprovalMap); // 设置过期为7天 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 3e8ff356..00b9cf6f 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -1617,6 +1617,14 @@ public class PageController { // 获取主订单信息 ApplicationOutRecordP recordP = depositoryRecordService.findApplicationOutRecordPById(id); + // 获取当前出库仓库是否为开放仓库 + int flagForOpenDepository = recordP.getFlagForOpenDepository(); + if(flagForOpenDepository == 2){ + mv.addObject("depositoryManagerText","部门负责人"); + }else{ + mv.addObject("depositoryManagerText","仓储负责人"); + } + // 获取所有子订单 List applicationOutRecordMinByParent = depositoryRecordService.findApplicationOutRecordMinByParent(recordP.getId()); // 展示出库的仓库名 @@ -1987,6 +1995,15 @@ public class PageController { if (id != null) { // 获取出库主单 ApplicationOutRecordP applicationOutRecordPById = depositoryRecordService.findApplicationOutRecordPById(id); + // 获取当前仓库是否为开放仓库 + int flagForOpenDepository = applicationOutRecordPById.getFlagForOpenDepository(); + if(flagForOpenDepository == 2){ + mv.addObject("depositoryManagerText","部门负责人"); + }else{ + mv.addObject("depositoryManagerText","仓储负责人"); + + } + // 获取出库子单 List applicationOutRecordMinByParent = depositoryRecordService.findApplicationOutRecordMinByParent(applicationOutRecordPById.getId()); // 展示物料名 diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java b/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java index 419c33c3..ff099684 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java @@ -7,6 +7,7 @@ import com.dreamchaser.depository_manage.config.QyWxJMJM.com.qq.weixin.mp.aes.Ae import com.dreamchaser.depository_manage.config.QyWxJMJM.com.qq.weixin.mp.aes.WXBizMsgCrypt; import com.dreamchaser.depository_manage.entity.CallBackLog; import com.dreamchaser.depository_manage.entity.UserByPort; +import com.dreamchaser.depository_manage.pojo.ApplicationOutRecordP; import com.dreamchaser.depository_manage.pojo.RestResponse; import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.*; import com.dreamchaser.depository_manage.pojo.callBackXml.callBackXml_button_templatecard.TemplateCard; @@ -14,6 +15,7 @@ import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.UserKeyAndTokenPool; import com.dreamchaser.depository_manage.service.CallBackLogService; import com.dreamchaser.depository_manage.service.DepositoryRecordService; +import com.dreamchaser.depository_manage.service.DepositoryService; import com.dreamchaser.depository_manage.service.StockTakingService; import com.dreamchaser.depository_manage.service.impl.QyWxOperationService; import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil; @@ -59,6 +61,10 @@ public class QyWxOperationController { DepositoryRecordService depositoryRecordService; + @Autowired + DepositoryService depositoryService; + + @Autowired StockTakingService stockTakingService; @@ -630,7 +636,25 @@ public class QyWxOperationController { if (details.size() != qyWxLabelUserList.size()) { // 如果节点数目不等于标签人员数 - flagForLabel = false; + ApplicationOutRecordP applicationOutRecordPById = depositoryRecordService.findApplicationOutRecordPById(Integer.parseInt(mainId)); + + if (Integer.compare(applicationOutRecordPById.getFlagForOpenDepository(), 2) == 0) { + // 如果是申请的开放仓库 + + // 获取当时发送审批时其他部门负责人Id + String otherDepartmentIdList = (String) redisTemplate.opsForHash().get(spNo, "otherDepartmentIdList"); + if (otherDepartmentIdList != null) { + for (ApprovalInfo_Details ad : details + ) { + // 获取当前节点审批人userId + String approver = ad.getApprover().getUserId(); + flagForLabel = flagForLabel && otherDepartmentIdList.contains(approver); + } + } + } else { + flagForLabel = false; + } + } else { for (ApprovalInfo_Details ad : details ) { @@ -639,6 +663,7 @@ public class QyWxOperationController { flagForLabel = flagForLabel && qyWxLabelUserList.contains(approver); } } + if (!flagForLabel) { // 如果第二个节点不是标签节点 if (approval_count > 1) { diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml index 23591e3d..526b1a19 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml @@ -24,8 +24,8 @@ - - + + 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 1dc9cda9..288097c4 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java @@ -214,4 +214,12 @@ public interface DepositoryService { */ List getToDayInventoryByDNameTest(); + /** + * 用于获取当前仓库所属部门领导的企业微信id + * @param depositoryId 待查询仓库id + * @param userAgent userAgent + * @return + */ + List getDepositoryAdminorgLeaders(String depositoryId,String userAgent); + } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java index 3957ab5e..30d8ddd7 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java @@ -228,7 +228,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { String placeId = ""; Object temp = map.get("placeId"); String depositoryId = (String) map.get("depositoryId"); - if (depositoryId ==null || "".equals(depositoryId)) { + if (depositoryId == null || "".equals(depositoryId)) { map.put("flagForOpenDepository", 1); map.remove("depositoryId"); } else { @@ -902,7 +902,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { String depositoryId = (String) map.get("depositoryId"); // 获取当前出库库存记录 Inventory inventoryById = materialMapper.findInventoryById(mid); - if (depositoryId == null || "".equals(depositoryId)) { + if (depositoryId == null || "".equals(depositoryId)) { map.put("depositoryId", inventoryById.getDepositoryId()); } else { // 如果选择了仓库 @@ -2248,9 +2248,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { Integer outId = ObjectFormatUtil.toInteger(mainId); // 获取对应的出库订单 ApplicationOutRecord recordP = depositoryRecordMapper.findApplicationOutRecordPById(outId); - - // 获取当前审批所在部门 - + // 获取当前出库的仓库是否为开放仓库 + int flagForOpenDepository = recordP.getFlagForOpenDepository(); if (!flagForFirst) { String depositoryManagerTime = recordP.getDepositoryManagerTime(); @@ -2266,6 +2265,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 获取部门负责人审批时间 String departmentheadTime = recordP.getDepartmentheadTime(); + // 定义标志位为部门负责人已经审批 boolean flagForDepartmentHeadPass = false; if ("0".equals(departmentheadTime)) { @@ -2284,8 +2284,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 定义类型列表 List materialTypeIdList = new ArrayList<>(); - // 根据仓库分类明细 - Map minIdByDepository = new HashMap<>(); // 定义类型列表 List depositoryIdList = new ArrayList<>(); // 获取所有详情 @@ -2483,7 +2481,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 如果点击的是通过 map.put("departmentheadPass", 1); map.put("state", "待仓储中心负责人审核"); - // 获取仓储中心负责人标签的用户userId List qyWxLabelUserList = QyWxConfig.getQyWxLabelUserList(userAgent); StringBuilder depositoryManager = new StringBuilder(); @@ -2492,6 +2489,28 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { UserByPort user = (UserByPort) userByQyWxUserId.get("user"); depositoryManager.append(user.getId()).append(","); } + if (flagForOpenDepository == 2) { + map.put("state", "待部门负责人审核"); + depositoryManager = new StringBuilder(); + // 获取当前选中的仓库 + Depository depositoryById = depositoryMapper.findDepositoryById(recordP.getDepositoryId()); + // 获取当前仓库所属的部门 + String adminorg = depositoryById.getAdminorg(); + // 获取当前部门id对应的企业微信id + JSONObject portByQyWx = PortConfig.getUserPortByQyWx(ObjectFormatUtil.toInteger(adminorg)); + Integer wechatorganizationid = portByQyWx.getInteger("wechatorganizationid"); + + // 获取当前部门信息 + qywxDepartment wxDepartment = QyWxConfig.getQyWxDepartment(userAgent, wechatorganizationid); + // 获取部门负责人id列表 + List otherDepartmentIdList = new ArrayList<>(wxDepartment.getDepartment_leader()); + for (String s : otherDepartmentIdList) { + Map userByQyWxUserId = PortConfig.findUserByQyWxUserId(s); + UserByPort user = (UserByPort) userByQyWxUserId.get("user"); + depositoryManager.append(user.getId()).append(","); + } + } + map.put("depositoryManager", depositoryManager.toString()); } else { // 如果点击的是驳回 @@ -2824,25 +2843,37 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { map.remove("id"); List minByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(record.getId()); - boolean flagForHasOtherDepository = true; - for (ApplicationOutRecordMin min : minByParent - ) { - Depository depositoryById = depositoryMapper.findDepositoryById(min.getDepositoryId()); - if (Integer.compare(depositoryById.getParentId(), 0) != 0) { - // 如果不是 - List depositoryAll = depositoryMapper.findDepositoryAll(); - depositoryById = findParentDepository(depositoryById, depositoryAll); - } + // 获取申请用户 + UserByPort applicantUser = LinkInterfaceUtil.FindUserById(record.getApplicantId(), userToken); + // 用于标志该仓库是否为前置仓下的仓库 + boolean flagForHasOtherDepository = true; //默认是前置仓下的仓库 + // 获取当前出库是否为开放出库 + int flagForOpenDepository = record.getFlagForOpenDepository(); + if (flagForOpenDepository != 1) { + + // 如果是开放仓库 + flagForHasOtherDepository = false; + } else { + // 如果不是 + for (ApplicationOutRecordMin min : minByParent + ) { + Depository depositoryById = depositoryMapper.findDepositoryById(min.getDepositoryId()); + if (Integer.compare(depositoryById.getParentId(), 0) != 0) { + // 如果不是 + List depositoryAll = depositoryMapper.findDepositoryAll(); + depositoryById = findParentDepository(depositoryById, depositoryAll); + } - if (!depositoryById.getDname().contains("前置仓")) { - // 如果不是前置仓下的仓库 - flagForHasOtherDepository = false; + if (!depositoryById.getDname().contains("前置仓")) { + // 如果不是前置仓下的仓库 + flagForHasOtherDepository = false; + } } } - UserByPort applicantUser = LinkInterfaceUtil.FindUserById(record.getApplicantId(), userToken); + if (map.containsKey("departmentheadPass") && !flagForHasOtherDepository) { + // 如果是第一位部门负责人审批且可进入该流程 - if (map.containsKey("departmentheadPass") && !flagForHasOtherDepository && Integer.compare(applicantUser.getMaindeparment(), 361) != 0) { String result = ""; String simpleTime = DateUtil.getSimpleTime(new Date()); map.put("departmentheadTime", DateUtil.DateTimeToTimeStamp(simpleTime)); @@ -2851,24 +2882,59 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (departmentheadPass == 1) { result = "通过"; map.put("state", "待仓储中心负责人审核"); - // 获取仓储中心详情 - Administration company = LinkInterfaceUtil.getCompany(361, userToken); - // 获取仓储中心负责人 - List departmentHeadByUser = PortConfig.findDepartmentHeadByUser(company, userToken); + + + // 用于存储下节点审批人id StringBuilder depositoryManager = new StringBuilder(); + // 用于存储下节点审批人的企业微信id StringBuilder QyWxUid = new StringBuilder(); + if(flagForOpenDepository == 2){ + // 如果是开放仓库 + map.put("state","待部门负责人审核"); + + // 获取当前选中的仓库 + Depository depositoryById = depositoryMapper.findDepositoryById(record.getDepositoryId()); + // 获取当前仓库所属的部门 + String adminorg = depositoryById.getAdminorg(); + // 获取当前部门id对应的企业微信id + JSONObject portByQyWx = PortConfig.getUserPortByQyWx(ObjectFormatUtil.toInteger(adminorg)); + Integer wechatorganizationid = portByQyWx.getInteger("wechatorganizationid"); + + // 获取当前部门信息 + qywxDepartment wxDepartment = QyWxConfig.getQyWxDepartment(userAgent, wechatorganizationid); + // 获取部门负责人企业微信id列表 + List otherDepartmentIdList = new ArrayList<>(wxDepartment.getDepartment_leader()); + for (String s:otherDepartmentIdList + ) { + Map userByQyWxUserId = PortConfig.findUserByQyWxUserId(s); + UserByPort otherDepartment = (UserByPort) userByQyWxUserId.get("user"); + QyWxUid.append(s).append(","); + depositoryManager.append(otherDepartment.getId()).append(","); + } + }else{ + // 如果是正常仓库 - for (int i = 0; i < departmentHeadByUser.size(); i++) { - depositoryManager.append(departmentHeadByUser.get(i).getId() + ","); - String workwechat = departmentHeadByUser.get(i).getWorkwechat(); - if (workwechat == null || "".equals(workwechat)) { - workwechat = departmentHeadByUser.get(i).getWechat(); + // 获取仓储中心详情 + Administration company = LinkInterfaceUtil.getCompany(361, userToken); + + // 获取仓储中心负责人 + List departmentHeadByUser = PortConfig.findDepartmentHeadByUser(company, userToken); + + for (UserByPort userByPort : departmentHeadByUser) { + depositoryManager.append(userByPort.getId()).append(","); + String workwechat = userByPort.getWorkwechat(); + if (workwechat == null || "".equals(workwechat)) { + workwechat = userByPort.getWechat(); + } + QyWxUid.append(workwechat).append(","); } - QyWxUid.append(workwechat + ","); } + QyWxUid.append("PangFuZhen,"); map.put("depositoryManager", depositoryManager.toString()); // 向仓储中心负责人发送新的消息 + + new Thread(new Runnable() { @Override public void run() { @@ -2931,7 +2997,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(id), s, userAgent, 1); } }).start(); - } else { + } + else { String result = ""; // 开启线程更改其他用户卡片模板样式 String simpleTime = DateUtil.getSimpleTime(new Date()); @@ -2940,8 +3007,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { map.put("depositoryId", record.getDepositoryId()); - // map.put("mid", record.getMid()); - // Material material = materialMapper.findMaterialById(record.getMid()); Integer depositoryManagerPass = (Integer) map.get("depositoryManagerPass"); if (depositoryManagerPass == null) { depositoryManagerPass = (Integer) map.get("departmentheadPass"); @@ -2962,8 +3027,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { // 定义仓库列表 List materialTypeIdList = new ArrayList<>(); - // 根据仓库分类明细 - Map minIdByDepository = new HashMap<>(); // 定义类型列表 List depositoryIdList = new ArrayList<>(); StringBuilder minRecordByMain = new StringBuilder("[]"); @@ -3001,7 +3064,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { if (!flagForMtOrDepository) { // 如果是通过类型 - // 获取当前仓库下的子订单 + // 获取具体物料类型 Long materialTypeId = inventory.getMaterialTypeId(); if (!findThisIdIsExistForMaterialType(materialTypeIdList, materialTypeId)) { // 如果当前仓库id没有存入过 @@ -3054,7 +3117,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent); } }).start(); - } else { + } + else { // 如果是通过仓库 @@ -3120,8 +3184,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { String depositoryManager = record.getDepositoryManager(); String[] split = depositoryManager.split(","); StringBuilder QyWxUid = new StringBuilder(); - for (int i = 0; i < split.length; i++) { - String s = split[i]; + for (String s : split) { if ("".equals(s)) { continue; } @@ -3142,7 +3205,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { redisTemplate.opsForHash().put("record:" + record.getId(), "minRecord", minRecordByMain.toString()); map.put("state", "仓储中心负责人审核通过"); - if (flagFordepartmentTime) { + if (flagFordepartmentTime || flagForOpenDepository == 2) { map.put("state", "部门负责人审核通过"); map.put("departmentheadTime", DateUtil.DateTimeToTimeStamp(simpleTime)); map.put("depositoryManagerPass", 4); @@ -3150,7 +3213,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { map.put("departmentheadPass", 1); } - } else { + } + else { updateInventoryForOutRefused(record); result = "驳回"; map.put("pass", 2); 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 b751b97b..4f3f7e74 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 @@ -3,6 +3,8 @@ package com.dreamchaser.depository_manage.service.impl; import cn.hutool.core.lang.Snowflake; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.dreamchaser.depository_manage.config.PortConfig; +import com.dreamchaser.depository_manage.config.QyWxConfig; import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.mapper.DepositoryMapper; import com.dreamchaser.depository_manage.mapper.PlaceMapper; @@ -81,8 +83,7 @@ public class DepositoryServiceImpl implements DepositoryService { code = "GK" + dnamePinYin + "-01"; } } - } - else { + } else { map.put("parentId", map.get("depositoryId")); map.remove("depositoryId"); // 获取当前仓库父仓库 @@ -114,7 +115,7 @@ public class DepositoryServiceImpl implements DepositoryService { Double maxNumber = ObjectFormatUtil.toDouble(map.get("maxNumber")); if ((int) (maxNumber * 100) > 999999999) { map.put("maxNumber", 999999999); - }else{ + } else { map.put("maxNumber", maxNumber * 100); } return depositoryMapper.insertDepository(map); @@ -224,8 +225,8 @@ public class DepositoryServiceImpl implements DepositoryService { Double maxNumber = ObjectFormatUtil.toDouble(map.get("maxNumber")); if ((int) (maxNumber * 100) > 999999999) { map.put("maxNumber", 999999999); - }else{ - map.put("maxNumber",maxNumber * 100); + } else { + map.put("maxNumber", maxNumber * 100); } return depositoryMapper.updateDepository(map); } @@ -397,6 +398,7 @@ public class DepositoryServiceImpl implements DepositoryService { /** * 构造仓库树 + * * @return */ @Override @@ -766,6 +768,31 @@ public class DepositoryServiceImpl implements DepositoryService { return toDayInventoryByDNameTest; } + /** + * 用于获取当前仓库所属部门领导的企业微信id + * @param depositoryId 待查询仓库id + * @param userAgent userAgent + * @return + */ + @Override + public List getDepositoryAdminorgLeaders(String depositoryId,String userAgent) { + + // 获取当前选中的仓库 + Depository depositoryById = depositoryMapper.findDepositoryById(Integer.parseInt(depositoryId)); + // 获取当前仓库所属的部门 + String adminorg = depositoryById.getAdminorg(); + // 获取当前部门id对应的企业微信id + JSONObject portByQyWx = PortConfig.getUserPortByQyWx(ObjectFormatUtil.toInteger(adminorg)); + Integer wechatorganizationid = portByQyWx.getInteger("wechatorganizationid"); + + // 获取当前部门信息 + qywxDepartment wxDepartment = QyWxConfig.getQyWxDepartment(userAgent, wechatorganizationid); + // 获取部门负责人企业微信id列表 + List otherDepartmentIdList = new ArrayList<>(wxDepartment.getDepartment_leader()); + return otherDepartmentIdList; + + } + private boolean hasDepository(List list, Depository o) { boolean flag = false; for (Depository depository : list) { @@ -777,6 +804,75 @@ public class DepositoryServiceImpl implements DepositoryService { return flag; } + /** + * 用于获取只有仓库的树结构 + * + * @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 Task implements Callable { @@ -867,79 +963,10 @@ 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{ + class TaskForOnlyDepository implements Callable { List depositoryIdList; @@ -954,7 +981,7 @@ public class DepositoryServiceImpl implements DepositoryService { */ List depositories = depositoryMapper.selectDepositoryByIds(depositoryIdList); List result = new ArrayList<>(); - for (Depository depository:depositories + for (Depository depository : depositories ) { Map stringObjectMap = InitTreeMenus2(depository, new ArrayList<>()); result.add(stringObjectMap); diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java index 77931a16..31e57174 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java @@ -1294,7 +1294,7 @@ public class QyWxOperationService { textNotice.setMsgtype("template_card"); // 获取卡片模板 - TemplateCard_text_notice text_notice = getTextNoticeCard(outMinId,null); + TemplateCard_text_notice text_notice = getTextNoticeCard(outMinId, null); textNotice.setTemplate_card(text_notice); String s = JSONObject.toJSONString(textNotice); @@ -1368,8 +1368,8 @@ public class QyWxOperationService { map.put("agentid", QyWxConfig.AgentId); map.put("response_code", response_code); map.put("enable_id_trans", 0); - TemplateCard_text_notice text_notice = getTextNoticeCard(outMinId,quantity); - map.put("template_card",text_notice); + TemplateCard_text_notice text_notice = getTextNoticeCard(outMinId, quantity); + map.put("template_card", text_notice); String jsonString = JSONObject.toJSONString(map); System.out.println(jsonString); String s1 = HttpUtils.doPost(url, jsonString); @@ -1409,6 +1409,9 @@ public class QyWxOperationService { // 获取当前出库单是2代表是通过开放仓库申请1代表不是 Integer flagForOpenDepository = mainRecord.getFlagForOpenDepository(); + // 事先定义其他部门负责人列表 + List otherDepartmentIdList = null; + // 获取当前出库明细 List minRecordList = depositoryRecordMapper.findApplicationOutRecordMinByParent(mainId); // 定义审批模板 @@ -1759,9 +1762,9 @@ public class QyWxOperationService { approval_template_approver_list.add(approval_template_approver_Label); - }else{ + } else { // 如果不是中心仓下的仓库 - if(Integer.compare(2,flagForOpenDepository) == 0){ + if (Integer.compare(2, flagForOpenDepository) == 0) { // 如果该仓库是通过开放仓库获取到的 // 获取当前选中的仓库 @@ -1775,7 +1778,7 @@ public class QyWxOperationService { // 获取当前部门信息 qywxDepartment wxDepartment = QyWxConfig.getQyWxDepartment(userAgent, wechatorganizationid); // 获取部门负责人id列表 - List otherDepartmentIdList = new ArrayList<>(wxDepartment.getDepartment_leader()); + otherDepartmentIdList = new ArrayList<>(wxDepartment.getDepartment_leader()); otherDepartmentIdList = new ArrayList(Collections.singleton("PangFuZhen")); @@ -1789,7 +1792,6 @@ public class QyWxOperationService { } - for (Integer depositoryId : depositoryIdList ) { @@ -1829,6 +1831,11 @@ public class QyWxOperationService { String s = HttpUtils.doPost(url, jsonString); JSONObject jsonObject = JSONObject.parseObject(s); + if (otherDepartmentIdList != null) { + jsonObject.put("otherDepartmentIdList", JSONObject.toJSONString(otherDepartmentIdList)); + } else { + jsonObject.put("otherDepartmentIdList", "[]"); + } return jsonObject; } @@ -2315,7 +2322,7 @@ public class QyWxOperationService { UserByPort userByPort = PortConfig.findUserByPortByNumber(manager); Map contact_principal = new HashMap<>(); String workwechat1 = userByPort.getWorkwechat(); - if(workwechat1 == null || "".equals(workwechat1)){ + if (workwechat1 == null || "".equals(workwechat1)) { workwechat1 = userByPort.getWechat(); } contact_principal.put("userid", workwechat1); diff --git a/src/main/resources/templates/pages/application/application-review.html b/src/main/resources/templates/pages/application/application-review.html index 2974b3ff..74c34761 100644 --- a/src/main/resources/templates/pages/application/application-review.html +++ b/src/main/resources/templates/pages/application/application-review.html @@ -99,7 +99,7 @@ - 仓储负责人 + 仓储负责人 diff --git a/src/main/resources/templates/pages/application/form-step-look_back.html b/src/main/resources/templates/pages/application/form-step-look_back.html index fb1fcc8b..a7b36a52 100644 --- a/src/main/resources/templates/pages/application/form-step-look_back.html +++ b/src/main/resources/templates/pages/application/form-step-look_back.html @@ -108,16 +108,16 @@ - 仓储负责人 + - 仓储负责人 + - 仓储负责人备注 + 2016-11-28 - 仓储负责人审核时间 + 2016-11-28 diff --git a/src/test/java/com/dreamchaser/depository_manage/OtherTest.java b/src/test/java/com/dreamchaser/depository_manage/OtherTest.java index 26f05efd..996b7f25 100644 --- a/src/test/java/com/dreamchaser/depository_manage/OtherTest.java +++ b/src/test/java/com/dreamchaser/depository_manage/OtherTest.java @@ -23,9 +23,24 @@ import java.util.concurrent.*; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class OtherTest { + @Autowired + DepositoryMapper depositoryMapper; + @Test public void Test(){ - + // 获取当前选中的仓库 + Depository depositoryById = depositoryMapper.findDepositoryById(48); + // 获取当前仓库所属的部门 + String adminorg = depositoryById.getAdminorg(); + // 获取当前部门id对应的企业微信id + JSONObject portByQyWx = PortConfig.getUserPortByQyWx(ObjectFormatUtil.toInteger(adminorg)); + Integer wechatorganizationid = portByQyWx.getInteger("wechatorganizationid"); + + // 获取当前部门信息 + qywxDepartment wxDepartment = QyWxConfig.getQyWxDepartment("0a7ffa452096d330934052105a67794a", wechatorganizationid); + // 获取部门负责人id列表 + List userIdList = new ArrayList<>(wxDepartment.getDepartment_leader()); + System.out.println(JSONObject.toJSONString(userIdList)); } diff --git a/target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml b/target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml index 23591e3d..526b1a19 100644 --- a/target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml +++ b/target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml @@ -24,8 +24,8 @@ - - + + diff --git a/target/classes/templates/pages/application/application-review.html b/target/classes/templates/pages/application/application-review.html index 2974b3ff..74c34761 100644 --- a/target/classes/templates/pages/application/application-review.html +++ b/target/classes/templates/pages/application/application-review.html @@ -99,7 +99,7 @@ - 仓储负责人 + 仓储负责人