Browse Source

修改流水使用统一库存操作方法

yzc 1 year ago
parent
commit
28d7d1ffe7

+ 16 - 43
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WmsServiceImpl.java

@@ -39,14 +39,12 @@ import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.service.WmsService;
 import com.fjhx.wms.service.stock.StockWaitService;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -74,14 +72,6 @@ public class WmsServiceImpl implements WmsService {
     @Autowired
     private JdOrderDetailsService jdOrderDetailsService;
 
-//    /**
-//     * 销售订单出库
-//     */
-//    @Override
-//    public void outbound(StockWaitDetailsDto stockWaitDetailsDto) {
-//        orderInfoService.outbound(stockWaitDetailsDto);
-//    }
-
     @Override
     public void outbounds(StockWaitDto stockWaitDto) {
         orderInfoService.outbounds(stockWaitDto);
@@ -153,33 +143,6 @@ public class WmsServiceImpl implements WmsService {
         groupRecordDetailsService.add(dto);
     }
 
-//    @Override
-//    public void jdOrderOutbound(StockWaitDto stockWaitDto) {
-//        JdOrderDto jdOrderDto = new JdOrderDto();
-//        jdOrderDto.setId(stockWaitDto.getBusinessId());
-//        jdOrderDto.setInWarehouseId(stockWaitDto.getInWarehouseId());
-//        jdOrderDto.setOutWarehouseId(stockWaitDto.getOutWarehouseId());
-//        jdOrderDto.setReservationCode(stockWaitDto.getReservationCode());
-//        jdOrderDto.setRemark(stockWaitDto.getRemark());
-//        jdOrderDto.setLogisticsCompanyCode(stockWaitDto.getLogisticsCompanyCode());
-//        jdOrderDto.setLogisticsCode(stockWaitDto.getLogisticsCode());
-//
-//        List<StockWaitDetails> stockWaitDetailsList = stockWaitDto.getStockWaitDetailsList();
-//        for (StockWaitDetails stockWaitDetails : stockWaitDetailsList) {
-//            JdOrderDetails jdOrderDetails = new JdOrderDetails();
-//            jdOrderDetails.setId(stockWaitDetails.getBusinessDetailsId());
-//            jdOrderDetails.setProductId(stockWaitDetails.getProductId());
-//            jdOrderDetails.setQuantity(stockWaitDetails.getQuantity());
-//            jdOrderDetails.setOriginalNum(stockWaitDetails.getQuantity().intValue());
-//        }
-//        jdOrderService.outbound(jdOrderDto);
-//    }
-
-//    @Override
-//    public void purchaseBackOutbound(StockWaitDto stockWaitDto) {
-//        purchaseBackService.backOuts(stockWaitDto);
-//    }
-
     @Override
     public void editArrivalRemark(Long businessId, String arrivalRemark) {
         logisticsInfosService.update(q -> q.eq(LogisticsInfos::getBusinessId, businessId).set(LogisticsInfos::getArrivalRemark, arrivalRemark));
@@ -239,9 +202,9 @@ public class WmsServiceImpl implements WmsService {
     }
 
     @Override
-    public void jdTellBackOrer(StockWaitDto dto){
+    public void jdTellBackOrer(StockWaitDto dto) {
         JdOrder jdOrder = jdOrderService.getById(dto.getBusinessId());
-        if(ObjectUtil.isEmpty(jdOrder)){
+        if (ObjectUtil.isEmpty(jdOrder)) {
             throw new ServiceException("查询不到京东订单信息");
         }
         List<StockWaitDetailsDto> stockWaitDetailsList = dto.getStockWaitDetailsList();
@@ -255,7 +218,7 @@ public class WmsServiceImpl implements WmsService {
         List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
         for (StockWaitDetails stockWaitDetails : stockWaitDetailsList) {
             JdOrderDetails oldJdOrderDetails = jdOrderDetailsMap.get(stockWaitDetails.getBusinessDetailsId());
-            Assert.notEmpty(oldJdOrderDetails,"查询不到京东订单明细信息,请联系管理员或稍后重试!");
+            Assert.notEmpty(oldJdOrderDetails, "查询不到京东订单明细信息,请联系管理员或稍后重试!");
 
             JdOrderDetails jdOrderDetails = new JdOrderDetails();
             jdOrderDetails.setId(oldJdOrderDetails.getId());
@@ -268,8 +231,18 @@ public class WmsServiceImpl implements WmsService {
     }
 
     @Override
-    public List<LogisticsInfosBo> getLogisticsInfosByBusinessIds(List<Long> businessIds){
+    public List<LogisticsInfosBo> getLogisticsInfosByBusinessIds(List<Long> businessIds) {
         List<LogisticsInfos> list = logisticsInfosService.list(q -> q.in(LogisticsInfos::getBusinessId, businessIds));
         return BeanUtil.copyToList(list, LogisticsInfosBo.class);
     }
+
+    @Override
+    public void updateQualityTotalQuantityByArrivalRecordDetailsId(Long arrivalRecordDetailsId, BigDecimal changeQuantity) {
+        qualityDetailsService.update(q -> q
+                .eq(QualityDetails::getArrivalStockRecordsDetailsId, arrivalRecordDetailsId)
+                .setSql("total_quantity  = total_quantity + " + changeQuantity)
+                .set(QualityDetails::getUpdateTime, new Date())
+                .set(QualityDetails::getUpdateUser, SecurityUtils.getUserId())
+        );
+    }
 }

+ 1 - 1
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockJournalDetailsController.java

@@ -82,7 +82,7 @@ public class StockJournalDetailsController {
     }
 
     /**
-     * 出入库记录明细删除
+     * 出入库流水修改
      */
     @PostMapping("/editQuantity")
     public void editQuantity(@RequestBody StockJournalDetailsDto dto) {

+ 2 - 15
hx-wms/src/main/java/com/fjhx/wms/service/WmsService.java

@@ -11,11 +11,6 @@ import java.util.List;
 public interface WmsService {
 
     /**
-     * 销售订单出库
-     */
-//    void outbound(StockWaitDetailsDto stockWaitDetailsDto);
-
-    /**
      * 销售订单出库多条
      */
     void outbounds(StockWaitDto stockWaitDto);
@@ -40,16 +35,6 @@ public interface WmsService {
      */
     void autoCombination(Long productId, BigDecimal quantity, Long warehouseId);
 
-//    /**
-//     * 京东订单excel出库
-//     */
-//    void jdOrderOutbound(StockWaitDto stockWaitDto);
-
-//    /**
-//     * 采购退货excel出库
-//     */
-//    void purchaseBackOutbound(StockWaitDto stockWaitDto);
-
     void editArrivalRemark(Long businessId, String arrivalRemark);
 
     String getArrivalRemark(Long businessId);
@@ -65,4 +50,6 @@ public interface WmsService {
     void jdTellBackOrer(StockWaitDto dto);
 
     List<LogisticsInfosBo> getLogisticsInfosByBusinessIds(List<Long> businessIds);
+
+    void updateQualityTotalQuantityByArrivalRecordDetailsId(Long arrivalRecordDetailsId, BigDecimal changeQuantity);
 }

+ 5 - 9
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockCheckServiceImpl.java

@@ -38,10 +38,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -145,12 +142,11 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
         stockCheckDetailsService.saveBatch(list);
 
         for (StockCheckDetails stockCheckDetails : list) {
-            Stock stock = stockService.getOne(q -> q
-                    .eq(Stock::getWarehouseId, stockCheckDto.getWarehouseId())
-                    .eq(Stock::getProductId, stockCheckDetails.getProductId())
-            );
+            Stock stock = new Stock();
+            stock.setProductId(stockCheckDetails.getProductId());
             stock.setQuantity(new BigDecimal(stockCheckDetails.getCheckQuantity()));
-            stockService.updateById(stock);
+
+            stockService.ModifyInventory(null,5, Collections.singletonList(stock),stockCheckDto.getWarehouseId());
         }
     }
 

+ 7 - 8
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockJournalDetailsServiceImpl.java

@@ -283,14 +283,11 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
         } else {
             throw new ServiceException("未知流水操作类型");
         }
-        boolean update = stockService.update(q -> q
-                .eq(Stock::getProductId, stockJournalDetails.getProductId())
-                .eq(Stock::getWarehouseId, stockJournal.getWarehouseId())
-                .setSql("victoriatourist_json = JSON_SET(victoriatourist_json,'$.frozenQuantity',ifnull(json_unquote(victoriatourist_json -> '$.frozenQuantity'), 0) + " + subtract + ")")
-        );
-        if (!update) {
-            throw new ServiceException("操作失败请重试");
-        }
+        Stock changeStock = new Stock();
+        changeStock.setProductId(stockJournalDetails.getProductId());
+        changeStock.setQuantity(subtract);
+        stockService.ModifyInventory(null, 3, Collections.singletonList(changeStock), stockJournal.getWarehouseId());
+
         //修改待出入库数据
         Long stockWaitDetailsId = stockJournalDetails.getBusinessDetailsId();
         Assert.notEmpty(stockWaitDetailsId, "无法关联入库信息,操作失败");
@@ -336,6 +333,8 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
         if (!update2) {
             throw new ServiceException("操作失败请重试");
         }
+        //更新质检记录总数量
+        wmsService.updateQualityTotalQuantityByArrivalRecordDetailsId(arrivalStockRecordsDetailsId, subtract);
 
         //修改质检状态
         ArrivalStockRecordsDetails arrivalStockRecordsDetails = arrivalStockRecordsDetailsService.getOne(q -> q

+ 11 - 11
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -543,11 +543,6 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
 
         List<StockJournalDetails> stockJournalDetailsList = new ArrayList<>();
         for (Stock stock : list) {
-            //忽略操作数量为0的记录 避免出现出入库记录为0的条目
-            if (BigDecimal.ZERO.compareTo(stock.getQuantity()) == 0) {
-                continue;
-            }
-
             Stock oldStocks = stockMap.get(stock.getProductId());
             //如果库存不存在 就创建一条空库存
             if (ObjectUtil.isEmpty(oldStocks)) {
@@ -633,16 +628,21 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 }
                 json.put("defectiveQuantity", defectiveQuantity);
                 oldStocks.setVictoriatouristJson(JSONObject.toJSONString(json, JSONWriter.Feature.WriteLongAsString));
+            } else if (type == 5) {
+                //直接修改库存数量
+                oldStocks.setQuantity(stock.getQuantity());
             } else {
                 throw new ServiceException("未知库存操作类型");
             }
             data.add(oldStocks);
-            //创建出入库明细
-            StockJournalDetails stockJournalDetails = new StockJournalDetailsDto();
-            stockJournalDetails.setStockJournalId(stockJournalId);
-            stockJournalDetails.setProductId(stock.getProductId());
-            stockJournalDetails.setQuantity(stock.getQuantity());
-            stockJournalDetailsList.add(stockJournalDetails);
+            //创建出入库明细 忽略操作数量为0的记录 避免出现出入库记录为0的条目
+            if (BigDecimal.ZERO.compareTo(stock.getQuantity()) != 0) {
+                StockJournalDetails stockJournalDetails = new StockJournalDetailsDto();
+                stockJournalDetails.setStockJournalId(stockJournalId);
+                stockJournalDetails.setProductId(stock.getProductId());
+                stockJournalDetails.setQuantity(stock.getQuantity().abs());
+                stockJournalDetailsList.add(stockJournalDetails);
+            }
         }
         //操作库存
         saveOrUpdateBatch(data);