yzc il y a 2 ans
Parent
commit
162821ecd4

+ 48 - 11
hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java

@@ -18,11 +18,17 @@ import com.fjhx.purchase.entity.arrival.po.Arrival;
 import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
 import com.fjhx.purchase.entity.arrival.vo.ArrivalVo;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.subscribe.po.Subscribe;
+import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.mapper.arrival.ArrivalMapper;
 import com.fjhx.purchase.service.WdlyService;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
 import com.fjhx.purchase.service.arrival.ArrivalService;
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
+import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
+import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.fjhx.purchase.util.code.CodeEnum;
 import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.entity.stock.po.StockWaitDetails;
@@ -32,8 +38,12 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 
 /**
@@ -61,6 +71,12 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
 
     @Autowired
     private WdlyService wdlyService;
+    @Autowired
+    SubscribeDetailService subscribeDetailService;
+    @Autowired
+    SubscribeService subscribeService;
+    @Autowired
+    PurchaseDetailService purchaseDetailService;
 
     @Override
     public Page<ArrivalVo> getPage(ArrivalSelectDto dto) {
@@ -141,6 +157,17 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         //创建待入库记录
         String victoriatouristJson = arrival.getVictoriatouristJson();
         JSONObject json = JSONObject.parseObject(victoriatouristJson);
+        //去申购单取入库仓库id
+        PurchaseDetail one = purchaseDetailService.getOne(q -> q.eq(PurchaseDetail::getPurchaseId, arrival.getPurchaseId()));
+        Long subscribeDetailId = one.getSubscribeDetailId();
+        SubscribeDetail byId = subscribeDetailService.getById(subscribeDetailId);
+        Subscribe byId1 = subscribeService.getById(byId.getSubscribeId());
+        String victoriatouristJson1 = byId1.getVictoriatouristJson();
+        if(ObjectUtil.isNotEmpty(victoriatouristJson1)){
+            JSONObject json1 = JSONObject.parseObject(victoriatouristJson1);
+            Long receiptWarehouseId = json1.getLong("receiptWarehouseId");
+            json.put("receiptWarehouseId",receiptWarehouseId);
+        }
         //修改发货记录的状态为到货
         Long deliverGoodsId = json.getLong("deliverGoodsId");
         wdlyService.updateDeliverGoodsStatus(deliverGoodsId);
@@ -152,7 +179,7 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         stockWait.setBusinessType(3);//采购到货
         //将业务id设置成到货id
         stockWait.setBusinessId(arrival.getId());
-        stockWait.setVictoriatouristJson(victoriatouristJson);
+        stockWait.setVictoriatouristJson(json.toJSONString());
         stockWaitService.save(stockWait);
 
         //取出到货明细
@@ -162,16 +189,26 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         }
 
         List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
-        for (ArrivalDetail d : arrivalDetailList) {
-            d.setId(IdWorker.getId());
-            d.setArrivalId(arrival.getId());
-
-            StockWaitDetails stockWaitDetails = new StockWaitDetails();
-            stockWaitDetails.setStockWaitId(stockWait.getId());
-            stockWaitDetails.setBusinessDetailsId(d.getId());
-            stockWaitDetails.setProductId(d.getBussinessId());
-            stockWaitDetails.setQuantity(d.getCount());
-            stockWaitDetailsList.add(stockWaitDetails);
+        List<Long> arrivalDids = arrivalDetailList.stream().map(ArrivalDetail::getPurchaseDetailId).collect(Collectors.toList());
+        List<PurchaseDetail> purchaseDetailList = purchaseDetailService.listByIds(arrivalDids);
+        if(ObjectUtil.isNotEmpty(purchaseDetailList)) {
+            Map<Long, PurchaseDetail> purchaseDetailMap = purchaseDetailList.stream().collect(Collectors.toMap(PurchaseDetail::getId, Function.identity()));
+            for (ArrivalDetail d : arrivalDetailList) {
+                Long id = IdWorker.getId();
+                d.setId(id);
+                d.setArrivalId(arrival.getId());
+                StockWaitDetails stockWaitDetails = new StockWaitDetails();
+                stockWaitDetails.setStockWaitId(stockWait.getId());
+                //业务明细id设置成到货明细id
+                stockWaitDetails.setBusinessDetailsId(d.getId());
+                stockWaitDetails.setProductId(d.getBussinessId());
+                stockWaitDetails.setQuantity(d.getCount());
+                //赋值已采购数量信息
+                PurchaseDetail byId2 = purchaseDetailMap.get(d.getPurchaseDetailId());
+                BigDecimal count = byId2.getCount();
+                stockWaitDetails.setPurchaseQuantity(count);
+                stockWaitDetailsList.add(stockWaitDetails);
+            }
         }
         arrivalDetailService.saveBatch(arrivalDetailList);
         DynamicDataSourceContextHolder.push(SourceConstant.WMS);

+ 17 - 0
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockWaitController.java

@@ -53,6 +53,14 @@ public class StockWaitController {
     }
 
     /**
+     * 待出入库明细 维多利亚
+     */
+    @PostMapping("/detailByWdly")
+    public StockWaitVo detailByWdly(@RequestBody BaseSelectDto dto) {
+        return stockWaitService.detailByWdly(dto.getId());
+    }
+
+    /**
      * 待出入库新增
      */
     @PostMapping("/add")
