Browse Source

用于提交

lwx_dev
erdanergou 3 years ago
parent
commit
68951df83e
  1. 8
      src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java
  2. 48
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java
  3. 24
      src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java
  4. 27
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  5. 4
      src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java
  6. 12
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  7. 19
      src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java
  8. 6
      src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java
  9. 42
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  10. 81
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  11. 14
      src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java
  12. 16
      src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java
  13. 34
      src/main/java/com/dreamchaser/depository_manage/service/impl/StockTakingServiceImpl.java
  14. 4
      src/main/resources/application-test.yml
  15. 10
      src/main/resources/templates/pages/application/application-in.html
  16. 6
      src/main/resources/templates/pages/application/application-in_scanQrCode.html
  17. 10
      src/main/resources/templates/pages/application/application-out.html
  18. 6
      src/main/resources/templates/pages/application/application-out_back.html
  19. 10
      src/main/resources/templates/pages/application/application-transfer.html
  20. 25
      src/main/resources/templates/pages/depository/table-in.html
  21. 22
      src/main/resources/templates/pages/depository/table-out.html
  22. 30
      src/main/resources/templates/pages/depository/table-stock.html
  23. 30
      src/main/resources/templates/pages/group/group-add_back.html
  24. 10
      src/main/resources/templates/pages/material/material-add.html
  25. 2
      src/main/resources/templates/pages/materialBarCode/materialBarCode_out.html
  26. 21
      src/main/resources/templates/pages/split/split_add.html
  27. 271
      src/main/resources/templates/pages/split/split_edit.html
  28. 174
      src/test/java/com/dreamchaser/depository_manage/TestQywxSplitInventoryAll.java

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

