Bläddra i källkod

update 修改代码

wks 4 månader sedan
förälder
incheckning
5786b96804

+ 1 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/controller/ItemSkuController.java

@@ -37,6 +37,7 @@ public class ItemSkuController extends BaseController {
     @GetMapping("/list")
     @SaCheckPermission("wms:item:list")
     public TableDataInfo<ItemSkuMapVo> list(ItemSkuBo bo, PageQuery pageQuery) {
+        bo.setSkuType(bo.getItemType());
         return itemSkuService.queryPageList(bo, pageQuery);
     }
 

+ 1 - 1
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/controller/ReceiptOrderController.java

@@ -27,7 +27,7 @@ import java.util.List;
  * 入库单
  *
  * @author zcc
- * @date 2024-07-19
+ *   @date 2024-07-19
  */
 @Validated
 @RequiredArgsConstructor

+ 1 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/domain/bo/ItemSkuBo.java

@@ -115,6 +115,7 @@ public class ItemSkuBo extends BaseEntity {
      */
     private Integer skuType;
 
+    private Integer itemType;
 
     private Long itemBrand;
 

+ 2 - 2
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/domain/bo/WmsFinishedSkuCost.java

@@ -40,8 +40,8 @@ public class WmsFinishedSkuCost implements Serializable {
      * @see com.ruoyi.wms.domain.constant.ItemType
      * 商品类型
      */
-    @TableField(value = "itemType")
-    private Integer itemType;
+    @TableField(value = "sku_type")
+    private Integer skuType;
 
     /**
      * 物料sku id

+ 6 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/domain/vo/BaseOrderDetailVo.java

@@ -32,6 +32,12 @@ public class BaseOrderDetailVo implements Serializable {
     @ExcelProperty(value = "规格id")
     private Long skuId;
 
+    /**
+     * 单位
+     */
+    @ExcelProperty(value = "单位")
+    private String unit;
+
     /**
      * 入库数量
      */

+ 5 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/domain/vo/BaseOrderVo.java

@@ -24,6 +24,11 @@ public class BaseOrderVo<T extends BaseOrderDetailVo> extends BaseVo {
     @ExcelProperty(value = "")
     private Long id;
 
+    /**
+     * 单位
+     */
+    private String unit;
+
     /**
      * 入库单号
      */

+ 7 - 1
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/service/InventoryService.java

@@ -177,14 +177,20 @@ public class InventoryService extends ServiceImpl<InventoryMapper, Inventory> {
             if (result != null) {
                 BigDecimal before = result.getQuantity();
                 BigDecimal after = before.add(orderDetailsBo.getBaseQuantity());
-                result.setQuantity(after);
+                // 单位换算完成
                 orderDetailsBo.setAfterQuantity(after);
                 orderDetailsBo.setBeforeQuantity(before);
+
+                result.setQuantity(after);
+                result.setUnit(orderDetailsBo.getBaseUnit());
                 updateList.add(result);
             } else {
                 orderDetailsBo.setBeforeQuantity(BigDecimal.ZERO);
                 orderDetailsBo.setAfterQuantity(orderDetailsBo.getBaseQuantity());
                 Inventory inventory = MapstructUtils.convert(orderDetailsBo, Inventory.class);
+                // 单位换算完成
+                inventory.setQuantity(orderDetailsBo.getBaseQuantity());
+                inventory.setUnit(orderDetailsBo.getBaseUnit());
                 addList.add(inventory);
             }
         });

+ 1 - 7
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/service/MovementOrderService.java

@@ -12,15 +12,11 @@ import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.mybatis.core.domain.BaseEntity;
 import com.ruoyi.common.mybatis.core.page.PageQuery;
 import com.ruoyi.common.mybatis.core.page.TableDataInfo;
-import com.ruoyi.wms.domain.bo.BaseOrderDetailBo;
 import com.ruoyi.wms.domain.bo.MovementOrderBo;
-import com.ruoyi.wms.domain.dto.WmsUnitAuxiliaryDto;
 import com.ruoyi.wms.domain.entity.MovementOrder;
 import com.ruoyi.wms.domain.entity.MovementOrderDetail;
-import com.ruoyi.wms.domain.po.UnitPo;
 import com.ruoyi.wms.domain.vo.MovementOrderVo;
 import com.ruoyi.wms.mapper.MovementOrderMapper;
-import com.ruoyi.wms.utils.UnitCalculation;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.SerializationUtils;
 import org.springframework.stereotype.Service;
@@ -106,9 +102,7 @@ public class MovementOrderService {
         bo.setId(add.getId());
         // 3.创建移库单明细
         List<MovementOrderDetail> addDetailList = MapstructUtils.convert(bo.getDetails(), MovementOrderDetail.class);
-        addDetailList.forEach(it -> {
-            it.setOrderId(add.getId());
-        });
+        addDetailList.forEach(it -> it.setOrderId(add.getId()));
         movementOrderDetailService.saveDetails(addDetailList);
     }
 

+ 1 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/service/ReceiptOrderDetailService.java

@@ -16,6 +16,7 @@ import com.ruoyi.wms.mapper.ReceiptOrderDetailMapper;
 import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collection;

+ 13 - 13
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/service/ReceiptOrderService.java

@@ -32,6 +32,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -136,16 +137,8 @@ public class ReceiptOrderService {
         // 1. 校验
         validateBeforeReceive(bo);
 
-        // 2. 保存入库单和入库单明细
-        if (Objects.isNull(bo.getId())) {
-            insertByBo(bo);
-        } else {
-            updateByBo(bo);
-        }
-
-        // 3.单位换算
+        // 2.单位换算
         wmsUnitConfigService.unitConversion(bo.getDetails());
-
         // 计算成本   单位成本
         if (bo.getOptType() == 2) {
             List<Long> skuId = bo.getDetails().stream().map(BaseOrderDetailBo::getSkuId).toList();
@@ -157,22 +150,29 @@ public class ReceiptOrderService {
                 ItemSku itemSku = itemSkus.get(receiptOrderDetailBo.getSkuId());
                 ReceiptOrderDetailSummaryDto receiptOrderDetailSummary = summaryMap.get(receiptOrderDetailBo.getSkuId());
                 if (Objects.isNull(receiptOrderDetailSummary)) {
-                    unitCost = receiptOrderDetailBo.getAmount().subtract(receiptOrderDetailBo.getBaseQuantity());
+                    unitCost = receiptOrderDetailBo.getAmount().divide(receiptOrderDetailBo.getBaseQuantity(), 4, RoundingMode.HALF_UP);
                     itemSku.setBaseUnitCost(unitCost);
                 } else {
                     BigDecimal amount = receiptOrderDetailSummary.getAmount().add(receiptOrderDetailBo.getAmount());
                     BigDecimal baseQuantity = receiptOrderDetailSummary.getBaseQuantity().add(receiptOrderDetailBo.getBaseQuantity());
-                    unitCost = amount.subtract(baseQuantity);
+                    unitCost = amount.divide(baseQuantity, 4, RoundingMode.HALF_UP);
                 }
                 itemSku.setBaseUnitCost(unitCost);
             });
             itemSkuService.updateBatchById(itemSkus.values());
         }
 
-        // 5.增加库存
+        // 3. 保存入库单和入库单明细
+        if (Objects.isNull(bo.getId())) {
+            insertByBo(bo);
+        } else {
+            updateByBo(bo);
+        }
+
+        // 4.增加库存
         inventoryService.add(bo.getDetails());
 
-        // 6.保存库存记录
+        // 5.保存库存记录
         inventoryHistoryService.saveInventoryHistory(bo, ServiceConstants.InventoryHistoryOrderType.RECEIPT, true);
     }
 

+ 18 - 11
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/service/impl/WmsFinishedProductCostServiceImpl.java

@@ -1,17 +1,19 @@
 package com.ruoyi.wms.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.mybatis.core.page.PageQuery;
 import com.ruoyi.common.mybatis.core.page.TableDataInfo;
 import com.ruoyi.wms.domain.bo.WmsFinishedSkuCost;
 import com.ruoyi.wms.domain.constant.ItemType;
 import com.ruoyi.wms.domain.dto.WmsFinishedProductCostDto;
-import com.ruoyi.wms.domain.entity.*;
+import com.ruoyi.wms.domain.entity.ItemSku;
+import com.ruoyi.wms.domain.entity.WmsBomItem;
+import com.ruoyi.wms.domain.entity.WmsFinishedProductCost;
+import com.ruoyi.wms.domain.entity.WmsTaskDetails;
 import com.ruoyi.wms.domain.vo.WmsFinishedProductCostVo;
+import com.ruoyi.wms.mapper.WmsFinishedProductCostMapper;
 import com.ruoyi.wms.service.ItemSkuService;
 import com.ruoyi.wms.service.WmsFinishedProductCostService;
-import com.ruoyi.wms.mapper.WmsFinishedProductCostMapper;
 import com.ruoyi.wms.service.WmsFinishedSkuCostService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -23,14 +25,14 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
-* @author Administrator
-* @description 针对表【wms_finished_product_cost(成品成本明细列表)】的数据库操作Service实现
-* @createDate 2026-04-15 17:22:14
-*/
+ * @author Administrator
+ * @description 针对表【wms_finished_product_cost(成品成本明细列表)】的数据库操作Service实现
+ * @createDate 2026-04-15 17:22:14
+ */
 @Service
 @RequiredArgsConstructor
 public class WmsFinishedProductCostServiceImpl extends ServiceImpl<WmsFinishedProductCostMapper, WmsFinishedProductCost>
-    implements WmsFinishedProductCostService{
+    implements WmsFinishedProductCostService {
 
     private final ItemSkuService itemSkuService;
 
@@ -48,7 +50,7 @@ public class WmsFinishedProductCostServiceImpl extends ServiceImpl<WmsFinishedPr
             BigDecimal cose = sku.getBaseUnitCost().multiply(itemSku.getBaseQuantity());
             return WmsFinishedSkuCost.builder()
                 .productId(wmsTaskDetails.getId())
-                .itemType(sku.getSkuType())
+                .skuType(sku.getSkuType())
                 .itemSkuId(itemSku.getItemSkuId())
                 .cost(cose)
                 .build();
@@ -56,7 +58,7 @@ public class WmsFinishedProductCostServiceImpl extends ServiceImpl<WmsFinishedPr
 
         Map<String, BigDecimal> groupedCost = wmsFinishedSkuCostList.stream()
             .collect(Collectors.groupingBy(
-                cost -> cost.getProductId() + "-" + cost.getItemType(),
+                cost -> cost.getProductId() + "-" + cost.getSkuType(),
                 Collectors.reducing(
                     BigDecimal.ZERO,
                     WmsFinishedSkuCost::getCost,
@@ -68,7 +70,13 @@ public class WmsFinishedProductCostServiceImpl extends ServiceImpl<WmsFinishedPr
             WmsTaskDetails wmsTaskDetails = versionMap.get(versionId);
 
             BigDecimal rawMaterialsCost = groupedCost.get(wmsTaskDetails.getId() + "-" + ItemType.ITEM_TYPE_1.getCode());
+            if (rawMaterialsCost == null) {
+                rawMaterialsCost = BigDecimal.ZERO;
+            }
             BigDecimal packagingMaterialsCost = groupedCost.get(wmsTaskDetails.getId() + "-" + ItemType.ITEM_TYPE_3.getCode());
+            if (packagingMaterialsCost == null) {
+                packagingMaterialsCost = BigDecimal.ZERO;
+            }
 
             return WmsFinishedProductCost.builder().id(wmsTaskDetails.getId())
                 .taskId(wmsTaskDetails.getTaskId())
@@ -80,7 +88,6 @@ public class WmsFinishedProductCostServiceImpl extends ServiceImpl<WmsFinishedPr
                 .quantity(new BigDecimal(wmsTaskDetails.getQuantity()))
                 .build();
         }).toList();
-
         wmsFinishedSkuCostService.saveBatch(wmsFinishedSkuCostList);
         this.saveBatch(list);
     }

+ 3 - 2
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/service/impl/WmsTaskServiceImpl.java

@@ -89,7 +89,7 @@ public class WmsTaskServiceImpl extends ServiceImpl<WmsTaskMapper, WmsTask>
 
         // 库存
         List<Inventory> inventoryList = inventoryService.lambdaQuery()
-            .eq(Inventory::getSkuId, itemSkuIdList)
+            .in(Inventory::getSkuId, itemSkuIdList)
             .orderByDesc(Inventory::getQuantity)
             .list();
         // 库存处理
@@ -116,6 +116,7 @@ public class WmsTaskServiceImpl extends ServiceImpl<WmsTaskMapper, WmsTask>
                     shipmentOrder.setId(IdWorker.getId());
                     shipmentOrder.setOrderNo(OrderNoGenerator.generateCK());
                     shipmentOrder.setTaskId(String.valueOf(wmsTask.getId()));
+                    shipmentOrder.setOptType(3L);
                     shipmentOrder.setWarehouseId(inventory.getWarehouseId());
                     shipmentOrder.setOrderStatus(ServiceConstants.ShipmentOrderStatus.PENDING);
                     shipmentOrderMap.putIfAbsent(warehouseId, shipmentOrder);
@@ -161,7 +162,7 @@ public class WmsTaskServiceImpl extends ServiceImpl<WmsTaskMapper, WmsTask>
         for (WmsBomItem wmsBomItem : wmsBomItems) {
             UnitPo unitPo = bomItemQuantityMap.get(wmsBomItem.getItemSkuId());
             WmsTaskDetails wmsTaskDetails = versionMap.get(wmsBomItem.getVersionId());
-            BigDecimal add = wmsBomItem.getBaseQuantity().add(new BigDecimal(wmsTaskDetails.getQuantity()));
+            BigDecimal add = wmsBomItem.getBaseQuantity().multiply(new BigDecimal(wmsTaskDetails.getQuantity()));
             if (unitPo == null) {
                 bomItemQuantityMap.put(wmsBomItem.getItemSkuId(), new UnitPo(wmsBomItem.getBaseUnit(), add));
             } else {

+ 8 - 9
ruoyi-admin-wms/src/main/resources/mapper/wms/ItemSkuMapper.xml

@@ -5,12 +5,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <mapper namespace="com.ruoyi.wms.mapper.ItemSkuMapper">
 
     <resultMap id="itemSkuMapVo" type="com.ruoyi.wms.domain.vo.ItemSkuMapVo">
-        <association property="item" javaType="com.ruoyi.wms.domain.vo.ItemVo">
-            <id property="id" column="item_id"/> <!-- 映射 item 的 id -->
-        </association>
         <association property="itemSku" javaType="com.ruoyi.wms.domain.vo.ItemSkuVo">
             <id property="id" column="sku_id"/> <!-- 映射 item 的 id -->
         </association>
+        <association property="item" javaType="com.ruoyi.wms.domain.vo.ItemVo">
+            <id property="id" column="item_id"/> <!-- 映射 item 的 id -->
+        </association>
     </resultMap>
 
     <select id="queryItemSkuMapVos" resultMap="itemSkuMapVo">
@@ -28,13 +28,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="queryItemSkuMapVo" resultMap="itemSkuMapVo">
-        select
-        sku.id as sku_id,
-        sku.*,
-        item.id as item_id,
-        item.*
+        select item.id as item_id,
+               item.*,
+               sku.id  as sku_id,
+               sku.*
         from wms_item_sku sku
-        inner join wms_item item on sku.item_id=item.id
+                 inner join wms_item item on sku.item_id = item.id
         where sku.id = #{id}
     </select>
 

+ 3 - 3
ruoyi-admin-wms/src/main/resources/mapper/wms/ReceiptOrderDetailMapper.xml

@@ -7,11 +7,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="getQuantityAndAmount" resultType="com.ruoyi.wms.domain.dto.ReceiptOrderDetailSummaryDto">
         select sku_id,
-        sum(amount) as amount,
-        sum(base_quantity) as base_quantity
+        sum(wrod.amount) as amount,
+        sum(wrod.base_quantity) as base_quantity
         from wms_receipt_order_detail wrod
         left join wms_receipt_order wro on wrod.order_id = wro.id
-        where wrod.sku_id in
+        where wro.order_status = 1 and wro.opt_type = 2 and  wrod.sku_id in
         <foreach collection="skuId" item="id" open="(" separator="," close=")">
             #{id}
         </foreach>

+ 0 - 1
ruoyi-admin-wms/src/main/resources/mapper/wms/WmsFinishedProductCostMapper.xml

@@ -32,7 +32,6 @@
         wfpc.quantity
         from wms_finished_product_cost wfpc
         left join wms_task wt on wfpc.task_id = wt.id
-        left join wms_bom_item wbi on wfpc.version_id = wbi.version_id
         left join wms_item_sku wis on wfpc.item_sku_id = wis.id
         left join wms_item wi on wis.item_id = wi.id
         <where>

+ 17 - 0
ruoyi-admin-wms/src/main/resources/mapper/wms/WmsFinishedSkuCostMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.wms.mapper.WmsFinishedSkuCostMapper">
+
+    <resultMap id="BaseResultMap" type="com.ruoyi.wms.domain.bo.WmsFinishedSkuCost">
+            <id property="id" column="id" />
+            <result property="productId" column="product_id" />
+            <result property="itemSkuId" column="item_sku_id" />
+            <result property="cost" column="cost" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,product_id,item_sku_id,cost
+    </sql>
+</mapper>