FengChaoYu 7 mēneši atpakaļ
vecāks
revīzija
a54d103575

+ 20 - 9
mall-server-api/src/main/java/com/gree/mall/manager/controller/websit/WebsitSalesRetController.java

@@ -2,18 +2,13 @@ package com.gree.mall.manager.controller.websit;
 
 import cn.hutool.core.lang.TypeReference;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.annotation.ZfireList;
-import com.gree.mall.manager.bean.FreightTemplateVO;
-import com.gree.mall.manager.bean.template.TemplateBean;
 import com.gree.mall.manager.bean.websit.WebsitSalesRetAddUP;
 import com.gree.mall.manager.bean.websit.WebsitSalesRetDetail;
 import com.gree.mall.manager.bean.websit.WebsitSalesRetVO;
+import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.helper.ResponseHelper;
-import com.gree.mall.manager.logic.websit.WebsitLogic;
 import com.gree.mall.manager.logic.websit.WebsitSalesRetLogic;
-import com.gree.mall.manager.plus.entity.AdminWebsit;
-import com.gree.mall.manager.plus.entity.WebsitSalesRet;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
 import io.swagger.annotations.Api;
@@ -21,12 +16,16 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.integration.redis.util.RedisLockRegistry;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.text.ParseException;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Lock;
 
 @Slf4j
 @RestController
@@ -36,7 +35,8 @@ public class WebsitSalesRetController {
 
     @Autowired
     private WebsitSalesRetLogic websitSalesRetLogic;
-
+    @Resource
+    RedisLockRegistry redisLockRegistry;
 
     @ZfireList
     @PostMapping("/list/pageV2")
@@ -64,8 +64,19 @@ public class WebsitSalesRetController {
     public ResponseHelper save(
             @RequestBody WebsitSalesRetAddUP websitSalesRetAddUP,
             HttpServletRequest request
-    ) throws ParseException {
-        websitSalesRetLogic.save(websitSalesRetAddUP);
+    ) throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.MATERIAL_SALES + websitSalesRetAddUP.getSalesId());
+        try {
+            if (obtain.tryLock(5, TimeUnit.SECONDS)) {
+                websitSalesRetLogic.save(websitSalesRetAddUP);
+            }
+        } catch (Exception e) {
+            log.error("【辅材退货订单处理】失败", e);
+            throw e;
+        } finally {
+            obtain.unlock();
+        }
+
         return ResponseHelper.success();
     }
 

+ 17 - 13
mall-server-api/src/main/java/com/gree/mall/manager/logic/websit/WebsitSalesRetLogic.java

@@ -91,15 +91,19 @@ public class WebsitSalesRetLogic {
             throw new RemoteServiceException("请选择退货仓库");
         }
 
-//        final Integer count = websitSalesRetService.lambdaQuery()
-//                .eq(WebsitSalesRet::getSalesId, websitSalesRetAddUP.getSalesId())
-//                .eq(WebsitSalesRet::get)
-//                .count();
+        final Integer count = websitSalesRetService.lambdaQuery()
+                .eq(WebsitSalesRet::getSalesId, websitSalesRetAddUP.getSalesId())
+                .isNull(WebsitSalesRet::getConfirmBy)
+                .count();
+
+        if (count > 0) {
+            throw new RemoteServiceException(websitSalesRetAddUP.getSalesId() + "销售订单发现未处理的退货单,请先处理");
+        }
 
         WebsitSales websitSales = websitSalesService.getById(websitSalesRetAddUP.getSalesId());
         if (!websitSales.getFlag().equals("PAY_TAKE"))
             throw new RemoteServiceException("未提货不能退货");
-        websitSalesRetAddUP.setPayType(websitSales.getPayType().equals(PayTypeEnum.ENGIN.getKey()) ? websitSales.getPayType() : "CASH");
+        websitSalesRetAddUP.setPayType(websitSales.getPayType());
         websitSalesRetAddUP.setWorkerWebsitId(websitSales.getWorkerWebsitId());
         websitSalesRetAddUP.setWorkerWebsitName(websitSales.getWorkerWebsitName());
         websitSalesRetAddUP.setPayNo(websitSales.getPayNo());