@ -26,10 +26,10 @@ public class PortConfig {
// 接口地址
public static String external_url = "http://172.20.2.87:39168";
// public static String external_url = "http://127.0.0.1:39168";
public static String external_url_6666 = "http://172.20.2.87:6666";
// public static String external_url_6666 = "http://127.0.0.1:6666";
// public static String external_url = "http://172.20.2.87:39168";
public static String external_url = "http://127.0.0.1:39168";
// public static String external_url_6666 = "http://172.20.2.87:6666";
public static String external_url_6666 = "http://127.0.0.1:6666";
/**

48
src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java

@ -318,12 +318,12 @@ public class DepositoryRecordController {
List<UserByPort> departmentHeadByUsers = LinkInterfaceUtil.findDepartmentHeadByUser(userToken);
StringBuilder departmentHeadId = new StringBuilder();
StringBuilder departMentHeadQyWxName = new StringBuilder();
// for (int i = 0; i < departmentHeadByUsers.size(); i++) {
// departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
// departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
// }
departmentHeadId.append("78").append(",");
departMentHeadQyWxName.append("PangFuZhen").append(",");
for (int i = 0; i < departmentHeadByUsers.size(); i++) {
departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
}
// departmentHeadId.append("78").append(",");
// departMentHeadQyWxName.append("PangFuZhen").append(",");
map.put("departmenthead", departmentHeadId.toString());
List<Integer> params = (List<Integer>) map.get("params");
Integer integer = 0;
@ -718,12 +718,12 @@ public class DepositoryRecordController {
String crypt = Md5.crypt(header);
StringBuilder departmentHeadId = new StringBuilder();
StringBuilder departMentHeadQyWxName = new StringBuilder();
// for (int i = 0; i < departmentHeadByUsers.size(); i++) {
// departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
// departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
// }
departmentHeadId.append("78").append(",");
departMentHeadQyWxName.append("PangFuZhen").append(",");
for (int i = 0; i < departmentHeadByUsers.size(); i++) {
departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
}
// departmentHeadId.append("78").append(",");
// departMentHeadQyWxName.append("PangFuZhen").append(",");
map.put("departmenthead", departmentHeadId.toString());
map.put("departMentHeadQyWxName", departMentHeadQyWxName.toString());
List<Integer> params = (List<Integer>) map.get("params");
@ -959,12 +959,12 @@ public class DepositoryRecordController {
List<UserByPort> departmentHeadByUsers = LinkInterfaceUtil.findDepartmentHeadByUser(userToken);
StringBuilder departmentHeadId = new StringBuilder();
StringBuilder departMentHeadQyWxName = new StringBuilder();
// for (int i = 0; i < departmentHeadByUsers.size(); i++) {
// departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
// departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
// }
departmentHeadId.append("78").append(",");
departMentHeadQyWxName.append("PangFuZhen").append(",");
for (int i = 0; i < departmentHeadByUsers.size(); i++) {
departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
}
// departmentHeadId.append("78").append(",");
// departMentHeadQyWxName.append("PangFuZhen").append(",");
map.put("departmenthead", departmentHeadId.toString());
// 待出库物料id
Integer mid = ObjectFormatUtil.toInteger(map.get("iid"));
@ -1100,12 +1100,12 @@ public class DepositoryRecordController {
List<UserByPort> departmentHeadByUsers = LinkInterfaceUtil.findDepartmentHeadByUser(userToken);
StringBuilder departmentHeadId = new StringBuilder();
StringBuilder departMentHeadQyWxName = new StringBuilder();
// for (int i = 0; i < departmentHeadByUsers.size(); i++) {
// departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
// departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
// }
departmentHeadId.append("78").append(",");
departMentHeadQyWxName.append("PangFuZhen").append(",");
for (int i = 0; i < departmentHeadByUsers.size(); i++) {
departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
}
// departmentHeadId.append("78").append(",");
// departMentHeadQyWxName.append("PangFuZhen").append(",");
mainRecord.put("applicantId", userToken.getId());
mainRecord.put("applyRemark", "");
mainRecord.put("quantity", sumQuantity.toString());

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

@ -531,12 +531,12 @@ public class GroupController {
StringBuilder departmentHeadId = new StringBuilder();
// 部门负责人企业微信user
StringBuilder departMentHeadQyWxName = new StringBuilder();
// for (int i = 0; i < departmentHeadByUsers.size(); i++) {
// departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
// departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
// }
departmentHeadId.append("78").append(",");
departMentHeadQyWxName.append("PangFuZhen").append(",");
for (int i = 0; i < departmentHeadByUsers.size(); i++) {
departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
}
// departmentHeadId.append("78").append(",");
// departMentHeadQyWxName.append("PangFuZhen").append(",");
map.put("departmenthead", departmentHeadId.toString());
// 获取当前提交数
List<String> params = (List<String>) map.get("params");
@ -685,12 +685,12 @@ public class GroupController {
StringBuilder departmentHeadId = new StringBuilder();
// 部门负责人企业微信user
StringBuilder departMentHeadQyWxName = new StringBuilder();
// for (int i = 0; i < departmentHeadByUsers.size(); i++) {
// departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
// departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
// }
departmentHeadId.append("78").append(",");
departMentHeadQyWxName.append("PangFuZhen").append(",");
for (int i = 0; i < departmentHeadByUsers.size(); i++) {
departmentHeadId.append(departmentHeadByUsers.get(i).getId()).append(",");
departMentHeadQyWxName.append(departmentHeadByUsers.get(i).getWorkwechat()+",");
}
// departmentHeadId.append("78").append(",");
// departMentHeadQyWxName.append("PangFuZhen").append(",");
map.put("departmenthead", departmentHeadId.toString());
// 执行结果

27
src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java

@ -415,6 +415,7 @@ public class MaterialController {
materialPByCondition = materialService.findMaterialPByCondition(param);
if (materialPByCondition.size() > 0) {
mp = materialPByCondition.get(0);
mp.setPrice(0.0);
mp.setMid(mp.getId());
paramByPrice.put("mcode", mp.getCode());
@ -613,7 +614,8 @@ public class MaterialController {
if ("-1".equals(unit)) {
// 如果是基础单位
for (InventoryP inventoryP : inventoryPList) {
if (quantity <= (inventoryP.getQuantity() - inventoryP.getNumberOfTemporary())) { // 如果当前数量合适则跳出循环
Integer integer = inventoryP.getShowQuantity().get(inventoryP.getBaseUnit());
if (quantity <= (integer - inventoryP.getNumberOfTemporary())) { // 如果当前数量合适则跳出循环
flag = true;
break;
}
@ -621,6 +623,7 @@ public class MaterialController {
} else {
// 如果是拆单单位
int saveQuantity = 0;
for (InventoryP inventoryP : inventoryPList) {
@ -630,8 +633,7 @@ public class MaterialController {
// 获取当前拆单记录
SplitInfo splitInfo = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfo);
// 获取最高级对应当前单位的数量
int saveQuantity = (inventoryP.getQuantity() - inventoryP.getNumberOfTemporary()) * splitUnitService.findSplitInfoScaleQuantity(splitInfo, -1);
// 获取当前物料所在库位
List<PlaceP> placeByMidAndDid = placeService.findPlaceByMidAndDid(inventoryP.getId(), depository.getId());
for (PlaceP p :
@ -639,20 +641,8 @@ public class MaterialController {
// 获取对应关系
MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(p.getId(), inventoryP.getId());
if (placeAndMaterialByMidAndPid != null) {
SplitInventory splitInventory = splitUnitService.findSplitInventoryByIidAndSid(placeAndMaterialByMidAndPid.getId(), splitInfo.getId());
if (splitInventory != null) {
saveQuantity += (splitInventory.getSaveQuantity() - splitInventory.getOutQuantity());
SplitInfo parentSplitInfo = splitUnitService.findSplitInfoById(splitInfo.getParentId());
while (parentSplitInfo != null) {
splitInventory = splitUnitService.findSplitInventoryByIidAndSid(placeAndMaterialByMidAndPid.getId(), parentSplitInfo.getId());
splitInfo = splitUnitService.findSplitInfoByParentId(parentSplitInfo.getId());
saveQuantity += (splitInventory.getSaveQuantity() - splitInventory.getOutQuantity()) * splitInfo.getQuantity();
parentSplitInfo = splitUnitService.findSplitInfoById(parentSplitInfo.getParentId());
}
}
}
int allInventoryForSplitInfo = splitUnitService.findAllInventoryForSplitInfo(-1, placeAndMaterialByMidAndPid, splitInfo.getId(), 0, true);
saveQuantity += allInventoryForSplitInfo;
}
if (quantity <= saveQuantity) { // 如果当前数量合适则跳出循环
@ -663,7 +653,8 @@ public class MaterialController {
}
}
}
} else {
}
else {
// 获取当前要转移的库位
Place place = placeService.findPlaceById(placeId);
if (Integer.compare(place.getId(), 0) != 0) {

4
src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java

@ -74,9 +74,9 @@ public class StockTakingController {
continue;
}
UserByPort departmentManager = PortConfig.findUserByPortByNumber(s);
// QyWxDepartmentManager.append(departmentManager.getWorkwechat()+",");
QyWxDepartmentManager.append(departmentManager.getWorkwechat()+",");
}
QyWxDepartmentManager.append("PangFuZhen").append(",");
// QyWxDepartmentManager.append("PangFuZhen").append(",");
map.put("state",3);
map.put("departmentManagerState",3);
map.remove("departmentManagerId");

12
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml

@ -331,6 +331,12 @@
<if test="applicantTime != null and applicantTime != ''">
and applicant_time >= #{applicantTime}
</if>
<if test="version != null and version != ''">
and mversion = #{version}
</if>
<if test="code != null and code != ''">
and mcode = #{code}
</if>
order by applicant_time desc
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
@ -404,6 +410,12 @@
<if test="istransfer != null and istransfer != ''">
and istransfer = #{istransfer}
</if>
<if test="version != null and version != ''">
and mversion = #{version}
</if>
<if test="code != null and code != ''">
and mcode = #{code}
</if>
<if test="placeId != null">
and placeId = #{placeId}
</if>

19
src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java

@ -186,6 +186,23 @@ public class InventoryP {
/**
* 基础单位
*/
private String baseUnit;
/**
* 默认单位
*/
private String defaultUnit;
/**
* 基础单位对应数目
*/
private Integer defaultQuantity;
public InventoryP(Integer id, Integer depositoryId, String mname, Integer quantity, Double price, String typeName) {
this.id = id;
this.mname = mname;
@ -215,8 +232,10 @@ public class InventoryP {
this.remark = inventory.getRemark(); // 备注
this.shelfLifeForCalc = inventory.getShelfLife(); //保质期,用于计算
this.numberOfTemporary = inventory.getNumberOfTemporary(); // 临时数量(出库数量)
this.baseUnit = inventory.getUnit(); // 基础单位
}
public InventoryP() {
}
}

6
src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java

@ -178,6 +178,11 @@ public class MaterialP {
*/
private List<SplitInfo> splitInfoList;
/**
* 基础单位
*/
private String baseUnit;
@ -211,6 +216,7 @@ public class MaterialP {
this.remark = material.getRemark(); // 备注
this.shelfLifeForCalc = material.getShelfLife(); //保质期,用于计算
this.typeName = material.getTypeName(); // 物料类型
this.baseUnit = material.getUnit(); // 基础单位
}
public MaterialP() {

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

@ -1586,9 +1586,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
for (int i = 0; i < depositoryManagers.length; i++) {
Integer uid = ObjectFormatUtil.toInteger(depositoryManagers[i]);
UserByPort depositoryManager = LinkInterfaceUtil.FindUserById(uid, userByPort);
// depositoryManagerByQyWx.append(depositoryManager.getWorkwechat()+",");
depositoryManagerByQyWx.append(depositoryManager.getWorkwechat()+",");
}
depositoryManagerByQyWx.append("PangFuZhen,");
// depositoryManagerByQyWx.append("PangFuZhen,");
JSONObject jsonObject = qyWxOperationService.sendCcMessageToUsers(depositoryManagerByQyWx.toString(), record.getId(), userAgent);
// 删除redis中本订单
@ -1708,9 +1708,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(",");
// QyWxUid.append(manager.getWorkwechat()+",");
QyWxUid.append(manager.getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen,");
// QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord);
@ -1731,9 +1731,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
StringBuilder QyWxUid = new StringBuilder();
for (Integer value : userIdByDid) {
UserByPort manager = LinkInterfaceUtil.FindUserById(value, userByPort);
// QyWxUid.append(manager.getWorkwechat()+",");
QyWxUid.append(manager.getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen,");
// QyWxUid.append("PangFuZhen,");
// 根据仓库向仓库管理员发送审批
JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplateOut(userAgent, userByPort, ObjectFormatUtil.toInteger(mainId), minIdList, QyWxUid.toString());
String sp_no = jsonObject.getString("sp_no");
@ -1789,9 +1789,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
StringBuilder QyWxUid = new StringBuilder();
for (int i = 0; i < departmentHeadByUser.size(); i++) {
depositoryManager.append(departmentHeadByUser.get(i).getId() + ",");
// QyWxUid.append(departmentHeadByUser.get(i).getWorkwechat()+",");
QyWxUid.append(departmentHeadByUser.get(i).getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen" + ",");
// QyWxUid.append("PangFuZhen" + ",");
map.put("depositoryManager", depositoryManager.toString());
} else {
// 如果点击的是驳回
@ -1935,9 +1935,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
StringBuilder QyWxUid = new StringBuilder();
for (int i = 0; i < departmentHeadByUser.size(); i++) {
depositoryManager.append(departmentHeadByUser.get(i).getId() + ",");
// QyWxUid.append(departmentHeadByUser.get(i).getWorkwechat() + ",");
QyWxUid.append(departmentHeadByUser.get(i).getWorkwechat() + ",");
}
QyWxUid.append("PangFuZhen,");
// QyWxUid.append("PangFuZhen,");
map.put("depositoryManager", depositoryManager.toString());
// 向仓储中心负责人发送新的消息
new Thread(new Runnable() {
@ -1995,7 +1995,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
QyWxUid.append(userByPort.getWorkwechat()).append(",");
}
String s = QyWxUid.toString();
s = "PangFuZhen,";
// s = "PangFuZhen,";
qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(id), s, userAgent, 1);
}
}).start();
@ -2078,9 +2078,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
redisTemplate.opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(",");
UserByPort userByPort = LinkInterfaceUtil.FindUserById(integer, userToken);
// QyWxUid.append(userByPort.getWorkwechat() + ",");
QyWxUid.append(userByPort.getWorkwechat() + ",");
}
QyWxUid.append("PangFuZhen,");
// QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord);
@ -2105,7 +2105,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
UserByPort manager = LinkInterfaceUtil.FindUserById(userIdByDid.get(j), userToken);
// QyWxUid.append(manager.getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen,");
// QyWxUid.append("PangFuZhen,");
// 根据仓库向仓库管理员发送审批
JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplateOut(userAgent, userToken, ObjectFormatUtil.toInteger(id), minIdList, QyWxUid.toString());
String sp_no = jsonObject.getString("sp_no");
@ -2140,7 +2140,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
QyWxUid.append(userByPort.getWorkwechat()).append(",");
}
String s = QyWxUid.toString();
s = "PangFuZhen,";
// s = "PangFuZhen,";
qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(id), s, userAgent, 1);
}
}).start();
@ -2221,9 +2221,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
StringBuilder QyWxUid = new StringBuilder();
for (int i = 0; i < departmentHeadByUser.size(); i++) {
depositoryManager.append(departmentHeadByUser.get(i).getId() + ",");
// QyWxUid.append(departmentHeadByUser.get(i).getWorkwechat()+",");
QyWxUid.append(departmentHeadByUser.get(i).getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen" + ",");
// QyWxUid.append("PangFuZhen" + ",");
map.put("depositoryManager", depositoryManager.toString());
// 向仓储中心负责人发送新的消息
JSONObject jsonObject = qyWxOperationService.sendQyWxToApplicationOutMessage(QyWxUid.toString(), ObjectFormatUtil.toInteger(outId), false, userAgent);
@ -2314,9 +2314,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + userIdByDid.get(j), userRecord);
minRecordManage.append(userIdByDid.get(j)).append(",");
// QyWxUid.append(manager.getWorkwechat()+",");
QyWxUid.append(manager.getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen,");
// QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord);
@ -2337,9 +2337,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
StringBuilder QyWxUid = new StringBuilder();
for (int j = 0; j < userIdByDid.size(); j++) {
UserByPort manager = LinkInterfaceUtil.FindUserById(userIdByDid.get(j), userByPort);
// QyWxUid.append(manager.getWorkwechat()+",");
QyWxUid.append(manager.getWorkwechat()+",");
}
QyWxUid.append("PangFuZhen,");
// QyWxUid.append("PangFuZhen,");
// 根据仓库向仓库管理员发送审批
JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplateOut(userAgent, userByPort, ObjectFormatUtil.toInteger(outId), minIdList, QyWxUid.toString());
String sp_no = jsonObject.getString("sp_no");

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

@ -628,6 +628,7 @@ public class MaterialServiceImpl implements MaterialService {
/**
* 根据物料类型修改物料状态
*
* @param map 待修改条件
* @return
*/
@ -702,49 +703,57 @@ public class MaterialServiceImpl implements MaterialService {
Map<String, Integer> splitInventoryForUnit = new HashMap<>();
splitInventoryForUnit.put(inventory.getUnit(), inventory.getQuantity());
// 定义最后展示单位及数目
String unit = inventory.getUnit();
// 获取拆单信息对应库存
StringBuilder showQuantity = new StringBuilder();
//定义总额
double amounts = 0.0;
if (Integer.compare(m.getQuantity(), 0) != 0) {
showQuantity.append(m.getUnit()).append(":").append(m.getQuantity()).append(" ");
}
for (PlaceP place :
placeByMidAndDid) {
// 获取当前具体数据
MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(place.getId(), m.getId());
// 获取当前是否存在拆单处理记录
List<SplitInventory> splitInventoryList = splitUnitMapper.findSplitInventoryByIid(placeAndMaterialByMidAndPid.getId());
if (splitInventoryList.size() > 0) {
// 如果存在拆单库存处理记录
for (SplitInventory splitInventory : splitInventoryList) {
SplitInfo splitInfo = splitUnitMapper.findSplitInfoById(splitInventory.getSid());
if (Integer.compare(splitInventory.getSaveQuantity(), 0) != 0) {
if (splitInventoryForUnit.containsKey(splitInfo.getNewUnit())) {
// 如果当前存在该拆单类型的记录
// 更新当前类型数据
splitInventoryForUnit.put(splitInfo.getNewUnit(), splitInventoryForUnit.get(splitInfo.getNewUnit()) + splitInventory.getSaveQuantity());
} else {
// 如果不存在,则新增
splitInventoryForUnit.put(splitInfo.getNewUnit(), splitInventory.getSaveQuantity());
}
// 计算拆单后的单价
BigDecimal bigDecimal = BigDecimal.valueOf(inventory.getPrice() / splitInfo.getQuantity());
double split_price = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
amounts += split_price * splitInventory.getSaveQuantity();
// 获取当前物料对应的所有拆单数目
List<SplitInfo> splitInfoByMid = splitUnitMapper.findSplitInfoByMid(inventory.getMid());
for (SplitInfo splitInfo : splitInfoByMid
) {
// 获取当前拆单单位的总数
int saveQuantity = splitUnitService.findAllInventoryForSplitInfo(-1, placeAndMaterialByMidAndPid, splitInfo.getId(), 0, true);
if (splitInventoryForUnit.containsKey(splitInfo.getNewUnit())) {
// 如果当前存在该拆单类型的记录
// 更新当前类型数据
splitInventoryForUnit.put(splitInfo.getNewUnit(), splitInventoryForUnit.get(splitInfo.getNewUnit()) + saveQuantity);
} else {
// 如果不存在,则新增
splitInventoryForUnit.put(splitInfo.getNewUnit(), saveQuantity);
}
BigDecimal bigDecimal = BigDecimal.valueOf(inventory.getPrice() / splitInfo.getQuantity());
double split_price = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
amounts += split_price * saveQuantity;
unit = splitInfo.getNewUnit();
}
}
// }
}
// 设置新总额
m.setAmounts(m.getAmounts() + amounts);
// 获取当前各拆单信息对应的库存
splitInventoryForUnit.put(inventory.getUnit(), inventory.getQuantity());
// 设置当前各拆单信息对应的库存
m.setQuantity(splitInventoryForUnit.get(unit));
m.setDefaultQuantity(splitInventoryForUnit.get(unit));
splitInventoryForUnit.remove(unit);
m.setShowQuantity(splitInventoryForUnit);
m.setUnit(unit);
m.setDefaultUnit(unit);
result.add(m);
}
return result;
@ -983,9 +992,9 @@ public class MaterialServiceImpl implements MaterialService {
List<MaterialAndBarCode> materialByBarCodeByCondition = materialMapper.findMaterialByBarCodeByCondition(map);
MaterialAndBarCode materialAndBarCode = null;
if (materialByBarCodeByCondition.size() > 0) {
materialAndBarCode = materialByBarCodeByCondition.get(0);
}else{
map.put("qrCode",barCode);
materialAndBarCode = materialByBarCodeByCondition.get(0);
} else {
map.put("qrCode", barCode);
materialAndBarCode = materialMapper.findMaterialAndBarCodeByQrCode(map);
}
return materialAndBarCode;
@ -1103,11 +1112,11 @@ public class MaterialServiceImpl implements MaterialService {
@Override
public String findMaterialCodeByQrCode(String qrCode) {
String code = qrCodeMapper.findMaterialCodeByQrCode(qrCode);
if(code == null){
Map<String,Object> map = new HashMap<>();
map.put("qrCode",qrCode);
if (code == null) {
Map<String, Object> map = new HashMap<>();
map.put("qrCode", qrCode);
MaterialAndBarCode materialAndBarCodeByQrCode = materialMapper.findMaterialAndBarCodeByQrCode(map);
if(materialAndBarCodeByQrCode != null){
if (materialAndBarCodeByQrCode != null) {
code = materialAndBarCodeByQrCode.getMcode();
}
}
@ -2264,7 +2273,7 @@ public class MaterialServiceImpl implements MaterialService {
List<Object> result = new ArrayList<>();
Map<String, Object> children = new HashMap<>();
param.put("parentId", Oldid);
param.put("state",1);
param.put("state", 1);
// 获取当前父类的子类
List<MaterialType> materialTypeByCondition = materialTypeMapper.findMaterialTypeByCondition(param);
if (materialTypeByCondition.size() > 0) {
@ -2283,7 +2292,7 @@ public class MaterialServiceImpl implements MaterialService {
Map<String, Object> param = new HashMap<>();
List<Object> result = new ArrayList<>();
param.put("parentId", Oldid);
param.put("state",1);
param.put("state", 1);
// 获取当前父类的子类
List<MaterialType> materialTypeByCondition = materialTypeMapper.findMaterialTypeByCondition(param);
if (materialTypeByCondition.size() > 0 && (level == staticlevel)) {

14
src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java

@ -2058,13 +2058,13 @@ public class QyWxOperationService {
// 获取处理的仓储负责人
List<String> notifyerList = new ArrayList<>();
// // 查询负责人
// String user = userToken.getWorkwechat();
// if (user == null || "".equals(user)) {
// user = userToken.getWechat();
// }
// notifyerList.add(user);
workwechat = "PangFuZhen";
notifyerList.add(workwechat);
String user = userToken.getWorkwechat();
if (user == null || "".equals(user)) {
user = userToken.getWechat();
}
notifyerList.add(user);
// workwechat = "PangFuZhen";
// notifyerList.add(workwechat);
approvalTemplate.setNotifyer(notifyerList);
//抄送方式:1-提单时抄送(默认值); 2-单据通过后抄送;3-提单和单据通过后抄送。仅use_template_approver为0时生效。

16
src/main/java/com/dreamchaser/depository_manage/service/impl/SplitUnitServiceImpl.java

@ -206,7 +206,8 @@ public class SplitUnitServiceImpl implements SplitUnitService {
}
} else {
}
else {
// 如果没有记录
// 获取当前拆单记录的父级
@ -280,6 +281,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
map.put("quantity", "0");
depositoryRecordService.applicationInPlace(map);
map.put("applicationInId",map.get("id"));
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(map.get("id")));
map.remove("id");
} else {
@ -539,6 +541,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
double saveQuantity = quantity - disposeQuantity * scale;
if (splitInventory != null) {
// 如果拆单库存处理记录不为空
if (splitInventory.getSaveQuantity() + saveQuantity >= splitInfo.getQuantity()) {
// 当前库存拆单记录与新入库的数目大于预设的进制
@ -572,7 +575,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
map.put("realQuantity", String.valueOf(inQuantity));
depositoryRecordService.applicationInPlace(map);
// 删除入库订单
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(map.get("id")));
// depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(map.get("id")));
map.remove("id");
}
}
@ -589,7 +592,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
map.put("realQuantity", String.valueOf(inQuantity));
depositoryRecordService.applicationInPlace(map);
// 删除入库订单
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(map.get("id")));
// depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(map.get("id")));
map.remove("id");
}
}
@ -619,7 +622,8 @@ public class SplitUnitServiceImpl implements SplitUnitService {
SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(parentId);
updateSplitInfoSaveQuantity(parentSplitInfo, quantity_scale, iid, map, inQuantity, baseSplitInfo);
} else {
}
else {
double price = Double.parseDouble((String) map.get("price"));
price = price * findSplitInfoScaleQuantity(baseSplitInfo, -1);
map.put("price", Double.toString(price));
@ -627,7 +631,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
map.put("realQuantity", String.valueOf(inQuantity));
depositoryRecordService.applicationInPlace(map);
// 删除入库订单
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(map.get("id")));
// depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(map.get("id")));
map.remove("id");
}
} else {
@ -639,7 +643,7 @@ public class SplitUnitServiceImpl implements SplitUnitService {
map.put("price", map.get("price").toString());
depositoryRecordService.applicationInPlace(map);
// 删除入库订单
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(map.get("id")));
// depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(map.get("id")));
map.remove("id");
}

34
src/main/java/com/dreamchaser/depository_manage/service/impl/StockTakingServiceImpl.java

@ -485,9 +485,9 @@ public class StockTakingServiceImpl implements StockTakingService {
public void run() {
// 获取盘点人员
UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), userToken);
// String workwechat = originator.getWorkwechat();
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", mainId, normalMinId, userAgent);
// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinId, userAgent);
String workwechat = originator.getWorkwechat();
// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", mainId, normalMinId, userAgent);
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinId, userAgent);
// 将当前返回结果保存到redis中
if (jsonObject != null) {
Map<String, Object> QyWxMessageMap = new HashMap<>();
@ -545,7 +545,7 @@ public class StockTakingServiceImpl implements StockTakingService {
QyWxUid.append(userByPort.getWorkwechat()).append(",");
}
String s = QyWxUid.toString();
s = "PangFuZhen,";
// s = "PangFuZhen,";
qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(mainId),s,userAgent,2);
}
}).start();
@ -911,7 +911,7 @@ public class StockTakingServiceImpl implements StockTakingService {
@Override
public void run() {
String s = QyWxUid.toString();
s = "PangFuZhen,";
// s = "PangFuZhen,";
JSONObject jsonObject = qyWxOperationService.sendCcStockTakingMessageToHead(s, map, userToken, finalMainRecord, userAgent);
}
}).start();
@ -1339,7 +1339,7 @@ public class StockTakingServiceImpl implements StockTakingService {
QyWxUid.append(userByPort1.getWorkwechat()).append(",");
}
String s = QyWxUid.toString();
s = "PangFuZhen,";
// s = "PangFuZhen,";
JSONObject jsonObject = qyWxOperationService.sendCcStockTakingMessageToHead(s, map, null, finalMainRecord, userAgent);
}
}).start();
@ -1544,9 +1544,9 @@ public class StockTakingServiceImpl implements StockTakingService {
public void run() {
// 获取盘点人员
UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), null);
// String workwechat = originator.getWorkwechat();
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", ObjectFormatUtil.toInteger(mainId), normalMinId, userAgent);
// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, ObjectFormatUtil.toInteger(mainId), normalMinId, userAgent);
String workwechat = originator.getWorkwechat();
// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", ObjectFormatUtil.toInteger(mainId), normalMinId, userAgent);
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, ObjectFormatUtil.toInteger(mainId), normalMinId, userAgent);
// 将当前返回结果保存到redis中
if (jsonObject != null) {
Map<String, Object> QyWxMessageMap = new HashMap<>();
@ -2431,8 +2431,8 @@ public class StockTakingServiceImpl implements StockTakingService {
map.put("minIds", minIds);
StringBuilder departMentHeadQyWxName = new StringBuilder();
UserByPort userByPort = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(originator), userToken);
// departMentHeadQyWxName.append(userByPort.getWorkwechat()+",");
departMentHeadQyWxName.append("PangFuZhen,");
departMentHeadQyWxName.append(userByPort.getWorkwechat()+",");
// departMentHeadQyWxName.append("PangFuZhen,");
JSONObject jsonObject = qyWxOperationService.sendCcStockTakingTransferMessageToHead(departMentHeadQyWxName.toString(), map, userToken, finalMainRecord, userAgent);
}
}).start();
@ -2635,9 +2635,9 @@ public class StockTakingServiceImpl implements StockTakingService {
public void run() {
// 获取盘点人员
UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), null);
// String workwechat = originator.getWorkwechat();
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", mainId, normalMinIds, userAgent);
// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinIds, userAgent);
String workwechat = originator.getWorkwechat();
// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", mainId, normalMinIds, userAgent);
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinIds, userAgent);
if (jsonObject != null) {
// 将当前返回结果保存到redis中
Map<String, Object> QyWxMessageMap = new HashMap<>();
@ -2659,9 +2659,9 @@ public class StockTakingServiceImpl implements StockTakingService {
public void run() {
// 获取盘点人员
UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), null);
// String workwechat = originator.getWorkwechat();
qyWxOperationService.sendStockTakingErrMessageToHead("PangFuZhen,", errIds, mainRecord, null, userAgent);
// qyWxOperationService.sendStockTakingErrMessageToHead(workwechat, errIds, mainRecord, null, userAgent);
String workwechat = originator.getWorkwechat();
// qyWxOperationService.sendStockTakingErrMessageToHead("PangFuZhen,", errIds, mainRecord, null, userAgent);
qyWxOperationService.sendStockTakingErrMessageToHead(workwechat, errIds, mainRecord, null, userAgent);
}
}).start();
}

