Browse Source

修改出库人员设置功能

lwx_dev
erdanergou 3 years ago
parent
commit
c0b34d1cd2
  1. 358
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

358
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

@ -1976,10 +1976,16 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 根据物料类型分类明细 // 根据物料类型分类明细
Map<String, Object> minIdByMaterialType = new HashMap<>(); Map<String, Object> minIdByMaterialType = new HashMap<>();
// 定义仓库列表 // 定义类型列表
List<Long> materialTypeIdList = new ArrayList<>(); List<Long> materialTypeIdList = new ArrayList<>();
// 根据仓库分类明细
Map<String, Object> minIdByDepository = new HashMap<>();
// 定义类型列表
List<Integer> depositoryIdList = new ArrayList<>();
// 获取所有详情 // 获取所有详情
List<ApplicationOutRecordMin> applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(recordP.getId()); List<ApplicationOutRecordMin> applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(recordP.getId());
List<Depository> depositoryAll = depositoryMapper.findDepositoryAll();
for (ApplicationOutRecordMin applicationOutRecordMin : applicationOutRecordMinByParent) { for (ApplicationOutRecordMin applicationOutRecordMin : applicationOutRecordMinByParent) {
// 获取子单信息 // 获取子单信息
@ -1988,20 +1994,19 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 获取物料信息 // 获取物料信息
Inventory inventory = materialMapper.findInventoryById(mid); Inventory inventory = materialMapper.findInventoryById(mid);
// 获取当前仓库下的子订单 // 用于标志出库人员通过物料类型还说仓库获取 // 默认是仓库
Long materialTypeId = inventory.getMaterialTypeId(); boolean flagForMtOrDepository = true;
if (!findThisIdIsExist(materialTypeIdList, materialTypeId)) {
// 如果当前仓库id没有存入过 // 获取出库仓库
materialTypeIdList.add(materialTypeId); Integer depositoryId = applicationOutRecordMin.getDepositoryId();
} Depository depositoryById = depositoryMapper.findDepositoryById(depositoryId);
List<Integer> minIdList = new ArrayList<>(); Depository parentDepository = findParentDepository(depositoryById, depositoryAll);
Object o = minIdByMaterialType.get("materialType" + materialTypeId); if (!parentDepository.getDname().contains("前置仓")) {
if (o != null) { // 如果不是前置仓下的仓库
minIdList = (List<Integer>) o; flagForMtOrDepository = false;
} }
// 将当前子订单添加到该仓库下的子订单列表中
minIdList.add(applicationOutRecordMin.getId());
minIdByMaterialType.put("materialType" + materialTypeId, minIdList);
//设置子订单在redis中的主键 //设置子订单在redis中的主键
String minRecordKey = "minRecord:" + applicationOutRecordMin.getId(); String minRecordKey = "minRecord:" + applicationOutRecordMin.getId();
@ -2014,40 +2019,114 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
minRecord.put("parentId", recordP.getId().toString()); // 当前子订单主订单 minRecord.put("parentId", recordP.getId().toString()); // 当前子订单主订单
minRecord.put("state", "1"); // 当前子订单状态 1待处理2处理 minRecord.put("state", "1"); // 当前子订单状态 1待处理2处理
// 获取该物料所处仓库的仓库管理员
List<Integer> userIdByDid = new ArrayList<>(); if (!flagForMtOrDepository) {
userIdByDid = roleService.findUserIdByMtId(inventory.getMaterialTypeId()); // 如果是通过类型
StringBuilder QyWxUid = new StringBuilder();
for (Integer integer : userIdByDid) { // 获取当前仓库下的子订单
// 获取仓库管理员信息 Long materialTypeId = inventory.getMaterialTypeId();
UserByPort manager = LinkInterfaceUtil.FindUserById(integer, null); if (!findThisIdIsExistForMaterialType(materialTypeIdList, materialTypeId)) {
// 仓库管理员订单信息 // 如果当前仓库id没有存入过
Map<String, Object> userRecord = new HashMap<>(); materialTypeIdList.add(materialTypeId);
// 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单
StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型
minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部
userRecord.put("minRecord", minRecordList.toString());
} }
// 更新redis中用户记录 List<Integer> minIdList = new ArrayList<>();
redisTemplate.opsForHash().putAll("user:" + integer, userRecord); Object o = minIdByMaterialType.get("materialType" + materialTypeId);
minRecordManage.append(integer).append(","); if (o != null) {
minIdList = (List<Integer>) o;
}
// 将当前子订单添加到该仓库下的子订单列表中
minIdList.add(applicationOutRecordMin.getId());
minIdByMaterialType.put("materialType" + materialTypeId, minIdList);
// 获取该物料所处仓库的仓库管理员
List<Integer> userIdByDid = new ArrayList<>();
userIdByDid = roleService.findUserIdByMtId(inventory.getMaterialTypeId());
StringBuilder QyWxUid = new StringBuilder();
for (Integer integer : userIdByDid) {
// 获取仓库管理员信息
UserByPort manager = LinkInterfaceUtil.FindUserById(integer, null);
// 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>();
// 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单
StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型
minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部
userRecord.put("minRecord", minRecordList.toString());
}
// 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(",");
// QyWxUid.append(manager.getWorkwechat()+","); // QyWxUid.append(manager.getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息
new Thread(new Runnable() {
@Override
public void run() {
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
}
}).start();
} }
QyWxUid.append("PangFuZhen,"); else{
minRecord.put("manager", minRecordManage.toString()); // 如果是通过仓库
// 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息 if (!findThisIdIsExistForDepository(depositoryIdList, depositoryId)) {
new Thread(new Runnable() { // 如果当前仓库id没有存入过
@Override depositoryIdList.add(depositoryId);
public void run() {
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
} }
}).start(); List<Integer> minIdList = new ArrayList<>();
Object o = minIdByMaterialType.get("depository" + depositoryId);
if (o != null) {
minIdList = (List<Integer>) o;
}
// 将当前子订单添加到该仓库下的子订单列表中
minIdList.add(applicationOutRecordMin.getId());
minIdByMaterialType.put("depository" + depositoryId, minIdList);
// 获取该物料所处仓库的仓库管理员
List<Integer> userIdByDid = new ArrayList<>();
userIdByDid = roleService.findUserIdByDid(depositoryId);
StringBuilder QyWxUid = new StringBuilder();
for (Integer integer : userIdByDid) {
// 获取仓库管理员信息
UserByPort manager = LinkInterfaceUtil.FindUserById(integer, null);
// 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>();
// 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单
StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型
minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部
userRecord.put("minRecord", minRecordList.toString());
}
// 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(",");
// QyWxUid.append(manager.getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息
new Thread(new Runnable() {
@Override
public void run() {
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
}
}).start();
}
} }
@ -2536,7 +2615,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(id), s, userAgent, 1); qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(id), s, userAgent, 1);
} }
}).start(); }).start();
} else { }
else {
String result = ""; String result = "";
// 开启线程更改其他用户卡片模板样式 // 开启线程更改其他用户卡片模板样式
String simpleTime = DateUtil.getSimpleTime(new Date()); String simpleTime = DateUtil.getSimpleTime(new Date());
@ -2567,9 +2647,13 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 定义仓库列表 // 定义仓库列表
List<Long> materialTypeIdList = new ArrayList<>(); List<Long> materialTypeIdList = new ArrayList<>();
// 根据仓库分类明细
Map<String, Object> minIdByDepository = new HashMap<>();
// 定义类型列表
List<Integer> depositoryIdList = new ArrayList<>();
StringBuilder minRecordByMain = new StringBuilder("[]"); StringBuilder minRecordByMain = new StringBuilder("[]");
List<ApplicationOutRecordMin> applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(record.getId()); List<ApplicationOutRecordMin> applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(record.getId());
List<Depository> depositoryAll = depositoryMapper.findDepositoryAll();
for (ApplicationOutRecordMin applicationOutRecordMin : applicationOutRecordMinByParent) { for (ApplicationOutRecordMin applicationOutRecordMin : applicationOutRecordMinByParent) {
// 获取子单信息 // 获取子单信息
// 获取对应的物料编号 // 获取对应的物料编号
@ -2577,21 +2661,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 获取物料信息 // 获取物料信息
Inventory inventory = materialMapper.findInventoryById(mid); Inventory inventory = materialMapper.findInventoryById(mid);
// 获取当前仓库下的子订单
Long materialTypeId = inventory.getMaterialTypeId();
if (!findThisIdIsExist(materialTypeIdList, materialTypeId)) {
// 如果当前仓库id没有存入过
materialTypeIdList.add(materialTypeId);
}
List<Integer> minIdList = new ArrayList<>();
Object o = minIdByMaterialType.get("materialType" + materialTypeId);
if (o != null) {
minIdList = (List<Integer>) o;
}
// 将当前子订单添加到该仓库下的子订单列表中
minIdList.add(applicationOutRecordMin.getId());
minIdByMaterialType.put("materialType" + materialTypeId, minIdList);
//设置子订单在redis中的主键 //设置子订单在redis中的主键
String minRecordKey = "minRecord:" + applicationOutRecordMin.getId(); String minRecordKey = "minRecord:" + applicationOutRecordMin.getId();
minRecordByMain.insert(1, minRecordKey + ","); // 将子订单主键插入到主订单的子订单列表 minRecordByMain.insert(1, minRecordKey + ","); // 将子订单主键插入到主订单的子订单列表
@ -2602,43 +2671,124 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
minRecord.put("parentId", record.getId().toString()); // 当前子订单主订单 minRecord.put("parentId", record.getId().toString()); // 当前子订单主订单
minRecord.put("state", "1"); // 当前子订单状态 1待处理2处理 minRecord.put("state", "1"); // 当前子订单状态 1待处理2处理
// 获取该物料所处仓库的仓库管理员
List<Integer> userIdByDid = new ArrayList<>();
userIdByDid = roleService.findUserIdByMtId(inventory.getMaterialTypeId());
// 用于保存仓库管理员的企业微信openid
StringBuilder QyWxUid = new StringBuilder();
for (Integer integer : userIdByDid) {
// 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>(); // 获取出库仓库
// 用户当前子订单 Integer depositoryId = applicationOutRecordMin.getDepositoryId();
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord"); Depository depositoryById = depositoryMapper.findDepositoryById(depositoryId);
if (userMinRecord == null) { // 如果当前用户没有子订单 // 用于标志出库人员通过物料类型还说仓库获取 // 默认是仓库
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 boolean flagForMtOrDepository = true;
} else { // 如果当前用户已经有子订单 Depository parentDepository = findParentDepository(depositoryById, depositoryAll);
StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型 if (!parentDepository.getDname().contains("前置仓")) {
minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部 // 如果不是前置仓下的仓库
userRecord.put("minRecord", minRecordList.toString()); flagForMtOrDepository = false;
}
if (!flagForMtOrDepository) {
// 如果是通过类型
// 获取当前仓库下的子订单
Long materialTypeId = inventory.getMaterialTypeId();
if (!findThisIdIsExistForMaterialType(materialTypeIdList, materialTypeId)) {
// 如果当前仓库id没有存入过
materialTypeIdList.add(materialTypeId);
} }
// 更新redis中用户记录 List<Integer> minIdList = new ArrayList<>();
redisTemplate.opsForHash().putAll("user:" + integer, userRecord); Object o = minIdByMaterialType.get("materialType" + materialTypeId);
minRecordManage.append(integer).append(","); if (o != null) {
UserByPort userByPort = LinkInterfaceUtil.FindUserById(integer, userToken); minIdList = (List<Integer>) o;
// QyWxUid.append(userByPort.getWorkwechat() + ","); }
// 将当前子订单添加到该仓库下的子订单列表中
minIdList.add(applicationOutRecordMin.getId());
minIdByMaterialType.put("materialType" + materialTypeId, minIdList);
// 获取该物料所处仓库的仓库管理员
List<Integer> userIdByDid = new ArrayList<>();
userIdByDid = roleService.findUserIdByMtId(inventory.getMaterialTypeId());
StringBuilder QyWxUid = new StringBuilder();
for (Integer integer : userIdByDid) {
// 获取仓库管理员信息
UserByPort manager = LinkInterfaceUtil.FindUserById(integer, null);
// 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>();
// 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单
StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型
minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部
userRecord.put("minRecord", minRecordList.toString());
}
// 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(",");
// QyWxUid.append(manager.getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息
new Thread(new Runnable() {
@Override
public void run() {
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
}
}).start();
} }
QyWxUid.append("PangFuZhen,"); else{
minRecord.put("manager", minRecordManage.toString()); // 如果是通过仓库
// 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息 if (!findThisIdIsExistForDepository(depositoryIdList, depositoryId)) {
new Thread(new Runnable() { // 如果当前仓库id没有存入过
@Override depositoryIdList.add(depositoryId);
public void run() {
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
} }
}).start(); List<Integer> minIdList = new ArrayList<>();
Object o = minIdByMaterialType.get("depository" + depositoryId);
if (o != null) {
minIdList = (List<Integer>) o;
}
// 将当前子订单添加到该仓库下的子订单列表中
minIdList.add(applicationOutRecordMin.getId());
minIdByMaterialType.put("depository" + depositoryId, minIdList);
// 获取该物料所处仓库的仓库管理员
List<Integer> userIdByDid = new ArrayList<>();
userIdByDid = roleService.findUserIdByDid(depositoryId);
StringBuilder QyWxUid = new StringBuilder();
for (Integer integer : userIdByDid) {
// 获取仓库管理员信息
UserByPort manager = LinkInterfaceUtil.FindUserById(integer, null);
// 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>();
// 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单
StringBuilder minRecordList = new StringBuilder(userMinRecord); // 转为stringbuilder类型
minRecordList.insert(1, minRecordKey + ",");// 将当前子订单插入头部
userRecord.put("minRecord", minRecordList.toString());
}
// 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(",");
// QyWxUid.append(manager.getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息
new Thread(new Runnable() {
@Override
public void run() {
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
}
}).start();
}
} }
@ -2675,7 +2825,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
map.put("departmentheadPass", 1); map.put("departmentheadPass", 1);
} }
} else { }
else {
updateInventoryForOutRefused(record); updateInventoryForOutRefused(record);
result = "驳回"; result = "驳回";
map.put("pass", 2); map.put("pass", 2);
@ -2913,7 +3064,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Inventory materialById = materialMapper.findInventoryById(mid); Inventory materialById = materialMapper.findInventoryById(mid);
// 获取当前仓库下的子订单 // 获取当前仓库下的子订单
Long materialTypeId = materialById.getMaterialTypeId(); Long materialTypeId = materialById.getMaterialTypeId();
if (!findThisIdIsExist(materialTypeIdList, materialTypeId)) { if (!findThisIdIsExistForMaterialType(materialTypeIdList, materialTypeId)) {
// 如果当前仓库id没有存入过 // 如果当前仓库id没有存入过
materialTypeIdList.add(materialTypeId); materialTypeIdList.add(materialTypeId);
} }
@ -4649,7 +4800,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
* @param id * @param id
* @return * @return
*/ */
public Boolean findThisIdIsExist(List<Long> ids, Long id) { public Boolean findThisIdIsExistForMaterialType(List<Long> ids, Long id) {
for (Long mtId : for (Long mtId :
ids) { ids) {
if (Long.compare(id, mtId) == 0) { if (Long.compare(id, mtId) == 0) {
@ -4659,6 +4810,23 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return false; return false;
} }
/**
* 判断当前id是否在ids中
*
* @param ids
* @param id
* @return
*/
public Boolean findThisIdIsExistForDepository(List<Integer> ids, Integer id) {
for (Integer did :
ids) {
if (Integer.compare(id, did) == 0) {
return true;
}
}
return false;
}
/** /**
* 用于获取当前仓库的最顶级仓库 * 用于获取当前仓库的最顶级仓库
* *

Loading…
Cancel
Save