Parcourir la source

update
1.成品成本

wks il y a 4 mois
Parent
commit
6247d356c6

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

@@ -4,6 +4,7 @@ package com.ruoyi.wms.controller;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.wms.domain.dto.BomAddDto;
 import com.ruoyi.wms.domain.dto.BomListQueryDto;
+import com.ruoyi.wms.domain.entity.WmsBomVersion;
 import com.ruoyi.wms.domain.vo.BomListVo;
 import com.ruoyi.wms.service.WmsBomVersionService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -19,11 +20,18 @@ import java.util.List;
 @RequiredArgsConstructor
 @RestController
 @RequestMapping("/wms/bom")
-@Tag(name = "BOM配置")
+@Tag(name = "v2-BOM配置")
 public class BomController {
 
     private final WmsBomVersionService wmsBomVersionService;
 
+    @Operation(summary = "获取版本列表")
+    @GetMapping("/version")
+    public R<List<WmsBomVersion>> version(@RequestParam String skuId) {
+        List<WmsBomVersion> list = wmsBomVersionService.getVersion(skuId);
+        return R.ok(list);
+    }
+
     @Operation(summary = "物料清单查询")
     @GetMapping("/list")
     public R<List<BomListVo>> list(@Validated BomListQueryDto bomListQueryDto) {

+ 35 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/controller/CostController.java

@@ -0,0 +1,35 @@
+package com.ruoyi.wms.controller;
+
+
+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.dto.WmsFinishedProductCostDto;
+import com.ruoyi.wms.domain.vo.WmsFinishedProductCostVo;
+import com.ruoyi.wms.service.WmsFinishedProductCostService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/wms/cost")
+@Tag(name = "v2-成本")
+public class CostController {
+
+    private final WmsFinishedProductCostService wmsFinishedProductCostService;
+
+    @Operation(summary = "获取成本明细")
+    @GetMapping("/finished/product")
+    public R<TableDataInfo<WmsFinishedProductCostVo>> finishedProduct(WmsFinishedProductCostDto costDto, PageQuery pageQuery) {
+        TableDataInfo<WmsFinishedProductCostVo> wmsFinishedProductCostVoTableDataInfo = wmsFinishedProductCostService.finishedProduct(costDto, pageQuery);
+        return R.ok(wmsFinishedProductCostVoTableDataInfo);
+    }
+
+
+}

+ 2 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/controller/SystemController.java

@@ -5,6 +5,7 @@ import com.ruoyi.common.core.domain.R;
 import com.ruoyi.wms.domain.constant.WmsConstant;
 import com.ruoyi.wms.domain.vo.MeasurementUnitVo;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -15,6 +16,7 @@ import java.util.List;
 @RequiredArgsConstructor
 @RestController
 @RequestMapping("/wms/system")
+@Tag(name = "v2-系统配置")
 public class SystemController {
 
     @Operation(summary = "查询单位信息")

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

@@ -20,7 +20,7 @@ import java.util.List;
 @RequiredArgsConstructor
 @RestController
 @RequestMapping("/wms/task")
-@Tag(name = "生产管理")
+@Tag(name = "v2-生产管理")
 public class TaskController {
 
     private final WmsTaskService wmsTaskService;

+ 42 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/domain/dto/WmsFinishedProductCostDto.java

@@ -0,0 +1,42 @@
+package com.ruoyi.wms.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class WmsFinishedProductCostDto implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3040129121020228398L;
+
+    @Schema(description = "任务编码")
+    private String taskCode;
+
+    @Schema(description = "商品名称")
+    private String itemName;
+
+    @Schema(description = "商品编号")
+    private String itemCode;
+
+    @Schema(description = "规格名称")
+    private String skuName;
+
+    @Schema(description = "版本id")
+    private BigDecimal versionId;
+
+    @Schema(description = "生产开始时间")
+    @NotNull(message = "生产开始时间不能为空")
+    private Date startDate;
+
+    @Schema(description = "生产结束时间")
+    @NotNull(message = "生产结束时间不能为空")
+    private Date endDate;
+
+
+}

+ 13 - 6
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/domain/entity/WmsFinishedProductCost.java

@@ -4,24 +4,25 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-
-import java.io.Serial;
-import java.io.Serializable;
-import java.math.BigDecimal;
-
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
 /**
  * 成品成本明细列表
+ *
  * @TableName wms_finished_product_cost
  */
 @AllArgsConstructor
 @NoArgsConstructor
 @Builder
-@TableName(value ="wms_finished_product_cost")
+@TableName(value = "wms_finished_product_cost")
 @Data
 public class WmsFinishedProductCost implements Serializable {
     /**
@@ -72,6 +73,12 @@ public class WmsFinishedProductCost implements Serializable {
     @TableField(value = "quantity")
     private BigDecimal quantity;
 
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private LocalDateTime createTime;
+
     @Serial
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;

+ 42 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/domain/vo/WmsFinishedProductCostVo.java

@@ -0,0 +1,42 @@
+package com.ruoyi.wms.domain.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class WmsFinishedProductCostVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 8091963692855929041L;
+
+    @Schema(description = "商品名称")
+    private String itemName;
+
+    @Schema(description = "商品编号")
+    private String itemCode;
+
+    @Schema(description = "商品品牌")
+    private String itemBrand;
+
+    @Schema(description = "规格名称")
+    private String skuName;
+
+    @Schema(description = "规格编码")
+    private String skuCode;
+
+    @Schema(description = "材料成本")
+    private BigDecimal materialCost;
+
+    @Schema(description = "包材成本")
+    private BigDecimal packagingCost;
+
+    @Schema(description = "总成本")
+    private BigDecimal totalCost;
+
+    @Schema(description = "生产数量")
+    private BigDecimal quantity;
+}

+ 15 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/mapper/WmsFinishedProductCostMapper.java

@@ -1,7 +1,13 @@
 package com.ruoyi.wms.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.wms.domain.dto.WmsFinishedProductCostDto;
 import com.ruoyi.wms.domain.entity.WmsFinishedProductCost;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.wms.domain.vo.WmsFinishedProductCostVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
 * @author Administrator
@@ -11,6 +17,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 */
 public interface WmsFinishedProductCostMapper extends BaseMapper<WmsFinishedProductCost> {
 
+
+    /**
+     * 获取成品成本
+     *
+     * @param costDto 成品成本查询
+     * @param page    分页参数查询
+     * @return 成品成本列表
+     */
+    List<WmsFinishedProductCostVo> finishedProduct(@Param("page") Page<Object> page, @Param("costDto") WmsFinishedProductCostDto costDto);
 }
 
 

+ 9 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/service/WmsBomVersionService.java

@@ -2,6 +2,7 @@ package com.ruoyi.wms.service;
 
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.wms.domain.dto.BomAddDto;
 import com.ruoyi.wms.domain.dto.BomListQueryDto;
 import com.ruoyi.wms.domain.entity.WmsBomVersion;
@@ -40,4 +41,12 @@ public interface WmsBomVersionService extends IService<WmsBomVersion> {
      * @return BOM 配置list
      */
     List<BomListVo> getBomConfig(BomListQueryDto bomListQueryDto);
+
+    /**
+     * 获取bom 版本列表
+     *
+     * @param skuId 物料sku Id
+     * @return 版本列表
+     */
+    List<WmsBomVersion> getVersion(String skuId);
 }

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

@@ -1,9 +1,14 @@
 package com.ruoyi.wms.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+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.dto.WmsFinishedProductCostDto;
 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 java.util.List;
 import java.util.Map;
@@ -24,4 +29,12 @@ public interface WmsFinishedProductCostService extends IService<WmsFinishedProdu
      */
     void costCalculation(Map<Long, WmsTaskDetails> versionMap, List<WmsBomItem> wmsBomItems, List<Long> itemSkuIdList);
 
+    /**
+     * 获取成品成本
+     *
+     * @param costDto   成品成本查询
+     * @param pageQuery 分页参数查询
+     * @return 成品成本列表
+     */
+    TableDataInfo<WmsFinishedProductCostVo> finishedProduct(WmsFinishedProductCostDto costDto, PageQuery pageQuery);
 }

+ 14 - 5
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/service/WmsFinishedSkuCostService.java

@@ -1,13 +1,22 @@
 package com.ruoyi.wms.service;
 
-import com.ruoyi.wms.domain.bo.WmsFinishedSkuCost;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.wms.domain.bo.WmsFinishedSkuCost;
+import com.ruoyi.wms.domain.dto.WmsFinishedProductCostDto;
+import com.ruoyi.wms.domain.vo.WmsFinishedProductCostVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
-* @author Administrator
-* @description 针对表【wms_finished_sku_cost(成品成本明细列表)】的数据库操作Service
-* @createDate 2026-04-15 17:47:58
-*/
+ * @author Administrator
+ * @description 针对表【wms_finished_sku_cost(成品成本明细列表)】的数据库操作Service
+ * @createDate 2026-04-15 17:47:58
+ */
 public interface WmsFinishedSkuCostService extends IService<WmsFinishedSkuCost> {
 
+
+
+
 }

+ 6 - 0
ruoyi-admin-wms/src/main/java/com/ruoyi/wms/service/impl/WmsBomVersionServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.wms.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.wms.domain.dto.BomAddDto;
 import com.ruoyi.wms.domain.dto.BomItemSkuDto;
 import com.ruoyi.wms.domain.dto.BomListQueryDto;
@@ -61,6 +62,11 @@ public class WmsBomVersionServiceImpl extends ServiceImpl<WmsBomVersionMapper, W
         return this.baseMapper.getBomConfig(bomListQueryDto);
     }
 
+    @Override
+    public List<WmsBomVersion> getVersion(String skuId) {
+        return lambdaQuery().eq(StringUtils.isNotEmpty(skuId), WmsBomVersion::getItemSkuId, skuId).list();
+    }
+
     private List<WmsBomItem> buildBomItemList(List<BomItemSkuDto> bomVersionList, Long versionId, Map<Long, Map<String, WmsUnitAuxiliaryDto>> unitAuxiliaryMap) {
         return bomVersionList.stream().map(x -> buildBomItem(x, versionId, unitAuxiliaryMap)).collect(Collectors.toList());
     }

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

@@ -1,10 +1,14 @@
 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.service.ItemService;
+import com.ruoyi.wms.domain.vo.WmsFinishedProductCostVo;
 import com.ruoyi.wms.service.ItemSkuService;
 import com.ruoyi.wms.service.WmsFinishedProductCostService;
 import com.ruoyi.wms.mapper.WmsFinishedProductCostMapper;
@@ -80,6 +84,12 @@ public class WmsFinishedProductCostServiceImpl extends ServiceImpl<WmsFinishedPr
         wmsFinishedSkuCostService.saveBatch(wmsFinishedSkuCostList);
         this.saveBatch(list);
     }
+
+    @Override
+    public TableDataInfo<WmsFinishedProductCostVo> finishedProduct(WmsFinishedProductCostDto costDto, PageQuery pageQuery) {
+        List<WmsFinishedProductCostVo> list = this.baseMapper.finishedProduct(pageQuery.build(), costDto);
+        return TableDataInfo.build(list);
+    }
 }
 
 

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