4
src/main/resources/application-test.yml

@ -17,8 +17,8 @@ spring:
##数据库设置
datasource:
username: root
password: root
username: depository
password: NhE47edekBHxhjYk
url: jdbc:mysql://localhost:3306/depository?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource

10
src/main/resources/templates/pages/application/application-in.html

@ -749,7 +749,7 @@
}
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(d.unit, "-1"));
$("#unit" + idNumber).append(new Option(d.baseUnit, "-1"));
var unitList = d["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -875,7 +875,7 @@
}
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -940,7 +940,7 @@
}
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -1122,7 +1122,7 @@
form.render();
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -1569,7 +1569,7 @@
$('#place' + idNumber).append(new Option(item.depositoryName + "-" + item.code, item.id));//往下拉菜单里添加元素
});
$("#unit" + idNumber).empty();
$("#unit" + idNumber).append(new Option(data.unit, "-1"));
$("#unit" + idNumber).append(new Option(data.baseUnit, "-1"));
$.each(data.splitInfoList, function (index, item) {
$("#unit" + idNumber).append(new Option(item.newUnit, item.newUnit));
});

6
src/main/resources/templates/pages/application/application-in_scanQrCode.html

@ -777,7 +777,7 @@
}
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -843,7 +843,7 @@
}
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -916,7 +916,7 @@
form.render();
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));

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