@@ -61,6 +69,15 @@ public class StockWaitController {
     }
 
     /**
+     * 待出入库新增 维多利亚
+     */
+    @PostMapping("/addByWdly")
+    public void addByWdly(@RequestBody StockWaitDto stockWaitDto) {
+        stockWaitService.addByWdly(stockWaitDto);
+    }
+
+
+    /**
      * 待出入库编辑
      */
     @PostMapping("/edit")

+ 12 - 2
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitDto.java

@@ -1,20 +1,30 @@
 package com.fjhx.wms.entity.stock.dto;
 
 import com.fjhx.wms.entity.stock.po.StockWait;
+import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * 待出入库新增编辑入参实体
  *
- * @author 
+ * @author
  * @since 2023-03-22
  */
 @Getter
 @Setter
 public class StockWaitDto extends StockWait {
 
-    /**入库仓库id*/
+    /**
+     * 入库仓库id
+     */
     private Long warehouseId;
 
+    /**
+     * 待入库明细列表
+     */
+    private List<StockWaitDetails> stockWaitDetailsList;
+
 }

+ 3 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockWaitDetails.java

@@ -49,4 +49,7 @@ public class StockWaitDetails extends BasePo {
 
     private Long businessDetailsId;
 
+    /**采购数量*/
+    private BigDecimal purchaseQuantity;
+
 }

+ 10 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockWaitDetailsVo.java

@@ -14,4 +14,14 @@ import lombok.Setter;
 @Setter
 public class StockWaitDetailsVo extends StockWaitDetails {
 
+    /**
+     * 产品名称
+     */
+    private String productName;
+
+    /**
+     * 产品编号
+     */
+    private String productCode;
+
 }

+ 15 - 5
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockWaitService.java

@@ -1,11 +1,11 @@
 package com.fjhx.wms.service.stock;
 
-import com.fjhx.wms.entity.stock.po.StockWait;
-import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.wms.entity.stock.vo.StockWaitVo;
-import com.fjhx.wms.entity.stock.dto.StockWaitSelectDto;
 import com.fjhx.wms.entity.stock.dto.StockWaitDto;
