Sfoglia il codice sorgente

流水修正问题处理

yzc 1 anno fa
parent
commit
050e6ea182

+ 5 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/arrival/po/ArrivalStockRecords.java

@@ -38,4 +38,9 @@ public class ArrivalStockRecords extends BasePo {
      */
     private String arrivalCode;
 
+    /**
+     * 流水Id
+     */
+    private Long stockJournalId;
+
 }

+ 5 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/arrival/po/ArrivalStockRecordsDetails.java

@@ -45,4 +45,9 @@ public class ArrivalStockRecordsDetails extends BasePo {
      */
     private Long businessDetailsId;
 
+    /**
+     * 流水明细Id
+     */
+    private Long stockJournalDetailsId;
+
 }

+ 25 - 1
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockJournalDetailsServiceImpl.java

@@ -58,6 +58,8 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
     private ArrivalStockRecordsDetailsService arrivalStockRecordsDetailsService;
     @Autowired
     private ArrivalStockRecordsService arrivalStockRecordsService;
+    @Autowired
+    private StockJournalDetailsService stockJournalDetailsService;
 
     @Override
     public Page<StockJournalDetailsVo> getPage(StockJournalSelectDto dto) {
@@ -164,6 +166,18 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
         Assert.notEmpty(dto.getId(), "流水明细id不能为空");
         StockJournalDetails stockJournalDetails = getById(dto.getId());
 
+        //根据流水获取入库批次
+        List<Long> stockJournalDetailsList = stockJournalDetailsService.listObject(StockJournalDetails::getId,q -> q
+                .eq(StockJournalDetails::getBusinessDetailsId,stockJournalDetails.getBusinessDetailsId())
+                .eq(StockJournalDetails::getProductId,stockJournalDetails.getProductId())
+                .eq(StockJournalDetails::getQuantity,stockJournalDetails.getQuantity())
+                .orderByAsc(StockJournalDetails::getCreateTime)
+        );
+        int batchIndex = stockJournalDetailsList.indexOf(stockJournalDetails.getId());
+        if(batchIndex==-1){
+            throw new ServiceException("找不到入库批次信息");
+        }
+
         //保存操作记录
         StockJournalDetailsEditRecord stockJournalDetailsEditRecord = new StockJournalDetailsEditRecord();
         stockJournalDetailsEditRecord.setStockJournalDetailsId(dto.getId());
@@ -219,8 +233,18 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
         stockWaitService.updateById(stockWait);
 
         //修改待质检数量
+        List<Long> arrivalStockRecordsDetailsIds = arrivalStockRecordsDetailsService.listObject(ArrivalStockRecordsDetails::getId, q -> q
+                .eq(ArrivalStockRecordsDetails::getBusinessDetailsId, stockJournalDetails.getBusinessDetailsId())
+                .eq(ArrivalStockRecordsDetails::getProductInfoId, stockJournalDetails.getProductId())
+                .eq(ArrivalStockRecordsDetails::getQuantity, stockJournalDetails.getQuantity())
+                .orderByAsc(ArrivalStockRecordsDetails::getCreateTime)
+        );
+
+        //根据批次获取到入库记录
+        Long arrivalStockRecordsDetailsId = arrivalStockRecordsDetailsIds.get(batchIndex);
+
         boolean update2 = arrivalStockRecordsDetailsService.update(q -> q
-                .eq(ArrivalStockRecordsDetails::getBusinessDetailsId, stockWaitDetailsId)
+                .eq(ArrivalStockRecordsDetails::getId, arrivalStockRecordsDetailsId)
                 .setSql("quantity = quantity+"+subtract)
         );
         if (!update2) {

+ 15 - 10
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
@@ -331,6 +332,9 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
 
         List<StockJournalDetails> stockJournalDetailsList = new ArrayList<>();
 
+        List<ArrivalStockRecordsDetails> arrivalStockRecordsDetailsList = new ArrayList<>();
+
+
         //操作库存
         List<Long> swdIds = stockWaitDetailsDtoList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
         Map<Long, StockWaitDetails> oldStockWaitDetailsMap = stockWaitDetailsService.mapKEntity(StockWaitDetails::getId, q -> q.in(StockWaitDetails::getId, swdIds));
@@ -342,11 +346,20 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
             stockList.add(stock);
 
             StockJournalDetails stockJournalDetails = new StockJournalDetails();
+            stockJournalDetails.setId(IdWorker.getId());
             stockJournalDetails.setBusinessDetailsId(waitDetails.getId());
             stockJournalDetails.setQuantity(waitDetails.getQuantity());
             stockJournalDetails.setProductId(temp.getProductId());
             stockJournalDetails.setStockJournalId(stockJournal.getId());
             stockJournalDetailsList.add(stockJournalDetails);
+
+            ArrivalStockRecordsDetails arrivalStockRecordsDetails = new ArrivalStockRecordsDetails();
+            arrivalStockRecordsDetails.setStockJournalDetailsId(stockJournalDetails.getId());
+            arrivalStockRecordsDetails.setProductInfoId(waitDetails.getProductId());
+            arrivalStockRecordsDetails.setQuantity(waitDetails.getQuantity());
+            arrivalStockRecordsDetails.setQualityQuantity(BigDecimal.ZERO);
+            arrivalStockRecordsDetails.setBusinessDetailsId(waitDetails.getId());
+            arrivalStockRecordsDetailsList.add(arrivalStockRecordsDetails);
         }
 
 
@@ -379,18 +392,10 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
             arrivalStockRecords.setWarehouseId(stockWaitDto.getWarehouseId());
             arrivalStockRecords.setQualityStatus(0);
             arrivalStockRecords.setArrivalCode(json.getString("arrivalCode"));//设置到货编码
+            arrivalStockRecords.setStockJournalId(stockJournal.getId());
             arrivalStockRecordsService.save(arrivalStockRecords);
             //创建入库明细
-            List<ArrivalStockRecordsDetails> arrivalStockRecordsDetailsList = new ArrayList<>();
-            for (StockWaitDetails waitDetails : stockWaitDetailsDtoList) {
-                ArrivalStockRecordsDetails arrivalStockRecordsDetails = new ArrivalStockRecordsDetails();
-                arrivalStockRecordsDetails.setArrivalStockRecordsId(arrivalStockRecords.getId());
-                arrivalStockRecordsDetails.setProductInfoId(waitDetails.getProductId());
-                arrivalStockRecordsDetails.setQuantity(waitDetails.getQuantity());
-                arrivalStockRecordsDetails.setQualityQuantity(BigDecimal.ZERO);
-                arrivalStockRecordsDetails.setBusinessDetailsId(waitDetails.getId());
-                arrivalStockRecordsDetailsList.add(arrivalStockRecordsDetails);
-            }
+            arrivalStockRecordsDetailsList.forEach(item->item.setArrivalStockRecordsId(arrivalStockRecords.getId()));
             arrivalStockRecordsDetailsService.saveBatch(arrivalStockRecordsDetailsList);
         }
         //如果是采购到货修改到货状态