@ -785,7 +785,7 @@
var materialAndBarCodeList = d["materialAndBarCodeList"];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(d.unit, "-1"));
$("#unit" + idNumber).append(new Option(d.baseUnit, "-1"));
var unitList = d["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -939,7 +939,7 @@
var idNumber = materialId.name.split("mid")[1];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -1210,7 +1210,7 @@
var material = d.data[0];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
if(unitList !== null && unitList != undefined){
for (let i = 0; i < unitList.length; i++) {
@ -1303,7 +1303,7 @@
var idNumber = materialId.name.split("mid")[1];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(data.unit, "-1"));
$("#unit" + idNumber).append(new Option(data.baseUnit, "-1"));
var unitList = data["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -1405,7 +1405,7 @@
$('#place' + idNumber).append(new Option(item.depositoryName + "-" + item.code, item.id));//往下拉菜单里添加元素
});
$("#unit" + idNumber).empty();
$("#unit" + idNumber).append(new Option(data.unit, "-1"));
$("#unit" + idNumber).append(new Option(data.baseUnit, "-1"));
$.each(data.splitInfoList, function (index, item) {
$("#unit" + idNumber).append(new Option(item.newUnit, item.newUnit));
});

6
src/main/resources/templates/pages/application/application-out_back.html

@ -172,7 +172,7 @@
req.mid = d.id;
let unitItem = $("#unit");
unitItem.empty();
unitItem.append(new Option(d.unit, "-1"));
unitItem.append(new Option(d.baseUnit, "-1"));
$.each(d.splitInfoList, function (index, item) {
$("#unit").append(new Option(item.newUnit, item.newUnit));
});
@ -211,7 +211,7 @@
$("#mid").val(material.id);
$("#code").val(material.code);
$("#unit").empty();
$("#unit").append(new Option(material.unit, "-1"));
$("#unit").append(new Option(material.baseUnit, "-1"));
$.each(material.splitInfoList, function (index, item) {
$("#unit").append(new Option(item.newUnit, item.newUnit));
});
@ -277,7 +277,7 @@
}
$("#code").val(code);
$("#unit").empty();
$("#unit").append(new Option(d.data.materialById.unit, "-1"));
$("#unit").append(new Option(d.data.materialById.baseUnit, "-1"));
$.each(d.data.materialById.splitInfoList, function (index, item) {
$("#unit").append(new Option(item.newUnit, item.newUnit));
});

