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

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

@ -132,13 +132,13 @@ public class GroupServiceImpl implements GroupService {
} else {
groupInfo.setShowUnit(groupInfo.getUnit());
}
if(groupInfo.getVersion() == null){
if (groupInfo.getVersion() == null) {
groupInfo.setVersion("");
}
if(groupInfo.getBrand() == null){
if (groupInfo.getBrand() == null) {
groupInfo.setBrand("");
}
if(groupInfo.getCreateTime() != null){
if (groupInfo.getCreateTime() != null) {
groupInfo.setShowCreateTime(DateUtil.TimeStampToDateTime(groupInfo.getCreateTime()));
}
}
@ -579,13 +579,14 @@ public class GroupServiceImpl implements GroupService {
*/
@Override
@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<>();
paramForOut.put("departmenthead", map.get("departmenthead"));
paramForOut.put("applicantId", userToken.getId());
paramForOut.put("createUid", userToken.getId());
// 获取当前提交数
List<String> params = (List<String>) map.get("params");
@ -603,6 +604,14 @@ public class GroupServiceImpl implements GroupService {
// 获取要出库组合的具体信息
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());
@ -610,7 +619,6 @@ public class GroupServiceImpl implements GroupService {
List<RoleAndDepository> depositoryAndRole = roleMapper.findDepositoryAndRole(userToken.getId());
depositoryAndRole.addAll(roleMapper.findDepositoryAndRole(userToken.getPosition()));
List<Integer> depositoryIdList = new ArrayList<>();
for (Depository depository : depositoryByAdminorg
) {
depositoryIdList.add(depository.getId());
@ -621,11 +629,27 @@ public class GroupServiceImpl implements GroupService {
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 :
@ -646,7 +670,9 @@ public class GroupServiceImpl implements GroupService {
if (inventory.size() > 0) {
quantityForTotal += quantityForGroup * groupInfo.getQuantity();
priceForTotal += inventory.get(0).getPrice() * 100 * quantityForGroup;
paramForOut.put("depositoryId", depositoryId);
if (!flagForSelectDepository) {
paramForOut.put("depositoryId", depositoryId);
}
break;
}
} else {
@ -663,12 +689,16 @@ public class GroupServiceImpl implements GroupService {
if (inventory.size() > 0) {
quantityForTotal += quantityForGroup * groupInfo.getQuantity();
priceForTotal += inventory.get(0).getPrice() * 100 / scale * quantityForGroup;
paramForOut.put("depositoryId", depositoryId);
if (!flagForSelectDepository) {
paramForOut.put("depositoryId", depositoryId);
}
break;
}
}
}
}
if (map.containsKey("flagForAgency")) {
// 如果开启了代领
paramForOut.put("applicantId", map.get("agencyUid"));
@ -676,7 +706,6 @@ public class GroupServiceImpl implements GroupService {
} else {
paramForOut.put("flagForAgency", 2);
}
paramForOut.put("flagForOpenDepository",1);
paramForOut.put("quantity", quantityForTotal * 100);
paramForOut.put("price", priceForTotal);
paramForOut.put("applicantTime", System.currentTimeMillis());
@ -684,7 +713,7 @@ public class GroupServiceImpl implements GroupService {
paramForOut.put("state", "待部门负责人审核");
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());
paramForOut.put("code", code);
@ -717,13 +746,13 @@ public class GroupServiceImpl implements GroupService {
priceForTotal += inventory.get(0).getPrice() * 100 * quantityForGroup;
}
if (map.containsKey("constructionUnitId" + temp)) {
String constructionUnitId = map.get("constructionUnitId"+ temp).toString();
String constructionUnitId = map.get("constructionUnitId" + temp).toString();
if ("".equals(constructionUnitId)) {
map.remove("constructionUnitId"+ temp);
map.remove("constructionUnitId" + temp);
}
}
if (map.containsKey("adminorgId"+ temp)) {
String adminorgId = map.get("adminorgId"+ temp).toString();
if (map.containsKey("adminorgId" + temp)) {
String adminorgId = map.get("adminorgId" + temp).toString();
if ("".equals(adminorgId)) {
map.put("adminorgId", userToken.getMaindeparment());
}
@ -746,7 +775,7 @@ public class GroupServiceImpl implements GroupService {
*/
@Transactional(rollbackFor = Exception.class)
@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<>();
paramForMtManagers.put("mtid",next);
paramForMtManagers.put("mtid", next);
List<RoleAndMaterialType> materialTypeIdForIn = roleMapper.findRoleAndMaterialTypeByCondition(paramForMtManagers);
// 用于存储当前仓库的管理员企业微信userId
StringBuilder sb = new StringBuilder();
for (RoleAndMaterialType mt : materialTypeIdForIn
) {
// 获取管理员数据
UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUid(), userKey,token);
UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUid(), userKey, token);
String workwechat = userByPort.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat();
}
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");
Map<String, Object> QyWxApprovalMap = new HashMap<>();
QyWxApprovalMap.put("sp_no", sp_no);
QyWxApprovalMap.put("mainId", integerList.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天
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 parentId 主单号
* @param gid 组合id
@ -1004,7 +1033,7 @@ public class GroupServiceImpl implements GroupService {
* @return
*/
@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;

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

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

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

@ -298,6 +298,15 @@
required lay-verify="number" placeholder="请填写组合数量"/>
</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">
<label class="layui-form-label">备注说明:</label>
<div class="layui-input-block">
@ -765,6 +774,15 @@
<input type="number" name=` + "quantity" + NewIdNumber + ` class="layui-input" id=` + "quantityForGroup" + NewIdNumber + `
required lay-verify="number" onblur="groupQuantityIsTrue(this)" placeholder="请填写组合数量"/>
</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 class="layui-form-item">
<label class="layui-form-label">备注说明:</label>
@ -1049,9 +1067,21 @@
// 赋值给gname
gnameItem.value = data[0].gname;
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++) {
CoverpageForGroup(pid, data[i]);
}
element.init();
layer.close(loading2)
}
@ -1249,6 +1279,17 @@
}
// 赋值给gname
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++) {
CoverpageForGroup(pid, data[i]);
}
@ -1339,6 +1380,17 @@
// 赋值给gname
gidItem.value = data[0].gid;
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++) {
CoverpageForGroup(pid, data[i]);
}
@ -1348,7 +1400,8 @@
}
}
})
} else {
}
else {
gcodeItem.value = '';
gidItem.value = '';
let childNodes = parent.childNodes;
@ -1357,7 +1410,6 @@
childNodes[i].remove()
}
}
layer.close(loading2);
}
};
@ -1727,6 +1779,9 @@
var req = {};
req.gid = gid;
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});
$.ajax({
url: "/group/groupQuantityIsTrue",
@ -1763,53 +1818,64 @@
let unit = "";
let mcode = "";
let depositoryId = "-1";
// 用于标志是否为物料出库(默认为物料)
let flag = true;
if (id.indexOf('unit') !== -1) {
unit = data.value;
} else {
// 获取当前选中的仓库id
} else if (!(id.indexOf('ForGroup'))) {
// 获取当前选中的仓库id是在物料出库下
depositoryId = data.value;
idNum = id.split('showDepository')[1];
unit = $("#unit" + idNum).val();
} else if (id.indexOf("ForGroup")) {
depositoryId = data.value;
idNum = id.split('showDepositoryForGroup')[1];
flag = false;
}
mcode = $("#code" + idNum).val();
if (mcode === "" || mcode === undefined || mcode === null) {
layer.msg("请输入物料的正确编码!", {icon: 0, time: 500}, 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)
}
}
if (flag) {
mcode = $("#code" + idNum).val();
if (mcode === "" || mcode === undefined || mcode === null) {
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 elem = {};
elem.id = "quantityForGroup" + idNum;
groupQuantityIsTrue(elem)
}
@ -1820,7 +1886,7 @@
let id = obj.id;
if (id.indexOf("ForGroup") !== -1) {
id = "ForGroup";
}else{
} else {
id = "";
}
let name = obj.value;

Loading…
Cancel
Save