+import com.fjhx.wms.entity.stock.dto.StockWaitSelectDto;
+import com.fjhx.wms.entity.stock.po.StockWait;
+import com.fjhx.wms.entity.stock.vo.StockWaitVo;
+import com.ruoyi.common.core.service.BaseService;
 
 
 /**
@@ -13,7 +13,7 @@ import com.fjhx.wms.entity.stock.dto.StockWaitDto;
  * 待出入库 服务类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-03-22
  */
 public interface StockWaitService extends BaseService<StockWait> {
@@ -34,11 +34,21 @@ public interface StockWaitService extends BaseService<StockWait> {
     StockWaitVo detail(Long id);
 
     /**
+     * 待出入库明细
+     */
+    StockWaitVo detailByWdly(Long id);
+
+    /**
      * 待出入库新增
      */
     void add(StockWaitDto stockWaitDto);
 
     /**
+     * 待出入库新增 维多利亚
+     */
+    void addByWdly(StockWaitDto stockWaitDto);
+
+    /**
      * 待出入库编辑
      */
     void edit(StockWaitDto stockWaitDto);

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

@@ -50,7 +50,7 @@ public class StockJournalServiceImpl extends ServiceImpl<StockJournalMapper, Sto
     @Override
     public Page<StockJournalVo> getPage(StockJournalSelectDto dto) {
         IWrapper<StockJournal> wrapper = getWrapper();
-        wrapper.orderByDesc("sj", StockJournal::getId);
+        wrapper.orderByDesc("sj", StockJournal::getCreateTime);
         wrapper.eq("sj", StockJournal::getType, dto.getType());
         wrapper.like("w", WarehouseVo::getName, dto.getKeyword());
         Page<StockJournalVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);

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

@@ -250,6 +250,15 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                     if (quantity.compareTo(BigDecimal.ZERO) < 0) {
                         throw new ServiceException("库存不足无法出库");
                     }
+                }else if(type==3){
+                    //维多利亚入库增加冻结库存
+                    String victoriatouristJson = oldStocks.getVictoriatouristJson();
+                    JSONObject json = JSONObject.parseObject(victoriatouristJson);
+                    BigDecimal frozenQuantity = json.getBigDecimal("frozen_quantity");
+                    frozenQuantity = frozenQuantity==null?BigDecimal.ZERO:frozenQuantity;
+                    frozenQuantity = frozenQuantity.add(stock.getQuantity());
+                    json.put("frozen_quantity",frozenQuantity);
+                    newStocks.setVictoriatouristJson(json.toJSONString());
                 } else {
                     throw new ServiceException("未知库存操作类型");
                 }

+ 90 - 7
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.wms.service.stock.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -13,8 +14,10 @@ import com.fjhx.wms.entity.stock.dto.StockWaitSelectDto;
 import com.fjhx.wms.entity.stock.po.*;
 import com.fjhx.wms.entity.stock.vo.StockWaitDetailsVo;
 import com.fjhx.wms.entity.stock.vo.StockWaitVo;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.mapper.stock.StockWaitMapper;
 import com.fjhx.wms.service.stock.*;
+import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.system.utils.UserUtil;
@@ -22,9 +25,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 
@@ -49,6 +55,8 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
     StockJournalDetailsService stockJournalDetailsService;
     @Autowired
     StockWaitDetailsService stockWaitDetailsService;
+    @Autowired
+    WarehouseService warehouseService;
 
     @Override
     public Page<StockWaitVo> getPage(StockWaitSelectDto dto) {
@@ -87,7 +95,33 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
 
         List<StockWaitVo> records = page.getRecords();
         //赋值操作人
-        UserUtil.assignmentNickName(records,StockWaitVo::getCreateUser,StockWaitVo::setOperatorName);
+        UserUtil.assignmentNickName(records, StockWaitVo::getCreateUser, StockWaitVo::setOperatorName);
+        //赋值仓库名称和id
+        List<Long> wids = new ArrayList<>();
+        for (StockWaitVo stockWaitVo : records) {
+            String victoriatouristJson = stockWaitVo.getVictoriatouristJson();
+            if (ObjectUtil.isEmpty(victoriatouristJson)) {
+                continue;
+            }
+            JSONObject json = JSONObject.parseObject(victoriatouristJson);
+            if (!json.containsKey("receiptWarehouseId")) {
+                continue;
+            }
+            wids.add(json.getLong("receiptWarehouseId"));
+        }
+        if (ObjectUtil.isEmpty(wids)) {
+            return page;
+        }
+        List<Warehouse> warehouses = warehouseService.listByIds(wids);
+        Map<Long, String> warehousesMap = warehouses.stream().collect(Collectors.toMap(Warehouse::getId, Warehouse::getName));
+        for (StockWaitVo stockWaitVo : records) {
+            String victoriatouristJson = stockWaitVo.getVictoriatouristJson();
+            if (ObjectUtil.isEmpty(victoriatouristJson)) {
+                continue;
+            }
+            JSONObject json = JSONObject.parseObject(victoriatouristJson);
+            json.put("receiptWarehouseName", warehousesMap.get(json.getLong("receiptWarehouseId")));
+        }
 
         return page;
     }
@@ -101,18 +135,28 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         return result;
     }
 
