FengChaoYu 1 år sedan
förälder
incheckning
155cfad92c

+ 33 - 9
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/material/parts/WebsitPartsSalesOrderLogic.java

@@ -229,6 +229,13 @@ public class WebsitPartsSalesOrderLogic {
         }
         //获取登录人昵称
         DateTime curDate = DateUtil.date();
+        final Storage storage = storageService.lambdaQuery()
+                .eq(Storage::getCompanyWechatId, wechat.getCompanyWechatId())
+                .eq(Storage::getWebsitId, partsSalesOrderBean.getWebsitId())
+                .eq(Storage::getIsDefault, true)
+                .one();
+        partsSalesOrderBean.setStorageId(storage.getStorageId())
+                .setStorageName(storage.getStorageName());
 
         if (Objects.isNull(partsSalesOrderBean.getPayType())) {
             // 默认通联
@@ -268,7 +275,7 @@ public class WebsitPartsSalesOrderLogic {
         websitPartsSalesItemService.saveBatch(partsSalesOrderItems);
     }
 
-    private Map<String, Object> validate(com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderBean partsSalesOrderBean) {
+    private Map<String, Object> validate(PartsSalesOrderBean partsSalesOrderBean) {
         Map<String, Object> result = new HashMap<>();
         result.put("isSuccess" , Boolean.TRUE);
 
@@ -387,8 +394,8 @@ public class WebsitPartsSalesOrderLogic {
             result.put("msg", "新增配件销售单失败,以下配件配件编码不存在: "+String.join(",", notExsistisPartsNumbers));
             return result;
         }
-        List<com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderItemBean> values = new ArrayList<>(partsSalesOrderBean.getItemList().stream()
-                .collect(Collectors.toMap(com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderItemBean::getPartsNumber, Function.identity(), (key1, key2) -> {
+        List<PartsSalesOrderItemBean> values = new ArrayList<>(partsSalesOrderBean.getItemList().stream()
+                .collect(Collectors.toMap(PartsSalesOrderItemBean::getPartsNumber, Function.identity(), (key1, key2) -> {
                     key1.setQty(key1.getQty().add(key2.getQty()));
                     return key1;
                 })).values());
@@ -494,9 +501,26 @@ public class WebsitPartsSalesOrderLogic {
         }
     }
 
-    private List<WebsitPartsSalesItem> createSalesOrderItem(com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderBean partsSalesOrderBean, List<com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderItemBean> itemList) {
+    private List<WebsitPartsSalesItem> createSalesOrderItem(PartsSalesOrderBean partsSalesOrderBean, List<PartsSalesOrderItemBean> itemList) {
         List<WebsitPartsSalesItem> partsSalesOrderItems = new ArrayList<>();
-        for(com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderItemBean partsSalesOrderItemBean : itemList) {
+        final List<WebsitStock> websitStocks = websitStockService.lambdaQuery()
+                .eq(WebsitStock::getCompanyWechatId, partsSalesOrderBean.getCompanyWechatId())
+                .eq(WebsitStock::getWebsitId, partsSalesOrderBean.getWebsitId())
+                .eq(WebsitStock::getStorageId, partsSalesOrderBean.getStorageId())
+                .eq(WebsitStock::getGoodsType, WebsitGoodsTypeEnum.P.toString())
+                .in(WebsitStock::getGoodsId, itemList.stream().map(PartsSalesOrderItemBean::getPartsNumber).collect(Collectors.toList()))
+                .list();
+        if (CollectionUtil.isNotEmpty(websitStocks)) {
+            final Map<String, WebsitStock> stockMap = websitStocks.stream()
+                    .collect(Collectors.toMap(WebsitStock::getGoodsId, Function.identity()));
+            for (PartsSalesOrderItemBean salesItem : itemList) {
+                final WebsitStock stock = stockMap.get(salesItem.getPartsNumber());
+                if (Objects.nonNull(stock) && salesItem.getQty().compareTo(stock.getQty()) > 0) {
+                    throw new RemoteServiceException(salesItem.getPartsName() + " 销售数量不能大于库存数量");
+                }
+            }
+        }
+        for(PartsSalesOrderItemBean partsSalesOrderItemBean : itemList) {
             WebsitPartsSalesItem partsSalesOrderItem = new WebsitPartsSalesItem();
             BeanUtils.copyProperties(partsSalesOrderItemBean, partsSalesOrderItem);
             partsSalesOrderItem.setSalesId(partsSalesOrderBean.getId())
@@ -507,16 +531,16 @@ public class WebsitPartsSalesOrderLogic {
         return partsSalesOrderItems;
     }
 
-    public com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderBean loadSalesOrderById(String id) {
+    public PartsSalesOrderBean loadSalesOrderById(String id) {
         WebsitPartsSales partsSalesOrder = websitPartsSalesService.getById(id);
 
         if(Objects.isNull(partsSalesOrder)) {
             throw new RemoteServiceException("获取配件销售单失败") ;
         }
 
-        com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderBean partsSalesOrderBean = new com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderBean();
+        PartsSalesOrderBean partsSalesOrderBean = new PartsSalesOrderBean();
         BeanUtils.copyProperties(partsSalesOrder, partsSalesOrderBean, PartsSalesOrderBean.class);
-        List<com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderItemBean> itemList = materialMapper.selectItemBySalesOrderId(partsSalesOrderBean.getId());
+        List<PartsSalesOrderItemBean> itemList = materialMapper.selectItemBySalesOrderId(partsSalesOrderBean.getId());
         partsSalesOrderBean.setItemList(Collections.isEmpty(itemList) ? null : itemList);
         List<WebsitSalesPayOrder> payList = websitSalesPayOrderService.lambdaQuery()
                 .eq(WebsitSalesPayOrder::getCompanyWechatId, partsSalesOrder.getCompanyWechatId())
@@ -541,7 +565,7 @@ public class WebsitPartsSalesOrderLogic {
 
     public Object submit(String id) {
         CurrentCompanyWechat wechat = commonLogic.getCurrentCompanyWechat();
-        com.gree.mall.miniapp.bean.material.parts.PartsSalesOrderBean partsSalesOrderBean = loadSalesOrderById(id);
+        PartsSalesOrderBean partsSalesOrderBean = loadSalesOrderById(id);
         if(Objects.isNull(partsSalesOrderBean)) {
             throw new RemoteServiceException("配件单提交失败,销售单信息不能为空") ;
         }

+ 2 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitSalesLogic.java

@@ -312,6 +312,8 @@ public class WebsitSalesLogic {
             final List<WebsitStock> websitStocks = websitStockService.lambdaQuery()
                     .eq(WebsitStock::getCompanyWechatId, sales.getCompanyWechatId())
                     .eq(WebsitStock::getWebsitId, sales.getWebsitId())
+                    .eq(WebsitStock::getGoodsType, WebsitGoodsTypeEnum.P.getKey())
+                    .eq(WebsitStock::getStorageId, sales.getStorageId())
                     .in(WebsitStock::getGoodsId, itemList.stream().map(WebsitSalesItem::getGoodsId).collect(Collectors.toList()))
                     .list();
             if (CollectionUtil.isNotEmpty(websitStocks)) {