Browse Source

修改一般用户组合出库功能

lwx_dev
erdanergou 3 years ago
parent
commit
bc535477ef
  1. 209
      src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java
  2. 7
      src/main/java/com/dreamchaser/depository_manage/entity/GroupInfo.java
  3. 2
      src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java
  4. 79
      src/main/java/com/dreamchaser/depository_manage/service/impl/GroupServiceImpl.java
  5. 19
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  6. 150
      src/main/resources/templates/pages/application/application-out.html

209
src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java

@ -91,28 +91,12 @@ public class GroupController {
@PostMapping("/findGroupByCode") @PostMapping("/findGroupByCode")
public RestResponse findGroupByCode(@RequestBody Map<String, Object> map, HttpServletRequest request) { public RestResponse findGroupByCode(@RequestBody Map<String, Object> map, HttpServletRequest request) {
String token = request.getHeader("user-token"); String token = request.getHeader("user-token");
if(token == null){ if (token == null) {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
// 获取当前部门仓库
List<Depository> depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString());
// 查询当前用户管理的仓库
List<RoleAndDepository> depositoryAndRole = roleService.findDepositoryAndRole(userToken.getId());
depositoryAndRole.addAll(roleService.findDepositoryAndRole(userToken.getPosition()));
List<Integer> depositoryIdList = new ArrayList<>();
for (Depository depository : depositoryByAdminorg
) {
depositoryIdList.add(depository.getId());
}
for (RoleAndDepository rad : depositoryAndRole
) {
if (!depositoryIdList.contains(rad.getDepositoryId())) {
depositoryIdList.add(rad.getDepositoryId());
}
}
List<Integer> depositoryIdList = roleService.findDepositoryIdForUserHas(userToken);
String code = map.get("code").toString(); String code = map.get("code").toString();
@ -128,17 +112,26 @@ public class GroupController {
// 用于标识当前组合是否可以正常出库 // 用于标识当前组合是否可以正常出库
boolean flag = true; boolean flag = true;
// 定义符合要求的仓库id
List<Integer> satisfyDepositoryIdList = new ArrayList<>();
for (GroupInfo groupInfo : groupByGid) { for (GroupInfo groupInfo : groupByGid) {
// 获取详细信息 // 获取详细信息
Integer infoQuantity = groupInfo.getQuantity();
// 获取该物料的库存 // 获取该物料的库存
List<Double> inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); Map<Integer, Double> inventoryByGroupInfoAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList);
// 用于标志当前物料库存是否符合要求 // 用于标志当前物料库存是否符合要求
boolean flagForQuantity = false; boolean flagForQuantity = false;
for (Double quantity : inventoryByMidAndDepository) { // 获取key 的迭代
for (Integer depositoryId : inventoryByGroupInfoAndDepository.keySet()) {
Double quantity = inventoryByGroupInfoAndDepository.get(depositoryId);
// 如果库存符合要求 // 如果库存符合要求
if (quantity >= groupInfo.getQuantity()) { if (quantity >= infoQuantity) {
flagForQuantity = true; flagForQuantity = true;
if (!satisfyDepositoryIdList.contains(depositoryId)) {
satisfyDepositoryIdList.add(depositoryId);
}
} }
} }
if (!flagForQuantity) { if (!flagForQuantity) {
@ -146,6 +139,9 @@ public class GroupController {
flag = false; flag = false;
errMsg.append(" ").append(groupInfo.getMname()).append(" "); errMsg.append(" ").append(groupInfo.getMname()).append(" ");
break; break;
} else {
List<Depository> depositoryByIds = depositoryService.findDepositoryByIds(satisfyDepositoryIdList);
groupInfo.setSatisfyDepositoryList(depositoryByIds);
} }
} }
@ -208,7 +204,12 @@ public class GroupController {
* @return * @return
*/ */
@PostMapping("/findGroupByGname") @PostMapping("/findGroupByGname")
public RestResponse findGroupByGname(@RequestBody Map<String, Object> map) { public RestResponse findGroupByGname(@RequestBody Map<String, Object> map, HttpServletRequest request) {
String token = request.getHeader("user-token");
if (token == null) {
token = (String) request.getSession().getAttribute("userToken");
}
UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
if (map.containsKey("gname")) { if (map.containsKey("gname")) {
List<Group> groupOnlyByCondition = groupService.findGroupOnlyByCondition(map); List<Group> groupOnlyByCondition = groupService.findGroupOnlyByCondition(map);
int size = groupOnlyByCondition.size(); int size = groupOnlyByCondition.size();
@ -220,6 +221,13 @@ public class GroupController {
// 如果刚好只有一个 // 如果刚好只有一个
// 获取当前组合的所有物料数据 // 获取当前组合的所有物料数据
List<GroupInfo> groupByGid = groupService.findGroupByCondition(map); List<GroupInfo> groupByGid = groupService.findGroupByCondition(map);
List<Integer> depositoryIdForUserHas = roleService.findDepositoryIdForUserHas(userToken);
List<Depository> depositoryByIds = depositoryService.findDepositoryByIds(depositoryIdForUserHas);
if (groupByGid != null && groupByGid.size() > 0) {
groupByGid.get(0).setSatisfyDepositoryList(depositoryByIds);
}else{
groupByGid = new ArrayList<>();
}
return new RestResponse(groupByGid, groupByGid.size(), 200); return new RestResponse(groupByGid, groupByGid.size(), 200);
} else { } else {
@ -369,28 +377,14 @@ public class GroupController {
String token = request.getHeader("user-token"); String token = request.getHeader("user-token");
if(token == null){ if (token == null) {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
// 获取当前部门仓库
List<Depository> depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString());
// 查询当前用户管理的仓库
List<RoleAndDepository> depositoryAndRole = roleService.findDepositoryAndRole(userToken.getId());
depositoryAndRole.addAll(roleService.findDepositoryAndRole(userToken.getPosition()));
List<Integer> depositoryIdList = new ArrayList<>(); List<Integer> depositoryIdList = new ArrayList<>();
for (Depository depository : depositoryByAdminorg
) { depositoryIdList = roleService.findDepositoryIdForUserHas(userToken);
depositoryIdList.add(depository.getId());
}
for (RoleAndDepository rad : depositoryAndRole
) {
if (!depositoryIdList.contains(rad.getDepositoryId())) {
depositoryIdList.add(rad.getDepositoryId());
}
}
// 获取当前组合的所有物料数据 // 获取当前组合的所有物料数据
List<GroupInfo> groupByGid = groupService.findGroupByCondition(map); List<GroupInfo> groupByGid = groupService.findGroupByCondition(map);
@ -403,29 +397,42 @@ public class GroupController {
boolean flag = true; boolean flag = true;
if (!"in".equals(type)) { if (!"in".equals(type)) {
// 定义符合要求的仓库id
List<Integer> satisfyDepositoryIdList = new ArrayList<>();
for (GroupInfo groupInfo : groupByGid) { for (GroupInfo groupInfo : groupByGid) {
// 获取详细信息 // 获取详细信息
// 获取该物料的库存 // 获取该物料的库存
List<Double> inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); Integer infoQuantity = groupInfo.getQuantity();
// 用于标志当前物料库存是否符合要求 // 用于标志当前物料库存是否符合要求
boolean flagForQuantity = false; boolean flagForQuantity = false;
for (Double quantity : inventoryByMidAndDepository) { // 获取该物料在各仓库的库存
// 如果库存符合要求 Map<Integer, Double> inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList);
if (quantity >= groupInfo.getQuantity()) { // 获取key的迭代器
for (Integer depositoryId : inventoryByMidAndDepository.keySet()) {
Double value = inventoryByMidAndDepository.get(depositoryId);
if (value >= infoQuantity) {
flagForQuantity = true; flagForQuantity = true;
satisfyDepositoryIdList.add(depositoryId);
} }
} }
if (!flagForQuantity) { if (!flagForQuantity) {
// 如果当前不符合 // 如果当前不符合
flag = false; flag = false;
errMsg.append(" ").append(groupInfo.getMname()).append(" "); errMsg.append(" ").append(groupInfo.getMname()).append(" ");
break; break;
} else {
List<Depository> depositoryByIds = depositoryService.findDepositoryByIds(satisfyDepositoryIdList);
groupInfo.setSatisfyDepositoryList(depositoryByIds);
} }
} }
} }
if (flag) { if (flag) {
return new RestResponse(groupByGid); return new RestResponse(groupByGid);
} else { } else {
return new RestResponse(null, 666, new StatusInfo("不能出库", "当前组合中的" + errMsg + "在仓库中库存不足")); return new RestResponse(null, 666, new StatusInfo("不能出库", "当前组合中的" + errMsg + "在仓库中库存不足"));
@ -454,14 +461,14 @@ public class GroupController {
@PostMapping("/addApplicationToRedis") @PostMapping("/addApplicationToRedis")
public RestResponse addApplicationToRedis(@RequestBody Map<String, Object> map, HttpServletRequest request) { public RestResponse addApplicationToRedis(@RequestBody Map<String, Object> map, HttpServletRequest request) {
String token = request.getHeader("user-token"); String token = request.getHeader("user-token");
if(token == null){ if (token == null) {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
// 获取暂存的数据 // 获取暂存的数据
List<Integer> gids = (List<Integer>) map.get("gids"); List<Integer> gids = (List<Integer>) map.get("gids");
// 获取当前已经存在的数据 // 获取当前已经存在的数据
List<String> range = redisPool.getRedisTemplateByDb(15).opsForList().range("wms_gids" + userToken.getId(), 0, -1); List<String> range = redisPool.getRedisTemplateByDb(15).opsForList().range("wms_gids" + userToken.getId(), 0, -1);
for (Integer gid : gids) { for (Integer gid : gids) {
if (range.contains(gid.toString())) { if (range.contains(gid.toString())) {
continue; continue;
@ -470,7 +477,7 @@ public class GroupController {
} }
// 设置过期时间为1天 // 设置过期时间为1天
redisPool.getRedisTemplateByDb(15).expire("wms_gids" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).expire("wms_gids" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS);
return CrudUtil.insertHandle(1, 1); return CrudUtil.insertHandle(1, 1);
} }
@ -488,11 +495,11 @@ public class GroupController {
Integer start = (page - 1) * pagesize; Integer start = (page - 1) * pagesize;
Integer end = page * 10; Integer end = page * 10;
String token = request.getHeader("user-token"); String token = request.getHeader("user-token");
if(token == null){ if (token == null) {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Long size = redisPool.getRedisTemplateByDb(15).boundListOps("wms_gids" + userToken.getId()).size(); Long size = redisPool.getRedisTemplateByDb(15).boundListOps("wms_gids" + userToken.getId()).size();
if (end > size) { if (end > size) {
end = ObjectFormatUtil.toInteger(size); end = ObjectFormatUtil.toInteger(size);
} }
@ -500,7 +507,7 @@ public class GroupController {
Map<String, Object> paramForGroupOnly = new HashMap<>(); Map<String, Object> paramForGroupOnly = new HashMap<>();
for (int i = start; i < end; i++) { for (int i = start; i < end; i++) {
// 获取组合编号 // 获取组合编号
Integer gid = ObjectFormatUtil.toInteger( redisPool.getRedisTemplateByDb(15).opsForList().index("wms_gids" + userToken.getId(), i)); Integer gid = ObjectFormatUtil.toInteger(redisPool.getRedisTemplateByDb(15).opsForList().index("wms_gids" + userToken.getId(), i));
paramForGroupOnly.put("gid", gid); paramForGroupOnly.put("gid", gid);
List<GroupInfoP> groupPByCondition = groupService.findOnlyGroupByCondition(paramForGroupOnly); List<GroupInfoP> groupPByCondition = groupService.findOnlyGroupByCondition(paramForGroupOnly);
for (int j = 0; j < groupPByCondition.size(); j++) { for (int j = 0; j < groupPByCondition.size(); j++) {
@ -522,13 +529,13 @@ public class GroupController {
@PostMapping("/deleteApplicationToRedis") @PostMapping("/deleteApplicationToRedis")
public RestResponse deleteApplicationToRedis(@RequestBody Map<String, Object> map, HttpServletRequest request) { public RestResponse deleteApplicationToRedis(@RequestBody Map<String, Object> map, HttpServletRequest request) {
String token = request.getHeader("user-token"); String token = request.getHeader("user-token");
if(token == null){ if (token == null) {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
List<Integer> gids = (List<Integer>) map.get("gids"); List<Integer> gids = (List<Integer>) map.get("gids");
for (int i = 0; i < gids.size(); i++) { for (int i = 0; i < gids.size(); i++) {
redisPool.getRedisTemplateByDb(15).opsForList().remove("wms_gids" + userToken.getId(), 1, gids.get(i).toString()); redisPool.getRedisTemplateByDb(15).opsForList().remove("wms_gids" + userToken.getId(), 1, gids.get(i).toString());
} }
return CrudUtil.insertHandle(1, 1); return CrudUtil.insertHandle(1, 1);
} }
@ -571,7 +578,7 @@ public class GroupController {
} }
} }
try { try {
integer += groupService.insertApplicationInRecord(map, userToken,crypt,userKey,token); // 插入主订单 integer += groupService.insertApplicationInRecord(map, userToken, crypt, userKey, token); // 插入主订单
} catch (Exception e) { } catch (Exception e) {
return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage())); return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage()));
} }
@ -580,6 +587,7 @@ public class GroupController {
/** /**
* 入库审核 * 入库审核
*
* @param map * @param map
* @param request * @param request
* @return * @return
@ -587,7 +595,7 @@ public class GroupController {
@PutMapping("/reviewIn") @PutMapping("/reviewIn")
public RestResponse reviewIn(@RequestBody Map<String, Object> map, HttpServletRequest request) { public RestResponse reviewIn(@RequestBody Map<String, Object> map, HttpServletRequest request) {
String token = request.getHeader("user-token"); String token = request.getHeader("user-token");
if(token == null){ if (token == null) {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
@ -602,10 +610,10 @@ public class GroupController {
} }
@PostMapping("/findGroupById") @PostMapping("/findGroupById")
public RestResponse findGroupById(@RequestBody Map<String,String> map){ public RestResponse findGroupById(@RequestBody Map<String, String> map) {
if(map.containsKey("id")){ if (map.containsKey("id")) {
return new RestResponse(groupService.findGroupOnlyById(ObjectFormatUtil.toInteger(map.get("id")))); return new RestResponse(groupService.findGroupOnlyById(ObjectFormatUtil.toInteger(map.get("id"))));
}else{ } else {
throw new MyException("缺少必要参数"); throw new MyException("缺少必要参数");
} }
} }
@ -613,23 +621,24 @@ public class GroupController {
/** /**
* 用于获取当前物料在组合中的详细信息 * 用于获取当前物料在组合中的详细信息
*
* @param map * @param map
* @return * @return
*/ */
@PostMapping("/materialInfoForGroup") @PostMapping("/materialInfoForGroup")
public RestResponse materialInfoForGroup(@RequestBody Map<String,String>map){ public RestResponse materialInfoForGroup(@RequestBody Map<String, String> map) {
if(map.containsKey("mid") && map.containsKey("gid")){ if (map.containsKey("mid") && map.containsKey("gid")) {
Integer mid = ObjectFormatUtil.toInteger(map.get("mid")); Integer mid = ObjectFormatUtil.toInteger(map.get("mid"));
Integer gid = ObjectFormatUtil.toInteger(map.get("gid")); Integer gid = ObjectFormatUtil.toInteger(map.get("gid"));
GroupInfo groupInfoByMidAndGid = groupService.findGroupInfoByMidAndGid(mid, gid); GroupInfo groupInfoByMidAndGid = groupService.findGroupInfoByMidAndGid(mid, gid);
Map<String,Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
if (groupInfoByMidAndGid != null) { if (groupInfoByMidAndGid != null) {
List<SplitInfo> splitInfoByMid = splitUnitService.findSplitInfoByMid(groupInfoByMidAndGid.getMid()); List<SplitInfo> splitInfoByMid = splitUnitService.findSplitInfoByMid(groupInfoByMidAndGid.getMid());
result.put("groupInfo",groupInfoByMidAndGid); result.put("groupInfo", groupInfoByMidAndGid);
result.put("splitList",splitInfoByMid); result.put("splitList", splitInfoByMid);
} }
return new RestResponse(result); return new RestResponse(result);
}else{ } else {
throw new MyException("缺少必要参数"); throw new MyException("缺少必要参数");
} }
} }
@ -655,7 +664,7 @@ public class GroupController {
map.put("applicantId", userToken.getId()); map.put("applicantId", userToken.getId());
// 获取当前部门负责人 // 获取当前部门负责人
List<UserByPort> departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey,token); List<UserByPort> departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey, token);
// 部门负责人id // 部门负责人id
StringBuilder departmentHeadId = new StringBuilder(); StringBuilder departmentHeadId = new StringBuilder();
// 部门负责人企业微信user // 部门负责人企业微信user
@ -704,7 +713,7 @@ public class GroupController {
map.put("adminorgId", userToken.getMaindeparment()); map.put("adminorgId", userToken.getMaindeparment());
} }
try { try {
integer += groupService.insertApplicationOutRecord(map, userToken,userkey,token); // 插入主订单 integer += groupService.insertApplicationOutRecord(map, userToken, userkey, token); // 插入主订单
} catch (Exception e) { } catch (Exception e) {
return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage())); return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage()));
} }
@ -719,9 +728,9 @@ public class GroupController {
QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("sp_no", sp_no);
QyWxApprovalMap.put("mainId", id.toString()); QyWxApprovalMap.put("mainId", id.toString());
QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList"));
redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap);
// 设置过期为7天 // 设置过期为7天
redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS);
}); });
if (integer != 0 && params.size() < 1) { if (integer != 0 && params.size() < 1) {
@ -773,37 +782,30 @@ public class GroupController {
public RestResponse groupQuantityIsTrue(@RequestBody Map<String, Object> map, HttpServletRequest request) { public RestResponse groupQuantityIsTrue(@RequestBody Map<String, Object> map, HttpServletRequest request) {
if (map.containsKey("gid")) { if (map.containsKey("gid")) {
String token = request.getHeader("user-token"); String token = request.getHeader("user-token");
if(token == null){ if (token == null) {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
}
UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
// 获取当前部门所拥有的仓库
List<Depository> depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString());
// 查询当前用户管理的仓库
List<RoleAndDepository> depositoryAndRole = roleService.findDepositoryAndRole(userToken.getId());
depositoryAndRole.addAll(roleService.findDepositoryAndRole(userToken.getPosition()));
List<Integer> depositoryIdList = new ArrayList<>();
for (Depository depository : depositoryByAdminorg
) {
depositoryIdList.add(depository.getId());
}
for (RoleAndDepository rad : depositoryAndRole
) {
if (!depositoryIdList.contains(rad.getDepositoryId())) {
depositoryIdList.add(rad.getDepositoryId());
}
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
// 获取组合id // 获取组合id
Integer gid = ObjectFormatUtil.toInteger(map.get("gid")); Integer gid = ObjectFormatUtil.toInteger(map.get("gid"));
// 获取组合数量 // 获取组合数量
Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity")); Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity"));
List<Integer> depositoryIdList = new ArrayList<>();
if (map.containsKey("depositoryId")) {
// 获取选择的仓库
Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId"));
depositoryIdList.add(depositoryId);
} else {
depositoryIdList = roleService.findDepositoryIdForUserHas(userToken);
}
Map<String, String> trueForGroup = isTrueForGroup(gid, quantity, depositoryIdList); Map<String, String> trueForGroup = isTrueForGroup(gid, quantity, depositoryIdList);
Boolean flag = Boolean.valueOf(trueForGroup.get("flag")); Boolean flag = Boolean.valueOf(trueForGroup.get("flag"));
String mname = trueForGroup.get("mname"); String mname = trueForGroup.get("mname");
return new RestResponse(flag,200,new StatusInfo(mname,mname)); return new RestResponse(flag, 200, new StatusInfo(mname, mname));
} else { } else {
throw new MyException("缺少必要参数"); throw new MyException("缺少必要参数");
} }
@ -829,7 +831,7 @@ public class GroupController {
String crypt = Md5.crypt(header); String crypt = Md5.crypt(header);
map.put("applicantId", userToken.getId()); map.put("applicantId", userToken.getId());
// 获取当前部门负责人 // 获取当前部门负责人
List<UserByPort> departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey,token); List<UserByPort> departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userkey, token);
// 部门负责人id // 部门负责人id
StringBuilder departmentHeadId = new StringBuilder(); StringBuilder departmentHeadId = new StringBuilder();
// 部门负责人企业微信user // 部门负责人企业微信user
@ -877,8 +879,8 @@ public class GroupController {
Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity")); Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity"));
Map<String, String> trueForGroup = isTrueForGroup(gid, quantity, depositoryIdList); Map<String, String> trueForGroup = isTrueForGroup(gid, quantity, depositoryIdList);
boolean flag = Boolean.parseBoolean(trueForGroup.get("flag")); boolean flag = Boolean.parseBoolean(trueForGroup.get("flag"));
if(!flag){ if (!flag) {
return new RestResponse("", 666, new StatusInfo("仓库中"+trueForGroup.get("mname")+"库存不足","仓库中"+trueForGroup.get("mname")+"库存不足" )); return new RestResponse("", 666, new StatusInfo("仓库中" + trueForGroup.get("mname") + "库存不足", "仓库中" + trueForGroup.get("mname") + "库存不足"));
} }
map.put("gid", gid); map.put("gid", gid);
List<GroupInfo> groupInfoByGid = groupService.findGroupInfoByGid(gid); List<GroupInfo> groupInfoByGid = groupService.findGroupInfoByGid(gid);
@ -899,8 +901,8 @@ public class GroupController {
Map<String, String> trueForGroup = isTrueForGroup(temp, quantity, depositoryIdList); Map<String, String> trueForGroup = isTrueForGroup(temp, quantity, depositoryIdList);
boolean flag = Boolean.parseBoolean(trueForGroup.get("flag")); boolean flag = Boolean.parseBoolean(trueForGroup.get("flag"));
if(!flag){ if (!flag) {
return new RestResponse("", 666, new StatusInfo("仓库中"+trueForGroup.get("mname")+"库存不足","仓库中"+trueForGroup.get("mname")+"库存不足" )); return new RestResponse("", 666, new StatusInfo("仓库中" + trueForGroup.get("mname") + "库存不足", "仓库中" + trueForGroup.get("mname") + "库存不足"));
} }
List<GroupInfo> groupInfoByGid = groupService.findGroupInfoByGid(temp); List<GroupInfo> groupInfoByGid = groupService.findGroupInfoByGid(temp);
if (groupInfoByGid != null) { if (groupInfoByGid != null) {
@ -933,7 +935,7 @@ public class GroupController {
map.put("adminorgId", userToken.getMaindeparment()); map.put("adminorgId", userToken.getMaindeparment());
} }
try { try {
integer += groupService.insertApplicationOutRecord(map, userToken,userkey,token); // 插入主订单 integer += groupService.insertApplicationOutRecord(map, userToken, userkey, token); // 插入主订单
} catch (Exception e) { } catch (Exception e) {
return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage())); return new RestResponse("", 666, new StatusInfo("出库失败", e.getMessage()));
} }
@ -948,17 +950,16 @@ public class GroupController {
QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("sp_no", sp_no);
QyWxApprovalMap.put("mainId", id.toString()); QyWxApprovalMap.put("mainId", id.toString());
QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList"));
redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap);
// 设置过期为7天 // 设置过期为7天
redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS);
}); });
return CrudUtil.insertHandle(integer, result); return CrudUtil.insertHandle(integer, result);
} }
Map<String, String> isTrueForGroup(Integer gid, Integer quantity, List<Integer> depositoryIdList) {
Map<String,String> isTrueForGroup(Integer gid,Integer quantity,List<Integer> depositoryIdList){
List<GroupInfo> groupInfoByGid = groupService.findGroupInfoByGid(gid); List<GroupInfo> groupInfoByGid = groupService.findGroupInfoByGid(gid);
boolean flag = true; boolean flag = true;
String mname = ""; String mname = "";
@ -971,9 +972,11 @@ public class GroupController {
boolean flagForInventory = false; boolean flagForInventory = false;
// 获取该物料在各仓库的库存 // 获取该物料在各仓库的库存
List<Double> inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList); Map<Integer, Double> inventoryByMidAndDepository = materialService.findInventoryByGroupInfoAndDepository(groupInfo, depositoryIdList);
for (Double integer : inventoryByMidAndDepository) { // 获取key的迭代器
if (integer >= totalQuantity) { for (Integer depositoryId : inventoryByMidAndDepository.keySet()) {
Double value = inventoryByMidAndDepository.get(depositoryId);
if (value >= totalQuantity) {
flagForInventory = true; flagForInventory = true;
break; break;
} }
@ -985,9 +988,9 @@ public class GroupController {
} }
mname = groupInfo.getMname(); mname = groupInfo.getMname();
} }
Map<String,String> result = new HashMap<>(); Map<String, String> result = new HashMap<>();
result.put("flag", Boolean.toString(flag)); result.put("flag", Boolean.toString(flag));
result.put("mname",mname); result.put("mname", mname);
return result; return result;
} }
} }

7
src/main/java/com/dreamchaser/depository_manage/entity/GroupInfo.java

@ -2,6 +2,8 @@ package com.dreamchaser.depository_manage.entity;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* 用于组合信息的封装 * 用于组合信息的封装
*/ */
@ -104,4 +106,9 @@ public class GroupInfo {
* 用于展示的计量单位 * 用于展示的计量单位
*/ */
private String showUnit; private String showUnit;
/**
* 用于展示符合库存数量的仓库id
*/
private List<Depository> satisfyDepositoryList;
} }

2
src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java

@ -157,7 +157,7 @@ public interface MaterialService {
* @param depositoryList 待查询的仓库 * @param depositoryList 待查询的仓库
* @return * @return
*/ */
List<Double> findInventoryByGroupInfoAndDepository(GroupInfo groupInfo, List<Integer> depositoryList); Map<Integer,Double> findInventoryByGroupInfoAndDepository(GroupInfo groupInfo, List<Integer> depositoryList);
/** /**
* 根据物料id获取其在对应仓库中的库存数 * 根据物料id获取其在对应仓库中的库存数

79
src/main/java/com/dreamchaser/depository_manage/service/impl/GroupServiceImpl.java

@ -132,13 +132,13 @@ public class GroupServiceImpl implements GroupService {
} else { } else {
groupInfo.setShowUnit(groupInfo.getUnit()); groupInfo.setShowUnit(groupInfo.getUnit());
} }
if(groupInfo.getVersion() == null){ if (groupInfo.getVersion() == null) {
groupInfo.setVersion(""); groupInfo.setVersion("");
} }
if(groupInfo.getBrand() == null){ if (groupInfo.getBrand() == null) {
groupInfo.setBrand(""); groupInfo.setBrand("");
} }
if(groupInfo.getCreateTime() != null){ if (groupInfo.getCreateTime() != null) {
groupInfo.setShowCreateTime(DateUtil.TimeStampToDateTime(groupInfo.getCreateTime())); groupInfo.setShowCreateTime(DateUtil.TimeStampToDateTime(groupInfo.getCreateTime()));
} }
} }
@ -579,13 +579,14 @@ public class GroupServiceImpl implements GroupService {
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Integer insertApplicationOutRecord(Map<String, Object> map, UserByPort userToken,String userKey,String token) { public Integer insertApplicationOutRecord(Map<String, Object> map, UserByPort userToken, String userKey, String token) {
// 用于存储出库数据 // 用于存储出库数据
Map<String, Object> paramForOut = new HashMap<>(); Map<String, Object> paramForOut = new HashMap<>();
paramForOut.put("departmenthead", map.get("departmenthead")); paramForOut.put("departmenthead", map.get("departmenthead"));
paramForOut.put("applicantId", userToken.getId()); paramForOut.put("applicantId", userToken.getId());
paramForOut.put("createUid", userToken.getId()); paramForOut.put("createUid", userToken.getId());
// 获取当前提交数 // 获取当前提交数
List<String> params = (List<String>) map.get("params"); List<String> params = (List<String>) map.get("params");
@ -603,6 +604,14 @@ public class GroupServiceImpl implements GroupService {
// 获取要出库组合的具体信息 // 获取要出库组合的具体信息
List<GroupInfo> groupInfoByGid = groupMapper.findGroupInfoByGid(gid); List<GroupInfo> groupInfoByGid = groupMapper.findGroupInfoByGid(gid);
// 用于统计出库物料总数
double quantityForTotal = 0;
// 用于统计出库物料金额总数
double priceForTotal = 0;
List<Integer> depositoryIdList = new ArrayList<>();
// 获取当前部门所拥有的仓库 // 获取当前部门所拥有的仓库
List<Depository> depositoryByAdminorg = depositoryMapper.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); List<Depository> depositoryByAdminorg = depositoryMapper.findDepositoryByAdminorg(userToken.getMaindeparment().toString());
@ -610,7 +619,6 @@ public class GroupServiceImpl implements GroupService {
List<RoleAndDepository> depositoryAndRole = roleMapper.findDepositoryAndRole(userToken.getId()); List<RoleAndDepository> depositoryAndRole = roleMapper.findDepositoryAndRole(userToken.getId());
depositoryAndRole.addAll(roleMapper.findDepositoryAndRole(userToken.getPosition())); depositoryAndRole.addAll(roleMapper.findDepositoryAndRole(userToken.getPosition()));
List<Integer> depositoryIdList = new ArrayList<>();
for (Depository depository : depositoryByAdminorg for (Depository depository : depositoryByAdminorg
) { ) {
depositoryIdList.add(depository.getId()); depositoryIdList.add(depository.getId());
@ -621,11 +629,27 @@ public class GroupServiceImpl implements GroupService {
depositoryIdList.add(rad.getDepositoryId()); depositoryIdList.add(rad.getDepositoryId());
} }
} }
// 用于统计出库物料总数
double quantityForTotal = 0;
// 用于统计出库物料金额总数 // 定义是否选择的仓库(默认没有选择)
double priceForTotal = 0; boolean flagForSelectDepository = false;
Object depositoryIdForSelect = map.get("depositoryId");
if (depositoryIdForSelect == null || "".equals(depositoryIdForSelect.toString())) {
paramForOut.put("flagForOpenDepository", 1);
map.remove("depositoryId");
} else {
paramForOut.put("flagForOpenDepository", 2);
paramForOut.put("depositoryId", depositoryIdForSelect);
if (depositoryIdList.contains(ObjectFormatUtil.toInteger(depositoryIdForSelect))) {
paramForOut.put("flagForOpenDepository", 1);
flagForSelectDepository = true;
}else{
depositoryIdList = new ArrayList<>();
depositoryIdList.add(ObjectFormatUtil.toInteger(depositoryIdForSelect));
}
}
// 循环遍历当前部门所拥有的仓库 // 循环遍历当前部门所拥有的仓库
for (Integer depositoryId : for (Integer depositoryId :
@ -646,7 +670,9 @@ public class GroupServiceImpl implements GroupService {
if (inventory.size() > 0) { if (inventory.size() > 0) {
quantityForTotal += quantityForGroup * groupInfo.getQuantity(); quantityForTotal += quantityForGroup * groupInfo.getQuantity();
priceForTotal += inventory.get(0).getPrice() * 100 * quantityForGroup; priceForTotal += inventory.get(0).getPrice() * 100 * quantityForGroup;
paramForOut.put("depositoryId", depositoryId); if (!flagForSelectDepository) {
paramForOut.put("depositoryId", depositoryId);
}
break; break;
} }
} else { } else {
@ -663,12 +689,16 @@ public class GroupServiceImpl implements GroupService {
if (inventory.size() > 0) { if (inventory.size() > 0) {
quantityForTotal += quantityForGroup * groupInfo.getQuantity(); quantityForTotal += quantityForGroup * groupInfo.getQuantity();
priceForTotal += inventory.get(0).getPrice() * 100 / scale * quantityForGroup; priceForTotal += inventory.get(0).getPrice() * 100 / scale * quantityForGroup;
paramForOut.put("depositoryId", depositoryId); if (!flagForSelectDepository) {
paramForOut.put("depositoryId", depositoryId);
}
break; break;
} }
} }
} }
} }
if (map.containsKey("flagForAgency")) { if (map.containsKey("flagForAgency")) {
// 如果开启了代领 // 如果开启了代领
paramForOut.put("applicantId", map.get("agencyUid")); paramForOut.put("applicantId", map.get("agencyUid"));
@ -676,7 +706,6 @@ public class GroupServiceImpl implements GroupService {
} else { } else {
paramForOut.put("flagForAgency", 2); paramForOut.put("flagForAgency", 2);
} }
paramForOut.put("flagForOpenDepository",1);
paramForOut.put("quantity", quantityForTotal * 100); paramForOut.put("quantity", quantityForTotal * 100);
paramForOut.put("price", priceForTotal); paramForOut.put("price", priceForTotal);
paramForOut.put("applicantTime", System.currentTimeMillis()); paramForOut.put("applicantTime", System.currentTimeMillis());
@ -684,7 +713,7 @@ public class GroupServiceImpl implements GroupService {
paramForOut.put("state", "待部门负责人审核"); paramForOut.put("state", "待部门负责人审核");
paramForOut.put("applyRemark", map.get("applyRemark")); paramForOut.put("applyRemark", map.get("applyRemark"));
// 获取当前部门名称 // 获取当前部门名称
Administration company = LinkInterfaceUtil.getCompany(userToken.getMaindeparment(), userKey,token); Administration company = LinkInterfaceUtil.getCompany(userToken.getMaindeparment(), userKey, token);
// 构造出库订单编码 // 构造出库订单编码
String code = createOutCode("outOrderNumber", company.getName()); String code = createOutCode("outOrderNumber", company.getName());
paramForOut.put("code", code); paramForOut.put("code", code);
@ -717,13 +746,13 @@ public class GroupServiceImpl implements GroupService {
priceForTotal += inventory.get(0).getPrice() * 100 * quantityForGroup; priceForTotal += inventory.get(0).getPrice() * 100 * quantityForGroup;
} }
if (map.containsKey("constructionUnitId" + temp)) { if (map.containsKey("constructionUnitId" + temp)) {
String constructionUnitId = map.get("constructionUnitId"+ temp).toString(); String constructionUnitId = map.get("constructionUnitId" + temp).toString();
if ("".equals(constructionUnitId)) { if ("".equals(constructionUnitId)) {
map.remove("constructionUnitId"+ temp); map.remove("constructionUnitId" + temp);
} }
} }
if (map.containsKey("adminorgId"+ temp)) { if (map.containsKey("adminorgId" + temp)) {
String adminorgId = map.get("adminorgId"+ temp).toString(); String adminorgId = map.get("adminorgId" + temp).toString();
if ("".equals(adminorgId)) { if ("".equals(adminorgId)) {
map.put("adminorgId", userToken.getMaindeparment()); map.put("adminorgId", userToken.getMaindeparment());
} }
@ -746,7 +775,7 @@ public class GroupServiceImpl implements GroupService {
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public Integer insertApplicationInRecord(Map<String, Object> map, UserByPort userToken, String userAgent,String userKey,String token) { public Integer insertApplicationInRecord(Map<String, Object> map, UserByPort userToken, String userAgent, String userKey, String token) {
// 获取当前提交数 // 获取当前提交数
@ -826,29 +855,29 @@ public class GroupServiceImpl implements GroupService {
// 获取当前类型的管理员 // 获取当前类型的管理员
Map<String, Object> paramForMtManagers = new HashMap<>(); Map<String, Object> paramForMtManagers = new HashMap<>();
paramForMtManagers.put("mtid",next); paramForMtManagers.put("mtid", next);
List<RoleAndMaterialType> materialTypeIdForIn = roleMapper.findRoleAndMaterialTypeByCondition(paramForMtManagers); List<RoleAndMaterialType> materialTypeIdForIn = roleMapper.findRoleAndMaterialTypeByCondition(paramForMtManagers);
// 用于存储当前仓库的管理员企业微信userId // 用于存储当前仓库的管理员企业微信userId
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (RoleAndMaterialType mt : materialTypeIdForIn for (RoleAndMaterialType mt : materialTypeIdForIn
) { ) {
// 获取管理员数据 // 获取管理员数据
UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUid(), userKey,token); UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUid(), userKey, token);
String workwechat = userByPort.getWorkwechat(); String workwechat = userByPort.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) { if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat(); workwechat = userByPort.getWechat();
} }
sb.append(workwechat).append(","); sb.append(workwechat).append(",");
} }
JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(userAgent, userToken, integerList, sb.toString(),userKey,token); JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(userAgent, userToken, integerList, sb.toString(), userKey, token);
String sp_no = jsonObject.getString("sp_no"); String sp_no = jsonObject.getString("sp_no");
Map<String, Object> QyWxApprovalMap = new HashMap<>(); Map<String, Object> QyWxApprovalMap = new HashMap<>();
QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("sp_no", sp_no);
QyWxApprovalMap.put("mainId", integerList.toString()); QyWxApprovalMap.put("mainId", integerList.toString());
QyWxApprovalMap.put("mainGidId", showRecordIds.toString()); QyWxApprovalMap.put("mainGidId", showRecordIds.toString());
redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_" + sp_no, QyWxApprovalMap);
// 设置过期为7天 // 设置过期为7天
redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS); redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_" + sp_no, 7, TimeUnit.DAYS);
} }
@ -996,7 +1025,7 @@ public class GroupServiceImpl implements GroupService {
/** /**
* 用于插入子出库订单 * 用于插入子出库订单
* *
* @param map 申请条件 * @param map 申请条件
* @param code 出库单号 * @param code 出库单号
* @param parentId 主单号 * @param parentId 主单号
* @param gid 组合id * @param gid 组合id
@ -1004,7 +1033,7 @@ public class GroupServiceImpl implements GroupService {
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Integer insertApplicationOutMinRecord(Map<String,Object> map, String code, Object parentId, Integer gid, Integer quantityForGroup, List<Integer> depositoryIdList) { public Integer insertApplicationOutMinRecord(Map<String, Object> map, String code, Object parentId, Integer gid, Integer quantityForGroup, List<Integer> depositoryIdList) {
// 用于存储申请数 // 用于存储申请数
Integer result = 0; Integer result = 0;

19
src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java

@ -507,9 +507,11 @@ public class MaterialServiceImpl implements MaterialService {
* @return * @return
*/ */
@Override @Override
public List<Double> findInventoryByGroupInfoAndDepository(GroupInfo groupInfo, List<Integer> depositoryList) { public Map<Integer, Double> findInventoryByGroupInfoAndDepository(GroupInfo groupInfo, List<Integer> depositoryList) {
// 用于存储各仓库的库存 // 用于存储各仓库的库存
List<Double> result = new ArrayList<>(); Map<Integer, Double> resultMap = new HashMap<>();
// 获取当前物料在组合中的单位 // 获取当前物料在组合中的单位
String unit = groupInfo.getUnit(); String unit = groupInfo.getUnit();
@ -521,10 +523,11 @@ public class MaterialServiceImpl implements MaterialService {
for (Integer depositoryId : depositoryList) { for (Integer depositoryId : depositoryList) {
map.put("did", depositoryId); map.put("did", depositoryId);
Inventory inventory = materialMapper.findInventoryByMidAndDid(map); Inventory inventory = materialMapper.findInventoryByMidAndDid(map);
if (inventory != null) { if (inventory != null) {
result.add((double) inventory.getQuantity() / 100); resultMap.put(depositoryId, (inventory.getQuantity() / 100.0));
} else { } else {
result.add(0.0); resultMap.put(depositoryId, 0.0);
} }
} }
} else { } else {
@ -532,8 +535,6 @@ public class MaterialServiceImpl implements MaterialService {
map.put("newUnit", unit); map.put("newUnit", unit);
// 获取当前拆单单位 // 获取当前拆单单位
SplitInfo splitInfo = splitUnitMapper.findSplitInfoByMidAndUnit(map); SplitInfo splitInfo = splitUnitMapper.findSplitInfoByMidAndUnit(map);
// 获取当前拆单单位与基础单位的进制
int scale = splitUnitService.findSplitInfoScaleQuantity(splitInfo, -1);
// 用户获取对应拆单库存记录 // 用户获取对应拆单库存记录
Map<String, Object> paramForSplitInventory = new HashMap<>(); Map<String, Object> paramForSplitInventory = new HashMap<>();
@ -550,14 +551,12 @@ public class MaterialServiceImpl implements MaterialService {
materialAndPlace.setId(materialAndPlaceForView.getId()); materialAndPlace.setId(materialAndPlaceForView.getId());
quantity += splitUnitService.findAllInventoryForSplitInfo(-1, materialAndPlace, splitInfo.getId(), 0, true); quantity += splitUnitService.findAllInventoryForSplitInfo(-1, materialAndPlace, splitInfo.getId(), 0, true);
} }
resultMap.put(depositoryId, quantity);
result.add(quantity);
} }
} }
return result; return resultMap;
} }
/** /**

150
src/main/resources/templates/pages/application/application-out.html

@ -298,6 +298,15 @@
required lay-verify="number" placeholder="请填写组合数量"/> required lay-verify="number" placeholder="请填写组合数量"/>
</div> </div>
</div> </div>
<div class="layui-form-item" id="depositoryIdForGroup"
th:style="'display:'+${display}">
<label class="layui-form-label">仓库:</label>
<div class="layui-input-block">
<select name="depositoryId" id="showDepositoryForGroup">
</select>
</div>
</div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">备注说明:</label> <label class="layui-form-label">备注说明:</label>
<div class="layui-input-block"> <div class="layui-input-block">
@ -765,6 +774,15 @@
<input type="number" name=` + "quantity" + NewIdNumber + ` class="layui-input" id=` + "quantityForGroup" + NewIdNumber + ` <input type="number" name=` + "quantity" + NewIdNumber + ` class="layui-input" id=` + "quantityForGroup" + NewIdNumber + `
required lay-verify="number" onblur="groupQuantityIsTrue(this)" placeholder="请填写组合数量"/> required lay-verify="number" onblur="groupQuantityIsTrue(this)" placeholder="请填写组合数量"/>
</div> </div>
</div>
<div class="layui-form-item" id=` + "depositoryIdForGroup" + NewIdNumber + `
style="display:` + depositoryDisplay + `">
<label class="layui-form-label">仓库:</label>
<div class="layui-input-block">
<select name=` + "depositoryId" + NewIdNumber + ` id=` + "showDepositoryForGroup" + NewIdNumber + `>
</select>
</div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">备注说明:</label> <label class="layui-form-label">备注说明:</label>
@ -1049,9 +1067,21 @@
// 赋值给gname // 赋值给gname
gnameItem.value = data[0].gname; gnameItem.value = data[0].gname;
gidItem.value = data[0].gid; gidItem.value = data[0].gid;
let satisfyDepositoryList = data[0].satisfyDepositoryList;
if (depositoryDisplay !== "none") {
var idNumber = gidItem.name.split("gid")[1];
$("#showDepositoryForGroup" + idNumber).empty();
if (satisfyDepositoryList !== null) {
for (let i = 0; i < satisfyDepositoryList.length; i++) {
$("#showDepositoryForGroup" + idNumber).append(new Option(satisfyDepositoryList[i].dname, satisfyDepositoryList[i].id));
}
}
form.render();
}
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
CoverpageForGroup(pid, data[i]); CoverpageForGroup(pid, data[i]);
} }
element.init(); element.init();
layer.close(loading2) layer.close(loading2)
} }
@ -1249,6 +1279,17 @@
} }
// 赋值给gname // 赋值给gname
gcodeItem.value = data[0].gcode; gcodeItem.value = data[0].gcode;
let satisfyDepositoryList = data[0].satisfyDepositoryList;
if (depositoryDisplay !== "none") {
var idNumber = gidItem.name.split("gid")[1];
$("#showDepositoryForGroup" + idNumber).empty();
if (satisfyDepositoryList !== null) {
for (let i = 0; i < satisfyDepositoryList.length; i++) {
$("#showDepositoryForGroup" + idNumber).append(new Option(satisfyDepositoryList[i].dname, satisfyDepositoryList[i].id));
}
}
form.render();
}
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
CoverpageForGroup(pid, data[i]); CoverpageForGroup(pid, data[i]);
} }
@ -1339,6 +1380,17 @@
// 赋值给gname // 赋值给gname
gidItem.value = data[0].gid; gidItem.value = data[0].gid;
gcodeItem.value = data[0].gcode; gcodeItem.value = data[0].gcode;
let satisfyDepositoryList = data[0].satisfyDepositoryList;
if (depositoryDisplay !== "none") {
var idNumber = gidItem.name.split("gid")[1];
$("#showDepositoryForGroup" + idNumber).empty();
if (satisfyDepositoryList !== null) {
for (let i = 0; i < satisfyDepositoryList.length; i++) {
$("#showDepositoryForGroup" + idNumber).append(new Option(satisfyDepositoryList[i].dname, satisfyDepositoryList[i].id));
}
}
form.render();
}
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
CoverpageForGroup(pid, data[i]); CoverpageForGroup(pid, data[i]);
} }
@ -1348,7 +1400,8 @@
} }
} }
}) })
} else { }
else {
gcodeItem.value = ''; gcodeItem.value = '';
gidItem.value = ''; gidItem.value = '';
let childNodes = parent.childNodes; let childNodes = parent.childNodes;
@ -1357,7 +1410,6 @@
childNodes[i].remove() childNodes[i].remove()
} }
} }
layer.close(loading2);
} }
}; };
@ -1727,6 +1779,9 @@
var req = {}; var req = {};
req.gid = gid; req.gid = gid;
req.quantity = val; req.quantity = val;
if (depositoryDisplay !== "none") {
req.depositoryId = $("#showDepositoryForGroup" + id).val();
}
let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0});
$.ajax({ $.ajax({
url: "/group/groupQuantityIsTrue", url: "/group/groupQuantityIsTrue",
@ -1763,53 +1818,64 @@
let unit = ""; let unit = "";
let mcode = ""; let mcode = "";
let depositoryId = "-1"; let depositoryId = "-1";
// 用于标志是否为物料出库(默认为物料)
let flag = true;
if (id.indexOf('unit') !== -1) { if (id.indexOf('unit') !== -1) {
unit = data.value; unit = data.value;
} else { } else if (!(id.indexOf('ForGroup'))) {
// 获取当前选中的仓库id // 获取当前选中的仓库id是在物料出库下
depositoryId = data.value; depositoryId = data.value;
idNum = id.split('showDepository')[1]; idNum = id.split('showDepository')[1];
unit = $("#unit" + idNum).val(); unit = $("#unit" + idNum).val();
} else if (id.indexOf("ForGroup")) {
depositoryId = data.value;
idNum = id.split('showDepositoryForGroup')[1];
flag = false;
} }
mcode = $("#code" + idNum).val(); if (flag) {
if (mcode === "" || mcode === undefined || mcode === null) { mcode = $("#code" + idNum).val();
layer.msg("请输入物料的正确编码!", {icon: 0, time: 500}, function () { if (mcode === "" || mcode === undefined || mcode === null) {
$("#quantity" + idNum).val("") layer.msg("请输入物料的正确编码!", {icon: 0, time: 1000}, function () {
}); $("#quantity" + idNum).val("")
} else {
let val = $("#quantity" + idNum).val();
if (val !== null && val !== undefined && val !== '') {
var req = {};
req.mcode = mcode;
req.quantity = val;
req.unit = unit;
req.placeId = -1;
if (depositoryId !== "-1") {
req.depositoryId = depositoryId;
}
let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0});
$.ajax({
url: "/material/MaterialQuantityIsTrue",
type: "post",
data: JSON.stringify(req),
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (res) {
var flag = res.data;
if (!flag) { // 如果当前数目不合适
layer.msg("当前单个仓库中物料数量不足", {icon: 0, time: 500}, function () {
layer.close(loading2);
$("#quantity" + idNum).val("");
},
);
} else {
layer.close(loading2)
}
}
}); });
} else {
let val = $("#quantity" + idNum).val();
if (val !== null && val !== undefined && val !== '') {
var req = {};
req.mcode = mcode;
req.quantity = val;
req.unit = unit;
req.placeId = -1;
if (depositoryId !== "-1") {
req.depositoryId = depositoryId;
}
let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0});
$.ajax({
url: "/material/MaterialQuantityIsTrue",
type: "post",
data: JSON.stringify(req),
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (res) {
var flag = res.data;
if (!flag) { // 如果当前数目不合适
layer.msg("当前单个仓库中物料数量不足", {icon: 0, time: 500}, function () {
layer.close(loading2);
$("#quantity" + idNum).val("");
},
);
} else {
layer.close(loading2)
}
}
});
}
} }
} else {
let elem = {};
elem.id = "quantityForGroup" + idNum;
groupQuantityIsTrue(elem)
} }
@ -1820,7 +1886,7 @@
let id = obj.id; let id = obj.id;
if (id.indexOf("ForGroup") !== -1) { if (id.indexOf("ForGroup") !== -1) {
id = "ForGroup"; id = "ForGroup";
}else{ } else {
id = ""; id = "";
} }
let name = obj.value; let name = obj.value;

Loading…
Cancel
Save