+    @Override
     public StockWaitVo detailByWdly(Long id) {
-        StockWaitVo detail = detail(id);
+        StockWait stockWait = this.getById(id);
+        StockWaitVo result = BeanUtil.toBean(stockWait, StockWaitVo.class);
         List<StockWaitDetails> list = stockWaitDetailsService.list(q -> q.eq(StockWaitDetails::getStockWaitId, id));
         List<StockWaitDetailsVo> stockWaitDetailsVos = BeanUtil.copyToList(list, StockWaitDetailsVo.class);
-        //根据业务id(到货id)查询采购单id
+        //根据业务id(到货id)查询采购单明细信息
 
-        //赋值物品信息和采购信息
-        for (StockWaitDetails stockWaitDetails : stockWaitDetailsVos) {
 
+        //赋值物品信息和采购信息
+        List<Long> pids = stockWaitDetailsVos.stream().map(StockWaitDetails::getProductId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(pids)) {
+            List<ProductInfo> productInfos = productInfoService.listByIds(pids);
+            Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.toMap(ProductInfo::getId, Function.identity()));
+            for (StockWaitDetailsVo stockWaitDetails : stockWaitDetailsVos) {
+                ProductInfo productInfo = productInfoMap.get(stockWaitDetails.getProductId());
+                stockWaitDetails.setProductName(productInfo.getName());
+                stockWaitDetails.setProductCode(productInfo.getCode());
+            }
         }
-        detail.setStockWaitDetailsList(stockWaitDetailsVos);
-        return detail;
+        result.setStockWaitDetailsList(stockWaitDetailsVos);
+        return result;
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -141,6 +185,45 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         stockJournalDetailsService.saveBatch(stockJournalDetailsList);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void addByWdly(StockWaitDto stockWaitDto) {
+        List<Stock> stockList = new ArrayList<>();
+
+        List<StockWaitDetails> stockWaitDetailsList = stockWaitDto.getStockWaitDetailsList();
+        List<Long> dids = stockWaitDetailsList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
+        Map<Long, StockWaitDetails> stockWaitDetailsMap = stockWaitDetailsList.stream().collect(Collectors.toMap(StockWaitDetails::getId, Function.identity()));
+        List<StockWaitDetails> stockWaitDetails = stockWaitDetailsService.listByIds(dids);
+        for (StockWaitDetails stockWaitDetail : stockWaitDetails) {
+            StockWaitDetails temp = stockWaitDetailsMap.get(stockWaitDetail.getId());
+            //更新已入库数量
+            BigDecimal receiptQuantity = stockWaitDetail.getReceiptQuantity() == null ? BigDecimal.ZERO : stockWaitDetail.getReceiptQuantity();
+            stockWaitDetail.setReceiptQuantity(receiptQuantity.add(temp.getQuantity()));
+            if (stockWaitDetail.getReceiptQuantity().compareTo(stockWaitDetail.getQuantity()) > 0) {
+                throw new ServiceException("入库数量+已入库数量不能大于待采购数量");
+            }
+
+            //操作库存
+            Stock stock = new Stock();
+            stock.setQuantity(stockWaitDto.getQuantity());
+            stock.setProductId(stockWaitDetail.getProductId());
+            stockList.add(stock);
+        }
+        stockWaitDetailsService.updateBatchById(stockWaitDetails);
+
+        //创建出入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setType(stockWaitDto.getType() == 1 ? 4 : 5);
+        stockJournal.setWarehouseId(stockWaitDto.getWarehouseId());
+        stockJournal.setBusinessId(stockWaitDto.getId());
+        //保存出入库记录
+        stockJournalService.save(stockJournal);
+
+        List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 3, stockList, stockWaitDto.getWarehouseId());
+        //保存出入库明细
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
+    }
+
     @Override
     public void edit(StockWaitDto stockWaitDto) {
         this.updateById(stockWaitDto);

+ 2 - 1
hx-wms/src/main/resources/mapper/stock/StockWaitMapper.xml

@@ -14,7 +14,8 @@
             sw.create_user,
             sw.create_time,
             sw.update_user,
-            sw.update_time
+            sw.update_time,
+            sw.victoriatourist_json
         from stock_wait sw
             ${ew.customSqlSegment}
     </select>