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 91bfea8a..55c03560 100644 --- a/src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java +++ b/src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java @@ -158,7 +158,7 @@ public class QyWxConfig { return jsonObject; } - // 获取企业微信标签成员 + // 获取企业微信中仓储中心负责人标签的成员的userId public static List getQyWxLabelUserList(String UserAgent){ // 获取当前token String tempToken = GetQYWXToken(UserAgent); @@ -185,6 +185,12 @@ public class QyWxConfig { return userIdList; } + /** + * 获取 + * @param tempToken + * @param TAGID + * @return + */ public static List getQyWxLabelUserList(String tempToken,String TAGID){ String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/tag/get?access_token=%s&tagid=%s",tempToken,TAGID); String get = HttpUtils.doGet(url); diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java index 5ce4a4fa..2f68e73d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java @@ -33,7 +33,20 @@ public class MaterialTypeController { */ @PostMapping("/materialType_add") public RestResponse insertMaterialType(@RequestBody Map map){ - return CrudUtil.postHandle(materialTypeService.insertMaterialType(map),1); + Integer integer = materialTypeService.insertMaterialType(map); + // 更新树结构 + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + materialService.InitTreeMenus_Test(); + } + }).start(); + return CrudUtil.postHandle(integer,1); } /** @@ -81,11 +94,25 @@ public class MaterialTypeController { RealDeleteSonDepository(materialTypeById.getOldId().toString()); } }).start(); - return CrudUtil.deleteHandle(materialTypeService.deleteMaterialTypeById(id),1); + + Integer integer = materialTypeService.deleteMaterialTypeById(id); + + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + materialService.InitTreeMenus_Test(); + } + }).start(); + + return CrudUtil.deleteHandle(integer,1); }else if (map.containsKey("ids")){ List ids=(List) map.get("ids"); - for (int i = 0; i < ids.size(); i++) { - Integer id = ids.get(i); + for (Integer id : ids) { MaterialType materialTypeById = materialTypeService.findMaterialTypeById(id); new Thread(new Runnable() { @Override @@ -94,7 +121,23 @@ public class MaterialTypeController { } }).start(); } - return CrudUtil.deleteHandle(materialTypeService.deleteMaterialTypeByIds(ids),ids.size()); + + + Integer integer = materialTypeService.deleteMaterialTypeByIds(ids); + + + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + materialService.InitTreeMenus_Test(); + } + }).start(); + return CrudUtil.deleteHandle(integer,ids.size()); }else { throw new MyException("所需请求参数缺失!"); } @@ -109,8 +152,7 @@ public class MaterialTypeController { param.put("parentId",parentId); // 获取当前仓库所有子仓库 List materialTypeByCondition = materialTypeService.findMaterialTypeByCondition(param); - for (int i = 0; i < materialTypeByCondition.size(); i++) { - MaterialType materialType = materialTypeByCondition.get(i); + for (MaterialType materialType : materialTypeByCondition) { Long oldId = materialType.getOldId();// 获取当前物料id RealDeleteSonDepository(oldId.toString()); // 递归查询物料类型 materialTypeService.deleteMaterialTypeById(Integer.parseInt(oldId.toString())); // 删除物料类型 @@ -133,20 +175,51 @@ public class MaterialTypeController { UpdateSonState(materialTypeById.getOldId().toString(),3); } }).start(); - return CrudUtil.deleteHandle(materialTypeService.changeStateToDeletedById(id),1); + + Integer integer = materialTypeService.changeStateToDeletedById(id); + + + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + materialService.InitTreeMenus_Test(); + } + }).start(); + + return CrudUtil.deleteHandle(integer,1); }else if (map.containsKey("ids")){ List ids=(List) map.get("ids"); - for (int i = 0; i < ids.size(); i++) { - Integer id = ids.get(i); + for (Integer id : ids) { MaterialType materialTypeById = materialTypeService.findMaterialTypeById(id); new Thread(new Runnable() { @Override public void run() { - UpdateSonState(materialTypeById.getOldId().toString(),3); + UpdateSonState(materialTypeById.getOldId().toString(), 3); } }).start(); } - return CrudUtil.deleteHandle(materialTypeService.changeStateToDeletedByIds(ids),ids.size()); + + + Integer integer = materialTypeService.changeStateToDeletedByIds(ids); + + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + materialService.InitTreeMenus_Test(); + } + }).start(); + + return CrudUtil.deleteHandle(integer,ids.size()); }else { throw new MyException("所需请求参数缺失!"); } @@ -164,7 +237,21 @@ public class MaterialTypeController { }else{ map.put("state",2); } - return CrudUtil.postHandle(materialTypeService.updateMaterialType(map),1); + + Integer integer = materialTypeService.updateMaterialType(map); + + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + materialService.InitTreeMenus_Test(); + } + }).start(); + return CrudUtil.postHandle(integer,1); } /** @@ -216,10 +303,10 @@ public class MaterialTypeController { return true; } List materialTypeByCondition = materialTypeService.findMaterialTypeByCondition(param); - for (int i = 0; i < materialTypeByCondition.size(); i++) { - if(!findMaterialByMaterialType(materialTypeByCondition.get(i).getOldId().toString())){ - findAllSonMaterialType(materialTypeByCondition.get(i).getOldId().toString()); - }else{ + for (MaterialType materialType : materialTypeByCondition) { + if (!findMaterialByMaterialType(materialType.getOldId().toString())) { + findAllSonMaterialType(materialType.getOldId().toString()); + } else { return true; } } @@ -263,7 +350,23 @@ public class MaterialTypeController { UpdateSonState(materialTypeById.getOldId().toString(), state); } }).start(); - return CrudUtil.postHandle(materialTypeService.updateMaterialType(map), 1); + + + Integer integer = materialTypeService.updateMaterialType(map); + + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + materialService.InitTreeMenus_Test(); + } + }).start(); + + return CrudUtil.postHandle(integer, 1); } /** @@ -278,14 +381,13 @@ public class MaterialTypeController { UpdateSonMaterialState(parentId,state); // 获取当前类型所有子类型 List materialTypeByCondition = materialTypeService.findMaterialTypeByCondition(param); - for (int i = 0; i < materialTypeByCondition.size(); i++) { - MaterialType materialType = materialTypeByCondition.get(i); + for (MaterialType materialType : materialTypeByCondition) { int materialTypeId = materialType.getId(); Long oldId = materialType.getOldId(); - UpdateSonState(String.valueOf(oldId),state); - Map map = new HashMap<>(); - map.put("id",materialTypeId); - map.put("state",state); + UpdateSonState(String.valueOf(oldId), state); + Map map = new HashMap<>(); + map.put("id", materialTypeId); + map.put("state", state); materialTypeService.updateStateByParam(map); } } diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/qywxDepartment.java b/src/main/java/com/dreamchaser/depository_manage/entity/qywxDepartment.java index 29de3a20..dad640d8 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/qywxDepartment.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/qywxDepartment.java @@ -2,6 +2,8 @@ package com.dreamchaser.depository_manage.entity; import lombok.Data; +import java.util.List; + /** * 用于企业微信的部门列表 */ @@ -12,5 +14,5 @@ public class qywxDepartment { private Integer order; private String name; private String name_en; - private String department_leader; + private List department_leader; } 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 524aadc9..1fd85415 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 @@ -1411,20 +1411,33 @@ public class QyWxOperationService { // 设置模板id approvalTemplate.setTemplate_id(QyWxConfig.out_approval_template_id); - // 设置审批人模式为在管理后台设置的审批流程 - approvalTemplate.setUse_template_approver(1); + // 设置审批人模式为通过接口设置 + approvalTemplate.setUse_template_approver(0); //审批流程信息,用于指定审批申请的审批流程,支持单人审批、多人会签、多人或签,可能有多个审批节点,仅use_template_approver为0时生效。 List approval_template_approver_list = new ArrayList<>(); - Approval_template_approver approval_template_approver = new Approval_template_approver(); - approval_template_approver.setAttr(1); - List userIdList = new ArrayList<>(); - userIdList.add("PangFuZhen"); - approval_template_approver.setUserid(userIdList); - approval_template_approver_list.add(approval_template_approver); - approvalTemplate.setApprover(approval_template_approver_list); + + // 获取当前登录用户部门与企业微信部门对照 + JSONObject userPortByQyWx = PortConfig.getUserPortByQyWx(userToken.getMaindeparment()); + String portName = userPortByQyWx.getString("name"); + Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid"); + + // 用于设置部门负责人流程 + Approval_template_approver approval_template_approver_departMentHeader = new Approval_template_approver(); + approval_template_approver_departMentHeader.setAttr(1); + // 获取当前部门信息 + qywxDepartment qyWxDepartment = QyWxConfig.getQyWxDepartment(userAgent, portByQyWxInteger); + // 获取部门负责人id列表 + List userIdList = new ArrayList<>(qyWxDepartment.getDepartment_leader()); + approval_template_approver_departMentHeader.setUserid(userIdList); + + + + approval_template_approver_list.add(approval_template_approver_departMentHeader); + + // 审批申请数据,可定义审批申请中各个控件的值,其中必填项必须有值,选填项可为空,数据结构同“获取审批申请详情”接口返回值中同名参数“apply_data” Approval_template_apply_data approval_template_apply_data = new Approval_template_apply_data(); @@ -1472,10 +1485,7 @@ public class QyWxOperationService { approval_template_apply_data_contents_department.setControl("Contact"); approval_template_apply_data_contents_department.setId("Contact-1668048405619"); - // 获取当前登录用户部门与企业微信部门对照 - JSONObject userPortByQyWx = PortConfig.getUserPortByQyWx(userToken.getMaindeparment()); - String portName = userPortByQyWx.getString("name"); - Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid"); + // 部门控件值(control参数为Contact,且value参数为departments) Map members_department = new HashMap<>(); @@ -1513,8 +1523,13 @@ public class QyWxOperationService { approval_template_apply_data_contents_info.setId("Table-1668046309360"); // 定义明细列表 List contents_detail = new ArrayList<>(); + + + // 设置标志位,用于标志是否全为办公用品库 + boolean flag = true; for (ApplicationOutRecordMin recordMin : minRecordList) { // 获取明细信息 + // 获取当前出库物料 Inventory materialById = materialMapper.findInventoryById(recordMin.getMid()); // 获取当前物料所在仓库 @@ -1613,6 +1628,11 @@ public class QyWxOperationService { detail_list_control_info_value_dname.put("text", depositoryById.getDname()); detail_list_control_info_depositoryName.put("value", detail_list_control_info_value_dname); + if(!depositoryById.getDname().contains("办公用品库")){ + // 如果不是办公用品库 + flag = false; + } + // 物料规格型号 Map detail_list_control_info_version = new HashMap<>(); detail_list_control_info_version.put("control", "Text"); @@ -1697,6 +1717,22 @@ public class QyWxOperationService { //抄送方式:1-提单时抄送(默认值); 2-单据通过后抄送;3-提单和单据通过后抄送。仅use_template_approver为0时生效。 approvalTemplate.setNotify_type(2); + if(!flag){ + // 如果有其他仓库 + + // 获取仓储中心负责人标签的用户userId + List qyWxLabelUserList = QyWxConfig.getQyWxLabelUserList(userAgent); + // 用于设置部门负责人流程 + Approval_template_approver approval_template_approver_Label= new Approval_template_approver(); + approval_template_approver_Label.setAttr(1); + approval_template_approver_Label.setUserid(qyWxLabelUserList); + + approval_template_approver_list.add(approval_template_approver_Label); + + } + + // 设置审批流程 + approvalTemplate.setApprover(approval_template_approver_list); // 获取最终模板字符串 String jsonString = JSONObject.toJSONString(approvalTemplate); diff --git a/src/test/java/com/dreamchaser/depository_manage/TestForOther.java b/src/test/java/com/dreamchaser/depository_manage/TestForOther.java index 5e8fb035..788bf9a4 100644 --- a/src/test/java/com/dreamchaser/depository_manage/TestForOther.java +++ b/src/test/java/com/dreamchaser/depository_manage/TestForOther.java @@ -21,6 +21,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.io.*; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -35,9 +37,10 @@ public class TestForOther { public void Test() throws IOException { // 51 - qywxDepartment qyWxDepartment = QyWxConfig.getQyWxDepartment("123456789", 73); - System.out.println(qyWxDepartment.getDepartment_leader()); - +// qywxDepartment qyWxDepartment = QyWxConfig.getQyWxDepartment("123456789", 73); +// System.out.println(qyWxDepartment.getDepartment_leader().get(0)); + List la = new ArrayList(Collections.singleton("PangFuZhen")); + System.out.println(la.get(0)); }