Browse Source

优化相关树结构更新场景

lwx_dev
erdanergou 3 years ago
parent
commit
96b4925bca
  1. 8
      src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java
  2. 150
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java
  3. 4
      src/main/java/com/dreamchaser/depository_manage/entity/qywxDepartment.java
  4. 62
      src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java
  5. 9
      src/test/java/com/dreamchaser/depository_manage/TestForOther.java

8
src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java

@ -158,7 +158,7 @@ public class QyWxConfig {
return jsonObject;
}
// 获取企业微信标签成员
// 获取企业微信中仓储中心负责人标签成员的userId
public static List<String> 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<qywxLabelUser> 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);

150
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<String,Object> 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<Integer> ids=(List<Integer>) 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<MaterialType> 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<Integer> ids=(List<Integer>) 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<MaterialType> 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<MaterialType> 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<String,Object> map = new HashMap<>();
map.put("id",materialTypeId);
map.put("state",state);
UpdateSonState(String.valueOf(oldId), state);
Map<String, Object> map = new HashMap<>();
map.put("id", materialTypeId);
map.put("state", state);
materialTypeService.updateStateByParam(map);
}
}

4
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<String> department_leader;
}

62
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> approval_template_approver_list = new ArrayList<>();
Approval_template_approver approval_template_approver = new Approval_template_approver();
approval_template_approver.setAttr(1);
List<String> 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<String> 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<String, Object> members_department = new HashMap<>();
@ -1513,8 +1523,13 @@ public class QyWxOperationService {
approval_template_apply_data_contents_info.setId("Table-1668046309360");
// 定义明细列表
List<Object> 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<String, Object> 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<String> 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);

9
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<String> la = new ArrayList<String>(Collections.singleton("PangFuZhen"));
System.out.println(la.get(0));
}

Loading…
Cancel
Save