@@ -0,0 +1,60 @@
+<?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.WmsFinishedProductCostMapper">
+
+    <resultMap id="BaseResultMap" type="com.ruoyi.wms.domain.entity.WmsFinishedProductCost">
+            <id property="id" column="id" />
+            <result property="taskId" column="task_id" />
+            <result property="versionId" column="version_id" />
+            <result property="itemSkuId" column="item_sku_id" />
+            <result property="materialCost" column="material_cost" />
+            <result property="packagingCost" column="packaging_cost" />
+            <result property="totalCost" column="total_cost" />
+            <result property="quantity" column="quantity" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,task_id,version_id,item_sku_id,material_cost,packaging_cost,
+        total_cost,quantity
+    </sql>
+
+    <select id="finishedProduct" resultType="com.ruoyi.wms.domain.vo.WmsFinishedProductCostVo">
+        select wi.item_code,
+        wi.item_name,
+        wi.item_brand,
+        wis.sku_name,
+        wis.sku_code,
+        wfpc.material_cost,
+        wfpc.packaging_cost,
+        wfpc.total_cost,
+        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>
+            <if test='costDto.taskCode != null and costDto.taskCode != ""'>
+                and wt.task_code = #{costDto.taskCode}
+            </if>
+            <if test='costDto.itemName != null and costDto.itemName != ""'>
+                AND wi.item_name = #{costDto.itemName}
+            </if>
+            <if test='costDto.itemCode != null and costDto.itemCode != ""'>
+                AND wi.item_code = = #{costDto.itemCode}
+            </if>
+            <if test='costDto.skuName != null and costDto.skuName != ""'>
+                AND wis.sku_name = = #{costDto.skuName}
+            </if>
+            <if test='costDto.versionId != null and costDto.versionId != ""'>
+                AND wfpc.version_id = = #{costDto.versionId}
+            </if>
+            <if test="costDto.startDate != null and  costDto.endDate != null">
+                and wfpc.create_time > CONCAT(#{costDto.startDate}, " 00:00:00")
+                and wfpc.create_time &lt;= CONCAT(#{costDto.endDate}, " 23.59.59")
+            </if>
+        </where>
+    </select>
+</mapper>