|
@@ -2,6 +2,7 @@ package com.gree.mall.manager.logic.goods;
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -16,12 +17,12 @@ import com.gree.mall.manager.enums.ExamineStatusEnum;
|
|
|
import com.gree.mall.manager.enums.IsYesNoEnum;
|
|
import com.gree.mall.manager.enums.IsYesNoEnum;
|
|
|
import com.gree.mall.manager.enums.admin.AdminWebsitTypeEnum;
|
|
import com.gree.mall.manager.enums.admin.AdminWebsitTypeEnum;
|
|
|
import com.gree.mall.manager.enums.base.BaseEnum;
|
|
import com.gree.mall.manager.enums.base.BaseEnum;
|
|
|
|
|
+import com.gree.mall.manager.enums.material.DirectFlagEnum;
|
|
|
import com.gree.mall.manager.enums.material.GoodsMaterialTypeEnum;
|
|
import com.gree.mall.manager.enums.material.GoodsMaterialTypeEnum;
|
|
|
import com.gree.mall.manager.exception.RemoteServiceException;
|
|
import com.gree.mall.manager.exception.RemoteServiceException;
|
|
|
import com.gree.mall.manager.logic.common.CommonLogic;
|
|
import com.gree.mall.manager.logic.common.CommonLogic;
|
|
|
import com.gree.mall.manager.plus.entity.*;
|
|
import com.gree.mall.manager.plus.entity.*;
|
|
|
import com.gree.mall.manager.plus.service.*;
|
|
import com.gree.mall.manager.plus.service.*;
|
|
|
-import com.gree.mall.manager.utils.StringUtil;
|
|
|
|
|
import com.gree.mall.manager.utils.excel.ExcelUtils;
|
|
import com.gree.mall.manager.utils.excel.ExcelUtils;
|
|
|
import com.gree.mall.manager.zfire.bean.QueryParamBean;
|
|
import com.gree.mall.manager.zfire.bean.QueryParamBean;
|
|
|
import com.gree.mall.manager.zfire.bean.ZfireParamBean;
|
|
import com.gree.mall.manager.zfire.bean.ZfireParamBean;
|
|
@@ -56,6 +57,7 @@ public class GoodsPurchaseLogic {
|
|
|
private final AdminWebsitService adminWebsitService;
|
|
private final AdminWebsitService adminWebsitService;
|
|
|
private final JxGoodsLogic jxGoodsLogic;
|
|
private final JxGoodsLogic jxGoodsLogic;
|
|
|
private final GoodsMaterialStorageService goodsMaterialStorageService;
|
|
private final GoodsMaterialStorageService goodsMaterialStorageService;
|
|
|
|
|
+ private final GoodsMaterialStockLogic goodsMaterialStockLogic;
|
|
|
|
|
|
|
|
public IPage<GoodsPurchaseVO> page(ZfireParamBean zfireParamBean) {
|
|
public IPage<GoodsPurchaseVO> page(ZfireParamBean zfireParamBean) {
|
|
|
final AdminUserCom adminUser = commonAddQueryFilterParam(zfireParamBean);
|
|
final AdminUserCom adminUser = commonAddQueryFilterParam(zfireParamBean);
|
|
@@ -134,15 +136,15 @@ public class GoodsPurchaseLogic {
|
|
|
bean.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId());
|
|
bean.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId());
|
|
|
bean.setCompanyWechatName(adminUser.getAdminCompanyWechat().getCompanyName());
|
|
bean.setCompanyWechatName(adminUser.getAdminCompanyWechat().getCompanyName());
|
|
|
|
|
|
|
|
- AdminWebsit adminWebsit = adminWebsitService.lambdaQuery()
|
|
|
|
|
- .eq(AdminWebsit::getCompanyWechatId, adminUser.getCompanyWechatId())
|
|
|
|
|
- .eq(AdminWebsit::getType, AdminWebsitTypeEnum.B.getKey())
|
|
|
|
|
- .last("limit 1")
|
|
|
|
|
- .one();
|
|
|
|
|
|
|
+// AdminWebsit adminWebsit = adminWebsitService.lambdaQuery()
|
|
|
|
|
+// .eq(AdminWebsit::getCompanyWechatId, adminUser.getCompanyWechatId())
|
|
|
|
|
+// .eq(AdminWebsit::getType, AdminWebsitTypeEnum.B.getKey())
|
|
|
|
|
+// .last("limit 1")
|
|
|
|
|
+// .one();
|
|
|
|
|
|
|
|
- if (Objects.isNull(adminWebsit)) {
|
|
|
|
|
- throw new RemoteServiceException("未能找到当前账号归属商户信息");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+// if (Objects.isNull(adminWebsit)) {
|
|
|
|
|
+// throw new RemoteServiceException("未能找到当前账号归属商户信息");
|
|
|
|
|
+// }
|
|
|
|
|
|
|
|
if (StringUtils.isBlank(bean.getVenderId())) {
|
|
if (StringUtils.isBlank(bean.getVenderId())) {
|
|
|
throw new RemoteServiceException("请选择供应商");
|
|
throw new RemoteServiceException("请选择供应商");
|
|
@@ -153,7 +155,7 @@ public class GoodsPurchaseLogic {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bean.setId(IdWorker.getIdStr())
|
|
bean.setId(IdWorker.getIdStr())
|
|
|
- .setJoinCode(adminWebsit.getJoinCode())
|
|
|
|
|
|
|
+ .setJoinCode(adminUser.getJoinCode())
|
|
|
.setStatus(ExamineStatusEnum.SAVE.getKey());
|
|
.setStatus(ExamineStatusEnum.SAVE.getKey());
|
|
|
|
|
|
|
|
// 检查商品信息唯一
|
|
// 检查商品信息唯一
|
|
@@ -368,13 +370,13 @@ public class GoodsPurchaseLogic {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void submit(String id) throws InterruptedException {
|
|
|
|
|
|
|
+ public void submit(String id) throws Exception {
|
|
|
this.commonHandlePurchase(id, ExamineStatusEnum.WAIT);
|
|
this.commonHandlePurchase(id, ExamineStatusEnum.WAIT);
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private void commonHandlePurchase(String id, ExamineStatusEnum statusEnum) throws InterruptedException {
|
|
|
|
|
|
|
+ private void commonHandlePurchase(String id, ExamineStatusEnum statusEnum) throws Exception {
|
|
|
AdminUserCom adminUser = commonLogic.getAdminUser();
|
|
AdminUserCom adminUser = commonLogic.getAdminUser();
|
|
|
|
|
|
|
|
String companyId = null;
|
|
String companyId = null;
|
|
@@ -446,28 +448,72 @@ public class GoodsPurchaseLogic {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ final DateTime curDate = DateUtil.date();
|
|
|
// 更新商品采购入库单状态
|
|
// 更新商品采购入库单状态
|
|
|
goodsPurchaseService.lambdaUpdate()
|
|
goodsPurchaseService.lambdaUpdate()
|
|
|
.set(GoodsPurchase::getStatus, statusEnum.getKey().equals(ExamineStatusEnum.FAIL.getKey()) ? ExamineStatusEnum.SAVE.getKey() : statusEnum.getKey())
|
|
.set(GoodsPurchase::getStatus, statusEnum.getKey().equals(ExamineStatusEnum.FAIL.getKey()) ? ExamineStatusEnum.SAVE.getKey() : statusEnum.getKey())
|
|
|
.set(statusEnum.getKey().equals(ExamineStatusEnum.WAIT.getKey()), GoodsPurchase::getSubmitBy, adminUser.getNickName())
|
|
.set(statusEnum.getKey().equals(ExamineStatusEnum.WAIT.getKey()), GoodsPurchase::getSubmitBy, adminUser.getNickName())
|
|
|
- .set(statusEnum.getKey().equals(ExamineStatusEnum.WAIT.getKey()), GoodsPurchase::getSubmitTime, DateUtil.date())
|
|
|
|
|
|
|
+ .set(statusEnum.getKey().equals(ExamineStatusEnum.WAIT.getKey()), GoodsPurchase::getSubmitTime, curDate)
|
|
|
.set(statusEnum.getKey().equals(ExamineStatusEnum.OK.getKey())
|
|
.set(statusEnum.getKey().equals(ExamineStatusEnum.OK.getKey())
|
|
|
|| statusEnum.getKey().equals(ExamineStatusEnum.FAIL.getKey()),
|
|
|| statusEnum.getKey().equals(ExamineStatusEnum.FAIL.getKey()),
|
|
|
GoodsPurchase::getExamineBy, adminUser.getNickName())
|
|
GoodsPurchase::getExamineBy, adminUser.getNickName())
|
|
|
.set(statusEnum.getKey().equals(ExamineStatusEnum.OK.getKey())
|
|
.set(statusEnum.getKey().equals(ExamineStatusEnum.OK.getKey())
|
|
|
|| statusEnum.getKey().equals(ExamineStatusEnum.FAIL.getKey()),
|
|
|| statusEnum.getKey().equals(ExamineStatusEnum.FAIL.getKey()),
|
|
|
- GoodsPurchase::getExamineTime, DateUtil.date())
|
|
|
|
|
|
|
+ GoodsPurchase::getExamineTime, curDate)
|
|
|
.eq(GoodsPurchase::getId, id)
|
|
.eq(GoodsPurchase::getId, id)
|
|
|
.eq(GoodsPurchase::getCompanyWechatId, companyId)
|
|
.eq(GoodsPurchase::getCompanyWechatId, companyId)
|
|
|
.update();
|
|
.update();
|
|
|
|
|
|
|
|
//审核通过加库存操作
|
|
//审核通过加库存操作
|
|
|
if (statusEnum.getKey().equals(ExamineStatusEnum.OK.getKey())) {
|
|
if (statusEnum.getKey().equals(ExamineStatusEnum.OK.getKey())) {
|
|
|
- jxGoodsLogic.addStock(id);
|
|
|
|
|
-
|
|
|
|
|
|
|
+// jxGoodsLogic.addStock(id);
|
|
|
|
|
+// 物料库存处理方法
|
|
|
|
|
+ purchase.setExamineTime(curDate);
|
|
|
|
|
+ this.handleGoodsMaterialStock(purchase, purchaseItemList, materialItemGroupMap, adminUser);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void handleGoodsMaterialStock(GoodsPurchase purchase, List<GoodsPurchaseItem> purchaseItemList,
|
|
|
|
|
+ Map<String, List<GoodsMaterialItem>> materialItemGroupMap, AdminUserCom adminUser) throws Exception {
|
|
|
|
|
+ List<GoodsMaterialStockDTO> dtoList = new ArrayList<>();
|
|
|
|
|
+ for (GoodsPurchaseItem purchaseItem : purchaseItemList) {
|
|
|
|
|
+ final Map<String, GoodsMaterialItem> materialItemMap = materialItemGroupMap.get(purchaseItem.getGoodsMaterialId())
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.toMap(GoodsMaterialItem::getType, Function.identity()));
|
|
|
|
|
+ GoodsMaterialStockDTO dto = new GoodsMaterialStockDTO();
|
|
|
|
|
+ dto.setDirectFlag(DirectFlagEnum.ADD.getKey())
|
|
|
|
|
+ .setRemindName(purchaseItem.getGoodsMaterialName())
|
|
|
|
|
+ .setCompanyWechatId(purchase.getCompanyWechatId())
|
|
|
|
|
+ .setCompanyWechatName(purchase.getCompanyWechatName())
|
|
|
|
|
+ .setBrandId(purchaseItem.getBrandId())
|
|
|
|
|
+ .setBrandName(purchaseItem.getBrandName())
|
|
|
|
|
+ .setMainId(purchaseItem.getMainId())
|
|
|
|
|
+ .setMainName(purchaseItem.getMainName())
|
|
|
|
|
+ .setSmallId(purchaseItem.getSmallId())
|
|
|
|
|
+ .setSmallName(purchaseItem.getSmallName())
|
|
|
|
|
+ .setGoodsName(purchaseItem.getGoodsMaterialName())
|
|
|
|
|
+ .setSeriesName(purchaseItem.getSeriesName())
|
|
|
|
|
+ .setSpecsName(purchaseItem.getSpecsName())
|
|
|
|
|
+ .setUnit(purchaseItem.getUnit())
|
|
|
|
|
+ .setInsideQty(Objects.nonNull(materialItemMap.get(GoodsMaterialTypeEnum.INSIDE.getKey())) ? materialItemMap.get(GoodsMaterialTypeEnum.INSIDE.getKey()).getQty() : 0)
|
|
|
|
|
+ .setOutQty(Objects.nonNull(materialItemMap.get(GoodsMaterialTypeEnum.OUT.getKey())) ? materialItemMap.get(GoodsMaterialTypeEnum.OUT.getKey()).getQty() : 0)
|
|
|
|
|
+ .setPartsQty(Objects.nonNull(materialItemMap.get(GoodsMaterialTypeEnum.PARTS.getKey())) ? materialItemMap.get(GoodsMaterialTypeEnum.PARTS.getKey()).getQty() : 0)
|
|
|
|
|
+ .setPrice(purchaseItem.getPrice())
|
|
|
|
|
+ .setSdate(purchase.getExamineTime())
|
|
|
|
|
+ .setChangeQty(purchaseItem.getQty())
|
|
|
|
|
+ .setRefBillNo(purchase.getId())
|
|
|
|
|
+ .setRefBillType("采购入库单")
|
|
|
|
|
+ .setStorageId(purchase.getStorageId())
|
|
|
|
|
+ .setStorageName(purchase.getStorageName())
|
|
|
|
|
+ .setGoodsMaterialId(purchaseItem.getGoodsMaterialId())
|
|
|
|
|
+ .setRemark(purchase.getRemark())
|
|
|
|
|
+ .setOperateBy(adminUser.getAdminUserId());
|
|
|
|
|
+ dtoList.add(dto);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ goodsMaterialStockLogic.handleGoodsMaterialStock(dtoList);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private void checkCodeQty(GoodsPurchaseItem item, Map<String, List<GoodsMaterialItem>> materialItemGroupMap, Map<String, List<GoodsPurchaseCode>> codeGroupMap) {
|
|
private void checkCodeQty(GoodsPurchaseItem item, Map<String, List<GoodsMaterialItem>> materialItemGroupMap, Map<String, List<GoodsPurchaseCode>> codeGroupMap) {
|
|
|
List<GoodsMaterialItem> materialItems = materialItemGroupMap.get(item.getGoodsMaterialId());
|
|
List<GoodsMaterialItem> materialItems = materialItemGroupMap.get(item.getGoodsMaterialId());
|
|
|
for (GoodsMaterialItem materialItem : materialItems) {
|
|
for (GoodsMaterialItem materialItem : materialItems) {
|
|
@@ -488,7 +534,7 @@ public class GoodsPurchaseLogic {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void confirm(String id, ExamineStatusEnum statusEnum) throws InterruptedException {
|
|
|
|
|
|
|
+ public void confirm(String id, ExamineStatusEnum statusEnum) throws Exception {
|
|
|
this.commonHandlePurchase(id, statusEnum);
|
|
this.commonHandlePurchase(id, statusEnum);
|
|
|
}
|
|
}
|
|
|
|
|
|