10
src/main/resources/templates/pages/application/application-transfer.html

@ -455,7 +455,7 @@
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(data.unit, "-1"));
$("#unit" + idNumber).append(new Option(data.baseUnit, "-1"));
var unitList = data["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -548,7 +548,7 @@
barCode.empty();
}
$("#unit" + idNumber).empty();
$("#unit" + idNumber).append(new Option(data.unit, "-1"));
$("#unit" + idNumber).append(new Option(data.baseUnit, "-1"));
$.each(data.splitInfoList, function (index, item) {
$("#unit" + idNumber).append(new Option(item.newUnit, item.newUnit));
});
@ -638,7 +638,7 @@
}
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(d.unit, "-1"));
$("#unit" + idNumber).append(new Option(d.baseUnit, "-1"));
var unitList = d["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -737,7 +737,7 @@
});
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -828,7 +828,7 @@
var material = d.data[0];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
if(unitList !== null && unitList != undefined){
for (let i = 0; i < unitList.length; i++) {

25
src/main/resources/templates/pages/depository/table-in.html

@ -36,15 +36,23 @@
</div>
<div class="layui-inline">
<label class="layui-form-label">物料名称:</label>
<div class="layui-input-inline">
<div class="layui-input-block">
<input id="openSonByMaterial" readonly type="text" placeholder="请填写物料名称"
class="layui-input" onclick="selectMaterialByName(this)"/>
<input id="mid" name="mid" readonly type="text" placeholder="请填写物料名称"
class="layui-input" style="display:none;"/>
<!-- <select name="mid">-->
<!-- <option value="" selected>请选择物料名称</option>-->
<!-- <option th:each="Material,iterStar:${materials}" th:value="${Material?.getId()}" th:text="${Material?.getMname()}">天玑1000</option>-->
<!-- </select>-->
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">存货编码</label>
<div class="layui-input-block">
<input type="text" name="code" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">型号</label>
<div class="layui-input-block">
<input type="text" class="layui-input" id="version" name="version" autocomplete="off"/>
</div>
</div>
<div class="layui-inline">
@ -174,6 +182,13 @@
if (data.applyTime !== '') {
req.applyTime = data.applyTime;
}
if (data.code !== '') {
req.code = data.code;
}
if (data.code !== '') {
req.version = data.version;
}
//执行搜索重载
table.reload('currentTableId', {
url: '/depositoryRecord/applicationInView',

22
src/main/resources/templates/pages/depository/table-out.html

@ -40,16 +40,24 @@
<div class="layui-inline">
<label class="layui-form-label">物料名称:</label>
<div class="layui-input-inline">
<!--<select name="mid">
<option value="" selected>请选择物料名称</option>
<option th:each="Material,iterStar:${materials}" th:value="${Material?.getId()}" th:text="${Material?.getMname()}">天玑1000</option>
</select>-->
<input id="openSonByMaterial" readonly type="text" placeholder="请填写物料名称"
class="layui-input" onclick="selectMaterialByName(this)"/>
<input id="mid" name="mid" readonly type="text" placeholder="请填写物料名称"
class="layui-input" style="display:none;"/>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">存货编码</label>
<div class="layui-input-block">
<input type="text" name="code" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">型号</label>
<div class="layui-input-block">
<input type="text" class="layui-input" id="version" name="version" autocomplete="off"/>
</div>
</div>
<div class="layui-inline">
<button type="submit" class="layui-btn layui-btn-primary" lay-submit
@ -222,6 +230,12 @@
if (data.applyTime !== '') {
req.applyTime = data.applyTime;
}
if (data.code !== '') {
req.code = data.code;
}
if (data.code !== '') {
req.version = data.version;
}
//执行搜索重载
table.reload('currentTableId', {
url: '/depositoryRecord/applicationOutView',

30
src/main/resources/templates/pages/depository/table-stock.html

@ -370,26 +370,38 @@
return false;
} else if (obj.event === 'changeUnit') {
let splitInfoList = data.splitInfoList;
let showQuantity = data.showQuantity;
let btn = $("#btn_" + data.id);
let clickNum = Number(btn.attr("click_num"));
if (splitInfoList.length > 0) {
if (clickNum < splitInfoList.length) {
let newUnit = splitInfoList[clickNum].newUnit;
btn.text(newUnit);
// 获取当前showQuantity 的长度
let length = Object.getOwnPropertyNames(showQuantity).length;
if (length> 0) {
if (clickNum < length) {
let keys = Object.keys(showQuantity);
let key = keys[clickNum];
btn.text(key);
clickNum += 1;
btn.attr("click_num", clickNum);
let showQuantity = data.showQuantity[newUnit];
if (showQuantity !== undefined) {
obj.update({quantity: showQuantity});
let show_quantity = showQuantity[key];
if (show_quantity !== undefined) {
obj.update({quantity: show_quantity});
} else {
obj.update({quantity: 0});
}
} else {
btn.text(data.unit);
btn.text(data.defaultUnit);
btn.attr("click_num", 0);
let showQuantity = data.showQuantity[data.unit];
let showQuantity = data.defaultQuantity;
obj.update({quantity: showQuantity});
}

30
src/main/resources/templates/pages/group/group-add_back.html

@ -385,7 +385,15 @@
// 扫描物料条码
scanBarCode = function (obj) {
parent.wx.scanQRCode({
let wxScan = parent;
if(wxScan.wx === undefined && wxScan.parent.wx !== undefined){
wxScan = wxScan.parent.wx;
}else if(wxScan.parent.wx === undefined){
wxScan = wxScan.parent.parent.wx
}else{
wxScan = wxScan.wx;
}
wxScan.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
@ -430,7 +438,7 @@
var idNumber = materialId.name.split("mid")[1];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(data.unit, "-1"));
$("#unit" + idNumber).append(new Option(data.baseUnit, "-1"));
var unitList = data["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -453,7 +461,15 @@
// 用于扫码功能
scanCodeForMaterial = function (obj) {
parent.wx.scanQRCode({
let wxScan = parent;
if(wxScan.wx === undefined && wxScan.parent.wx !== undefined){
wxScan = wxScan.parent.wx;
}else if(wxScan.parent.wx === undefined){
wxScan = wxScan.parent.parent.wx
}else{
wxScan = wxScan.wx;
}
wxScan.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
@ -523,7 +539,7 @@
$('#place' + idNumber).append(new Option(item.depositoryName + "-" + item.code, item.id));//往下拉菜单里添加元素
});
$("#unit" + idNumber).empty();
$("#unit" + idNumber).append(new Option(data.unit, "-1"));
$("#unit" + idNumber).append(new Option(data.baseUnit, "-1"));
$.each(data.splitInfoList, function (index, item) {
$("#unit" + idNumber).append(new Option(item.newUnit, item.newUnit));
});
@ -591,7 +607,7 @@
var idNumber = materialId.name.split("mid")[1];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -673,7 +689,7 @@
var materialAndBarCodeList = d["materialAndBarCodeList"];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(d.unit, "-1"));
$("#unit" + idNumber).append(new Option(d.baseUnit, "-1"));
var unitList = d["splitInfoList"];
for (let i = 0; i < unitList.length; i++) {
$("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit));
@ -753,7 +769,7 @@
var material = d.data[0];
var unit = $("#unit" + idNumber);
unit.empty();
$("#unit" + idNumber).append(new Option(material.unit, "-1"));
$("#unit" + idNumber).append(new Option(material.baseUnit, "-1"));
var unitList = material["splitInfoList"];
if (unitList !== null && unitList != undefined) {
for (let i = 0; i < unitList.length; i++) {

10
src/main/resources/templates/pages/material/material-add.html

@ -221,7 +221,15 @@
};
scanBarCode = function(){
parent.wx.scanQRCode({
let wxScan = parent;
if(wxScan.wx === undefined){
wxScan = wxScan.parent.wx;
}
else{
wxScan = wxScan.wx;
}
wxScan.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode","qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有

2
src/main/resources/templates/pages/materialBarCode/materialBarCode_out.html

@ -165,7 +165,7 @@
*/
table.on('toolbar(currentTableFilter)', function (obj) {
if (obj.event === 'add') { // 监听添加操作
layer.open({
let index = layer.open({
type: 2,
title: '扫码',
skin: 'layui-layer-rim',

21
src/main/resources/templates/pages/split/split_add.html

@ -361,7 +361,14 @@
};
scanCode = function (obj) {
parent.wx.scanQRCode({
let wxScan = parent;
if(wxScan.wx === undefined){
wxScan = wxScan.parent.wx;
}else{
wxScan = wxScan.wx;
}
wxScan.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
@ -436,7 +443,14 @@
};
scanBarCode = function (obj) {
parent.wx.scanQRCode({
let wxScan = parent;
if(wxScan.wx === undefined){
wxScan = wxScan.parent.wx;
}else{
wxScan = wxScan.wx;
}
wxScan.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
@ -474,7 +488,8 @@
}
form.render();
} else {
}
else {
layer.msg("对于编码:" + result + ",并未发现对应的物料", {
icon: 0,

271
src/main/resources/templates/pages/split/split_edit.html

@ -56,12 +56,11 @@
<div class="layui-input-block">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input"
<input type="text" placeholder="请选择物料" class="layui-input" readonly
style="border-style: none" th:value="${record.getMname()}"
id="mname" onblur="selectMaterialByName(this)"
id="mname"
lay-verify="required"/>
<i class="layui-icon layui-icon-search" style="display: inline;"
id="selectMaterial" onclick="selectMaterial(this)"></i>
</div>
<input type="text" name="mid" class="layui-input" id="mid" th:value="${record.getMid()}"
style="display: none" lay-verify="required"/>
@ -73,13 +72,11 @@
<label class="layui-form-label">物料编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id="code" name="code" type="text" placeholder="请填写入物料编码"
onblur="selectCode(this)" th:value="${record.getMcode()}"
<input id="code" name="code" type="text" placeholder="请填写入物料编码" readonly
th:value="${record.getMcode()}"
class="layui-input" lay-verify="required"
style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16"
id="qrCodeImg"
style="margin-top: 10px" onclick="scanCode(this)">
</div>
</div>
</div>
@ -90,9 +87,7 @@
<input id="barCode" name="barCode" type="text" readonly
class="layui-input"
style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16"
id="barCodeImg"
style="margin-top: 10px" onclick="scanBarCode(this)">
</div>
</div>
</div>
@ -159,26 +154,6 @@
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script>
// 通过名称查询物料
function selectMaterialByName() {
}
// 打开物料选择树
function selectMaterial() {
}
// 用于编码查询
function selectCode(obj) {
}
// 用于扫描条形码
function scanBarCode(obj) {
}
// 用于扫码入库
function scanCode(obj) {
}
layui.use(['form', 'layer'], function () {
var $ = layui.jquery,
@ -218,238 +193,6 @@
})
});
// 通过名称查询物料
selectMaterialByName = function (obj) {
let materialName = $("#mname");
var data = materialName.val();
var req = {};
data = data.split(",")[0];
if(data !== ""){
req.mname = data;
let materialId = $("#mid");
let codeValue = $("#code");
let version = $("#version");
let typeName = $("#typeName");
let unit = $("#unit");
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if (d.count > 1) {
layer.msg("请点击右侧搜索确定物品");
materialId.val("");
codeValue.val("");
version.val("");
typeName.val("");
unit.val("");
return false;
} else if (d.count === 0) {
layer.msg("没有该物品,请确认输入是否正确");
materialId.val("");
codeValue.val("");
materialName.val("");
version.val("");
typeName.val("");
unit.val("");
return false;
} else {
var material = d.data[0];
materialName.val(material.mname);
materialId.val(material.mid);
codeValue.val(material.code);
version.val(material.version);
typeName.val(material.typeName);
unit.val(material.unit);
}
}
});
}
};
// 打开物料选择树
selectMaterial = function (obj) {
let mname = $("#mname").val();
mname = mname.split(",")[0];
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
content: '/selectMaterial?mname=' + mname,
move: '.layui-layer-title',
fixed: false,
success: function (layero, index) {
let children = layero.children();
let content = $(children[1]);
let iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
},
end: function () {
var mid = $("#mid").val();
if (mid !== '') {
$.ajax({
url: "/material/findMatrialById?mid=" + mid,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var material = d.data.materialById;
var code = material.code;
if (code === undefined) {
code = "";
}
$("#code").val(code);
$("#version").val(material.version);
$("#unit").val(material.unit);
$("#typeName").val(material.typeName);
var materialAndBarCodeList = material["materialAndBarCodeList"];
if (materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
$("#barCode").remove();
var barCodeSelect = `
<select id="barCode" name= "barCode"></select>`;
$("#barCodeImg").before(barCodeSelect);
form.render();
$.each(materialAndBarCodeList, function (index, item) {
$("#barCode").append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素
});
form.render();
}
}
});
}
}
});
};
scanCodeInStorage = function (obj) {
var objIdNumber = obj.id.split("qrCodeImg")[1];
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
req.codeFlag = 2;
$("#qrCode" + objIdNumber).val(result);
$.ajax({
url: "/material/qywxApplicationInScanQrCode",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
}
})
}
})
};
scanBarCode = function (obj) {
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
req.codeFlag = 1;
$.ajax({
url: "/material/qywxApplicationInScanBarCode",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
}
})
},
error: function (res) {
if (res.errMsg.indexOf('function_not_exist') > 0) {
alert('版本过低请升级')
}
alert(res)
}
});
};
// 用于实现通过编码查询物料
selectCode = function (obj) {
// 输入code
var code = obj.value;
var req = {};
req.code = code;
req.type = "in";
$.ajax({
url: "/material/findMatrialByCode",
type: "get",
dataType: 'json',
data: req,
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if (d == null) {
layer.msg("没有该编码,请确认是否输入正确");
$("#mname").val("");
$("#mid").val("");
$("#code").val("");
$("#barCode").val("");
$("#version").val("");
$("#unit").val("");
$("#typeName").val("");
form.render();
} else {
$("#mname").val(d.mname);
$("#mid").val( d.mid);
$("#version").val(d.version);
$("#unit").val(d.unit);
$("#typeName").val(d.typeName);
// 获取物料与条形码的对应关系
var materialAndBarCodeList = d["materialAndBarCodeList"];
if (materialAndBarCodeList.length > 0) {
// 如果有对应的条形码
$("#barCode").remove();
$(".layui-unselect").remove();
var barCodeSelect = `
<select id="barCode" name="barCode">
</select>`;
$("#barCodeImg").before(barCodeSelect);
form.render();
$.each(materialAndBarCodeList, function (index, item) {
$("#barCode").append(new Option(item.bmcode, item.bmcode));//往下拉菜单里添加元素
});
form.render();
} else {
$("#barCode").remove();
$(".layui-unselect").remove();
}
}
}
});
};
})
</script>

174
src/test/java/com/dreamchaser/depository_manage/TestQywxSplitInventoryAll.java

@ -0,0 +1,174 @@
package com.dreamchaser.depository_manage;
import com.dreamchaser.depository_manage.entity.MaterialAndPlace;
import com.dreamchaser.depository_manage.entity.SplitInfo;
import com.dreamchaser.depository_manage.entity.SplitInventory;
import com.dreamchaser.depository_manage.mapper.PlaceMapper;
import com.dreamchaser.depository_manage.mapper.SplitUnitMapper;
import com.dreamchaser.depository_manage.service.SplitUnitService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
@RunWith(SpringRunner.class)
public class TestQywxSplitInventoryAll {
@Autowired
SplitUnitMapper splitUnitMapper;
@Autowired
PlaceMapper placeMapper;
@Test
public void Test(){
Map<String,Object> map = new HashMap<>();
map.put("mid","6");
map.put("pid","8");
MaterialAndPlace placeAndMaterialByMidAndPid = placeMapper.findPlaceAndMaterialByMidAndPid(map);
int allInventoryForSplitInfo = findAllInventoryForSplitInfo(-1, placeAndMaterialByMidAndPid, 4, 0, true);
System.out.println(allInventoryForSplitInfo);
}
public int findAllInventoryForSplitInfo(Integer splitInfoId, MaterialAndPlace materialAndPlace, Integer baseSplitInfoId, int saveQuantity, boolean allQuantityFlag) {
if (allQuantityFlag) {
// 用于标志是否第一次计算
boolean flag = false;
// 获取当前基础单位
SplitInfo baseSplitInfo = splitUnitMapper.findSplitInfoById(baseSplitInfoId);
// 获取当前基础单位的库存
Map<String, Object> paramForSplitInventory = new HashMap<>();
paramForSplitInventory.put("iid", materialAndPlace.getId());
// 如果当前获取的为对应基础单位的所有库存
// 如果是第一次计算
if (Integer.compare(saveQuantity, 0) == 0) {
// 如果是第一次计算
paramForSplitInventory.put("sid", baseSplitInfoId);
// 当前基础单位的库存
SplitInventory baseSplitInventory = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory);
if (baseSplitInventory != null) {
saveQuantity += baseSplitInventory.getSaveQuantity();
}
}
if (Integer.compare(-1, splitInfoId) != 0) {
flag = true;
// 获取当前记录的子记录
SplitInfo splitInfoByParentId = splitUnitMapper.findSplitInfoByParentId(splitInfoId);
paramForSplitInventory.put("sid", splitInfoId);
SplitInventory splitInventoryByIidAndSid = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory);
if (splitInventoryByIidAndSid != null) {
saveQuantity += splitInventoryByIidAndSid.getSaveQuantity() * splitInfoByParentId.getQuantity();
}
}
if (baseSplitInfo.getParentId() != null && !flag) {
// 如果有父级且是第一次
// 获取其父级
SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(baseSplitInfo.getParentId());
return findAllInventoryForSplitInfo(parentSplitInfo.getId(), materialAndPlace, baseSplitInfoId, saveQuantity, allQuantityFlag);
} else {
if (flag) {
// 如果不是第一次
// 获取当前的拆单记录
SplitInfo splitInfo = splitUnitMapper.findSplitInfoById(splitInfoId);
if (splitInfo.getParentId() != null) {
SplitInfo parentSplitInfo = splitUnitMapper.findSplitInfoById(splitInfo.getParentId());
return findAllInventoryForSplitInfo(parentSplitInfo.getId(), materialAndPlace, baseSplitInfoId, saveQuantity, allQuantityFlag);
} else {
int splitInfoScaleQuantity = findSplitInfoScaleQuantity(baseSplitInfo, -1);
return saveQuantity + materialAndPlace.getQuantity() * splitInfoScaleQuantity;
}
} else {
int splitInfoScaleQuantity = findSplitInfoScaleQuantity(baseSplitInfo, -1);
return saveQuantity + materialAndPlace.getQuantity() * splitInfoScaleQuantity;
}
}
}
else {
// 如果不是获取所有库存
// 获取当前基础单位
SplitInfo baseSplitInfo = splitUnitMapper.findSplitInfoById(baseSplitInfoId);
// 获取当前基础单位的库存
Map<String, Object> paramForSplitInventory = new HashMap<>();
paramForSplitInventory.put("iid", materialAndPlace.getId());
// 如果当前获取的为对应基础单位的所有库存
if (Integer.compare(saveQuantity, 0) == 0) {
// 如果是第一次计算
paramForSplitInventory.put("sid", baseSplitInfoId);
// 当前基础单位的库存
SplitInventory baseSplitInventory = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory);
saveQuantity += baseSplitInventory.getSaveQuantity();
}
// 获取当前拆单记录与基础拆单记录之间的进制
int splitInfoScaleQuantity = findSplitInfoScaleQuantity(baseSplitInfo, splitInfoId);
paramForSplitInventory.put("sid", splitInfoId);
// 获取当前拆单记录的库存
SplitInventory splitInventory = splitUnitMapper.findSplitInventoryByIidAndSid(paramForSplitInventory);
saveQuantity += splitInventory.getSaveQuantity() * splitInfoScaleQuantity;
// 获取当前的子类
SplitInfo splitInfoByParentId = splitUnitMapper.findSplitInfoByParentId(splitInfoId);
if (splitInfoByParentId != null && Integer.compare(splitInfoByParentId.getId(), baseSplitInfoId) != 0) {
// 如果有子类
return findAllInventoryForSplitInfo(splitInfoByParentId.getId(), materialAndPlace, baseSplitInfoId, saveQuantity, allQuantityFlag);
} else {
// 如果没有
return saveQuantity;
}
}
}
public int findSplitInfoScaleQuantity(SplitInfo splitInfo, Integer parentSplitInfoId) {
int quantity = 1; // 定义进制
if (parentSplitInfoId != null && Integer.compare(-1, parentSplitInfoId) != 0) {
// 如果待查询的父级不是顶级
if (Integer.compare(splitInfo.getParentId(), parentSplitInfoId) == 0) {
// 如果当前拆单记录是目标拆单单位
quantity *= splitInfo.getQuantity();
return quantity;
} else {
SplitInfo splitInfoById = splitUnitMapper.findSplitInfoById(splitInfo.getParentId());
return quantity * findSplitInfoScaleQuantity(splitInfoById, parentSplitInfoId);
}
} else {
quantity *= splitInfo.getQuantity();
if (splitInfo.getParentId() != null) {
SplitInfo splitInfoById = splitUnitMapper.findSplitInfoById(splitInfo.getParentId());
return quantity * findSplitInfoScaleQuantity(splitInfoById, parentSplitInfoId);
} else {
return quantity;
}
}
}
}
Loading…
Cancel
Save