@@ -123,7 +127,7 @@ public class WebsitSalesRetLogic {
         for (WebsitSalesRetItem websitSalesRetItem : websitSalesRetAddUP.getWebsitSalesRetItems()) {
             websitSalesRetItem.setId(null);
 
-            WebsitSalesItem one = websitSalesItemService.lambdaQuery().eq(WebsitSalesItem::getSalesId, websitSales.getSalesId())
+            WebsitSalesItem salesItem = websitSalesItemService.lambdaQuery().eq(WebsitSalesItem::getSalesId, websitSales.getSalesId())
                     .eq(WebsitSalesItem::getGoodsId, websitSalesRetItem.getGoodsId()).last("limit 1")
                     .one();
 
@@ -131,23 +135,23 @@ public class WebsitSalesRetLogic {
                 throw new RemoteServiceException("销售数量不能小于1");
 
 
-            one.setRetQty(one.getRetQty().add(websitSalesRetItem.getRetQty()));
+            salesItem.setRetQty(salesItem.getRetQty().add(websitSalesRetItem.getRetQty()));
 
-            if (one.getRetQty().doubleValue() > one.getSalesQty().doubleValue()) {
+            if (salesItem.getRetQty().doubleValue() > salesItem.getSalesQty().doubleValue()) {
                 throw new RemoteServiceException(websitSalesRetItem.getGoodsName() + "超过销售数量");
             }
 
-            this.checkConvertRetQty(one, websitSalesRetItem);
+            this.checkConvertRetQty(salesItem, websitSalesRetItem);
 
-            one.updateById();
+            salesItem.updateById();
 
             websitSales.setRetAmount(websitSales.getRetAmount()
                     .add(websitSalesRetItem.getRetQty().multiply(websitSalesRetItem.getPrice())));
 
             websitSales.updateById();
             websitSalesRetItem.setSalesRetId(websitSalesRetAddUP.getSalesRetId());
-            websitSalesRetItem.setGoodsStockUnit(one.getGoodsStockUnit());
-            websitSalesRetItem.setConvertQty(one.getConvertQty());
+            websitSalesRetItem.setGoodsStockUnit(salesItem.getGoodsStockUnit());
+            websitSalesRetItem.setConvertQty(salesItem.getConvertQty());
             websitSalesRetItem.setExamineQty(websitSalesRetItem.getRetQty());
             if (websitSalesRetItem.getSaleAmount() != null)
                 allAmount = allAmount.add(websitSalesRetItem.getRetQty().multiply(websitSalesRetItem.getPrice()));
@@ -346,7 +350,7 @@ public class WebsitSalesRetLogic {
             websitStockDTO.setRemark(websitSalesRet.getRemark());
             websitStockDTO.setOperateBy(adminUser.getNickName());
             websitStockDTO.setOperateTime(new Date());
-            websitStockDTO.setObj("供应商");
+            websitStockDTO.setObj("师傅");
             websitStockDTO.setStorageId(websitSalesRet.getStorageId());
             websitStockDTOS.add(websitStockDTO);
         }

+ 4 - 4
mall-server-api/src/main/resources/mapper/MaterialMapper.xml

@@ -985,8 +985,8 @@
         SUM(t1.sales_qty) as sales_qty,
         t1.price,
         SUM(t1.sale_amount) as sale_amount,
-        t1.cost as cost,
-        SUM(t1.cost_value) as cost_value,
+        IFNULL(t1.cost, 0) as cost,
+        IFNULL(SUM(t1.cost_value), 0) as cost_value,
         SUM(t1.convert_qty) as convert_qty
         FROM
         (
@@ -1050,8 +1050,8 @@
             SUM(t1.sales_qty) as sales_qty,
             t1.price as price,
             SUM(t1.sale_amount) as sale_amount,
-            t1.cost as cost,
-            SUM(t1.cost_value) as cost_value,
+            IFNULL(t1.cost, 0) as cost,
+            IFNULL(SUM(t1.cost_value), 0) as cost_value,
             SUM(t1.convert_qty) as convert_qty
         FROM
         (