From 640add74fe75427df3e9a9da3ffdf98ae3da3272 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期二, 24 三月 2026 17:29:25 +0800
Subject: [PATCH] Merge branch 'dev_长治_健齿齿科器材' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_长治_健齿齿科器材

---
 src/main/resources/mapper/production/ProductParameterMapper.xml                         |   39 +++
 src/main/java/com/ruoyi/production/pojo/ProductParameter.java                           |   76 ++++++
 src/main/java/com/ruoyi/production/service/impl/ProductParameterServiceImpl.java        |   44 ++++
 src/main/java/com/ruoyi/production/controller/ProductProcessParameterController.java    |   63 +++++
 src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java                           |    7 
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java   |    9 
 src/main/java/com/ruoyi/production/service/ProductParameterService.java                 |   24 ++
 src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java      |    2 
 src/main/java/com/ruoyi/production/pojo/ProductOrder.java                               |    2 
 src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java                    |    2 
 src/main/java/com/ruoyi/production/pojo/ProductProcessParameter.java                    |   84 +++++++
 src/main/resources/mapper/production/ProductProcessParameterMapper.xml                  |   39 +++
 src/main/java/com/ruoyi/production/service/ProductProcessParameterService.java          |   24 ++
 src/main/java/com/ruoyi/production/service/impl/ProductProcessParameterServiceImpl.java |   45 ++++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java                  |    7 
 src/main/resources/mapper/production/ProductionProductMainMapper.xml                    |    1 
 src/main/java/com/ruoyi/production/controller/ProductParameterController.java           |   64 +++++
 src/main/java/com/ruoyi/production/dto/ProductProcessParameterDto.java                  |   15 +
 src/main/java/com/ruoyi/production/mapper/ProductParameterMapper.java                   |   23 ++
 src/main/java/com/ruoyi/production/mapper/ProductProcessParameterMapper.java            |   23 ++
 src/main/java/com/ruoyi/production/dto/ProductParameterDto.java                         |   13 +
 21 files changed, 592 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/controller/ProductParameterController.java b/src/main/java/com/ruoyi/production/controller/ProductParameterController.java
new file mode 100644
index 0000000..ff0ce06
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/controller/ProductParameterController.java
@@ -0,0 +1,64 @@
+package com.ruoyi.production.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.production.dto.ProductParameterDto;
+import com.ruoyi.production.service.ProductParameterService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鍙傛暟閰嶇疆琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-14 01:38:54
+ */
+@RestController
+@RequestMapping("/productParameter")
+public class ProductParameterController {
+
+    @Autowired
+    private ProductParameterService productParameterService;
+
+
+    @ApiOperation("鐢熶骇璁板綍 鍒嗛〉鏌ヨ")
+    @GetMapping("listPage")
+    @Log(title = "鐢熶骇璁板綍 鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+    public AjaxResult page(ProductParameterDto productParameter, Page<ProductParameterDto> page) {
+        return AjaxResult.success(productParameterService.pageProductParameter(page, productParameter));
+    }
+
+    @ApiOperation("鐢熶骇璁板綍 鏂板")
+    @PostMapping("/addProductParameter")
+    @Log(title = "鐢熶骇璁板綍 鏂板", businessType = BusinessType.INSERT)
+    public AjaxResult addProductParameter(@RequestBody ProductParameterDto productParameter) {
+        productParameterService.addProductParameter(productParameter);
+        return AjaxResult.success();
+    }
+
+
+    @ApiOperation("鐢熶骇璁板綍 淇敼")
+    @PutMapping("updProductParameter")
+    @Log(title = "鐢熶骇璁板綍 淇敼", businessType = BusinessType.UPDATE)
+    public AjaxResult updProductParameter(@RequestBody ProductParameterDto productParameter) {
+        productParameterService.updProductParameter(productParameter);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("鐢熶骇璁板綍 鍒犻櫎")
+    @DeleteMapping("/{ids}")
+    @Log(title = "鐢熶骇璁板綍 鍒犻櫎", businessType = BusinessType.DELETE)
+    public AjaxResult delete(@PathVariable("ids") List<Long> ids) {
+        productParameterService.removeBatchByIds(ids);
+        return AjaxResult.success();
+    }
+
+
+}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductProcessParameterController.java b/src/main/java/com/ruoyi/production/controller/ProductProcessParameterController.java
new file mode 100644
index 0000000..87802c8
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/controller/ProductProcessParameterController.java
@@ -0,0 +1,63 @@
+package com.ruoyi.production.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.production.dto.ProductProcessParameterDto;
+import com.ruoyi.production.pojo.ProductProcessParameter;
+import com.ruoyi.production.service.ProductProcessParameterService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 宸ュ簭鍙傛暟琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-14 03:45:15
+ */
+@RestController
+@RequestMapping("/productProcessParameter")
+public class ProductProcessParameterController {
+
+    @Autowired
+    private ProductProcessParameterService productProcessParameterService;
+
+
+    @ApiOperation("宸ュ簭鐢熶骇璁板綍 鍒嗛〉鏌ヨ")
+    @GetMapping("listPage")
+    @Log(title = "宸ュ簭鐢熶骇璁板綍 鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+    public AjaxResult page(ProductProcessParameterDto productProcessParameter, Page<ProductProcessParameterDto> page) {
+        return AjaxResult.success(productProcessParameterService.pageProductProcessParameter(page, productProcessParameter));
+    }
+
+    @ApiOperation("宸ュ簭鐢熶骇璁板綍 鏂板澶氭潯")
+    @PostMapping("/addProductProcessParameter/{processId}")
+    @Log(title = "宸ュ簭鐢熶骇璁板綍 鏂板澶氭潯", businessType = BusinessType.INSERT)
+    public AjaxResult addProductProcessParameter(@RequestBody List<ProductProcessParameter> productProcessParameters, @PathVariable Long processId) {
+        productProcessParameterService.addProductProcessParameter(productProcessParameters, processId);
+        return AjaxResult.success();
+    }
+
+
+    @ApiOperation("宸ュ簭鐢熶骇璁板綍 淇敼")
+    @PutMapping("updProductProcessParameter")
+    @Log(title = "宸ュ簭鐢熶骇璁板綍 淇敼", businessType = BusinessType.UPDATE)
+    public AjaxResult updProductProcessParameter(@RequestBody ProductProcessParameterDto productProcessParameter) {
+        productProcessParameterService.updateById(productProcessParameter);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("宸ュ簭鐢熶骇璁板綍 鍒犻櫎澶氭潯")
+    @DeleteMapping("/{ids}")
+    @Log(title = "宸ュ簭鐢熶骇璁板綍 鍒犻櫎澶氭潯", businessType = BusinessType.DELETE)
+    public AjaxResult delete(@PathVariable("ids") List<Long> ids) {
+        productProcessParameterService.removeBatchByIds(ids);
+        return AjaxResult.success();
+    }
+}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
index 47a095c..e4de27f 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -13,7 +13,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
-@RequestMapping("productionProductMain")
+@RequestMapping("/productionProductMain")
 @RestController
 @Api(value = "鐢熶骇鎶ュ伐")
 public class ProductionProductMainController {
diff --git a/src/main/java/com/ruoyi/production/dto/ProductParameterDto.java b/src/main/java/com/ruoyi/production/dto/ProductParameterDto.java
new file mode 100644
index 0000000..bd749aa
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/dto/ProductParameterDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.production.dto;
+
+import com.ruoyi.production.pojo.ProductParameter;
+import lombok.Data;
+
+/**
+ * @author yuan
+ * @date 2026-03-14 13:42
+ * @description
+ */
+@Data
+public class ProductParameterDto extends ProductParameter {
+}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductProcessParameterDto.java b/src/main/java/com/ruoyi/production/dto/ProductProcessParameterDto.java
new file mode 100644
index 0000000..7ba15a7
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/dto/ProductProcessParameterDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.production.dto;
+
+import com.ruoyi.production.pojo.ProductProcessParameter;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author yuan
+ * @date 2026-03-14 15:47
+ * @description
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProductProcessParameterDto extends ProductProcessParameter {
+}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
index fccf7b1..3673dbb 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -60,6 +60,8 @@
     private BigDecimal workHours;
     private BigDecimal wages;
 
+    @ApiModelProperty(value = "鎶曞叆鎬婚噺(kg)")
+    private BigDecimal totalInvestment;
 
     private BigDecimal inspectedQuantity;
 }
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductParameterMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductParameterMapper.java
new file mode 100644
index 0000000..f6b0812
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/mapper/ProductParameterMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.production.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.production.dto.ProductParameterDto;
+import com.ruoyi.production.pojo.ProductParameter;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鍙傛暟閰嶇疆琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-14 01:38:54
+ */
+@Mapper
+public interface ProductParameterMapper extends BaseMapper<ProductParameter> {
+
+    IPage<ProductParameterDto> pageProductParameter(@Param("page") Page<ProductParameterDto> page, @Param("productParameter") ProductParameterDto productParameter);
+}
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductProcessParameterMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductProcessParameterMapper.java
new file mode 100644
index 0000000..6c9e34c
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/mapper/ProductProcessParameterMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.production.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.production.dto.ProductProcessParameterDto;
+import com.ruoyi.production.pojo.ProductProcessParameter;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 宸ュ簭鍙傛暟琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-14 03:45:15
+ */
+@Mapper
+public interface ProductProcessParameterMapper extends BaseMapper<ProductProcessParameter> {
+
+    IPage<ProductProcessParameterDto> pageProductProcessParameter(@Param("page") Page<ProductProcessParameterDto> page, @Param("productProcessParameter") ProductProcessParameterDto productProcessParameter);
+}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
index f526f27..36a3846 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -109,11 +109,11 @@
      * 鍒堕�犵彮缁�
      */
     private String manufacturingTeam;
+
     /**
      * 鎵瑰彿
      */
     @ApiModelProperty(value = "鎵瑰彿")
-    @Excel(name = "鎵瑰彿")
     private String batchNo;
 
 }
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductParameter.java b/src/main/java/com/ruoyi/production/pojo/ProductParameter.java
new file mode 100644
index 0000000..6727a28
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/pojo/ProductParameter.java
@@ -0,0 +1,76 @@
+package com.ruoyi.production.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 鍙傛暟閰嶇疆琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-14 01:38:54
+ */
+@Data
+@TableName("product_parameter")
+@ApiModel(value = "ProductParameter瀵硅薄", description = "鍙傛暟閰嶇疆琛�")
+public class ProductParameter implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("涓婚敭ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("鍙傛暟缂栫爜")
+    private String code;
+
+    @ApiModelProperty("鍙傛暟椤�")
+    private String parameterItem;
+
+    @ApiModelProperty("鍙傛暟绫诲瀷锛�0锛氭暟瀛楁牸寮忥紝1锛氭枃鏈牸寮忥級")
+    private String type;
+
+    @ApiModelProperty("鍗曚綅")
+    private String unit;
+
+    @ApiModelProperty("鍙傛暟鏍煎紡")
+    private String parameterFormat;
+
+    @ApiModelProperty("瀛楀吀鍊�")
+    private String dict;
+
+    @ApiModelProperty("鏄惁蹇呭~锛�0锛氬惁锛�1锛氭槸锛�")
+    private String isRequired;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鏇存柊浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty("绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private String tenantId;
+}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductProcessParameter.java b/src/main/java/com/ruoyi/production/pojo/ProductProcessParameter.java
new file mode 100644
index 0000000..2d58cb5
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/pojo/ProductProcessParameter.java
@@ -0,0 +1,84 @@
+package com.ruoyi.production.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 宸ュ簭鍙傛暟琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-14 03:45:15
+ */
+@Getter
+@Setter
+@TableName("product_process_parameter")
+@ApiModel(value = "ProductProcessParameter瀵硅薄", description = "宸ュ簭鍙傛暟琛�")
+public class ProductProcessParameter implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("涓婚敭ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("鍙傛暟缂栫爜")
+    private String code;
+
+    @ApiModelProperty("宸ュ簭id")
+    private Long processId;
+
+    @ApiModelProperty("鍙傛暟椤�")
+    private String parameterItem;
+
+    @ApiModelProperty("鍙傛暟绫诲瀷锛�0锛氭暟瀛楁牸寮忥紝1锛氭枃鏈牸寮忥級")
+    private String type;
+
+    @ApiModelProperty("鍗曚綅")
+    private String unit;
+
+    @ApiModelProperty("鍙傛暟鏍煎紡")
+    private String parameterFormat;
+
+    @ApiModelProperty("瀛楀吀鍊�")
+    private String dict;
+
+    @ApiModelProperty("濉啓鍊�")
+    private String value;
+
+    @ApiModelProperty("鏄惁蹇呭~锛�0锛氬惁锛�1锛氭槸锛�")
+    private String isRequired;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鏇存柊浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty("绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private String tenantId;
+}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
index 4efc694..24eca2f 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -121,5 +120,11 @@
     @ApiModelProperty(value = "瀹屾垚鏁伴噺")
     private BigDecimal completeQuantity;
 
+    /**
+     * 鎶曞叆鎬婚噺
+     */
+    @ApiModelProperty(value = "鎶曞叆鎬婚噺(kg)")
+    private BigDecimal totalInvestment;
+
 
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductParameterService.java b/src/main/java/com/ruoyi/production/service/ProductParameterService.java
new file mode 100644
index 0000000..1b25bb1
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/ProductParameterService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.production.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.production.dto.ProductParameterDto;
+import com.ruoyi.production.pojo.ProductParameter;
+
+/**
+ * <p>
+ * 鍙傛暟閰嶇疆琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-14 01:38:54
+ */
+public interface ProductParameterService extends IService<ProductParameter> {
+
+    IPage<ProductParameterDto> pageProductParameter(Page<ProductParameterDto> page, ProductParameterDto productParameter);
+
+    void addProductParameter(ProductParameterDto productParameter);
+
+    void updProductParameter(ProductParameterDto productParameter);
+}
diff --git a/src/main/java/com/ruoyi/production/service/ProductProcessParameterService.java b/src/main/java/com/ruoyi/production/service/ProductProcessParameterService.java
new file mode 100644
index 0000000..7268657
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/ProductProcessParameterService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.production.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.production.dto.ProductProcessParameterDto;
+import com.ruoyi.production.pojo.ProductProcessParameter;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 宸ュ簭鍙傛暟琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-14 03:45:15
+ */
+public interface ProductProcessParameterService extends IService<ProductProcessParameter> {
+
+    IPage<ProductProcessParameterDto> pageProductProcessParameter(Page<ProductProcessParameterDto> page, ProductProcessParameterDto productProcessParameter);
+
+    void addProductProcessParameter(List<ProductProcessParameter> productProcessParameters, Long processId);
+}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductParameterServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductParameterServiceImpl.java
new file mode 100644
index 0000000..0d75d20
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductParameterServiceImpl.java
@@ -0,0 +1,44 @@
+package com.ruoyi.production.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.production.dto.ProductParameterDto;
+import com.ruoyi.production.mapper.ProductParameterMapper;
+import com.ruoyi.production.pojo.ProductParameter;
+import com.ruoyi.production.service.ProductParameterService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * <p>
+ * 鍙傛暟閰嶇疆琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-14 01:38:54
+ */
+@Service
+public class ProductParameterServiceImpl extends ServiceImpl<ProductParameterMapper, ProductParameter> implements ProductParameterService {
+
+    @Override
+    public IPage<ProductParameterDto> pageProductParameter(Page<ProductParameterDto> page, ProductParameterDto productParameter) {
+        return baseMapper.pageProductParameter(page, productParameter);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addProductParameter(ProductParameterDto productParameter) {
+        boolean save = this.save(productParameter);
+        if (save) {
+            String no = "BP" + String.format("%06d", productParameter.getId());
+            productParameter.setCode(no);
+            this.updateById(productParameter);
+        }
+    }
+
+    @Override
+    public void updProductParameter(ProductParameterDto productParameter) {
+        this.updateById(productParameter);
+    }
+}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessParameterServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessParameterServiceImpl.java
new file mode 100644
index 0000000..d2fb55d
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessParameterServiceImpl.java
@@ -0,0 +1,45 @@
+package com.ruoyi.production.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.production.dto.ProductProcessParameterDto;
+import com.ruoyi.production.mapper.ProductProcessParameterMapper;
+import com.ruoyi.production.pojo.ProductProcessParameter;
+import com.ruoyi.production.service.ProductProcessParameterService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 宸ュ簭鍙傛暟琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-14 03:45:15
+ */
+@Service
+public class ProductProcessParameterServiceImpl extends ServiceImpl<ProductProcessParameterMapper, ProductProcessParameter> implements ProductProcessParameterService {
+
+    @Override
+    public IPage<ProductProcessParameterDto> pageProductProcessParameter(Page<ProductProcessParameterDto> page, ProductProcessParameterDto productProcessParameter) {
+        return baseMapper.pageProductProcessParameter(page, productProcessParameter);
+    }
+
+    @Override
+    @Transactional
+    public void addProductProcessParameter(List<ProductProcessParameter> productProcessParameters, Long processId) {
+        productProcessParameters.forEach(productProcessParameter -> {
+            productProcessParameter.setId(null);
+            productProcessParameter.setCreateTime(null);
+            productProcessParameter.setUpdateTime(null);
+            productProcessParameter.setCreateUser(null);
+            productProcessParameter.setUpdateUser(null);
+            productProcessParameter.setTenantId(null);
+            productProcessParameter.setProcessId(processId);
+        });
+        this.saveBatch(productProcessParameters);
+    }
+}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index 87faf08..c7fa600 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -141,7 +141,7 @@
         productionProductMainMapper.insert(productionProductMain);
         /*鏂板鎶ュ伐鎶曞叆琛�*/
         List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomAndProcess(productProcessRoute.getBomId(), productProcess.getId());
-        if (productStructureDtos.size() == 0) {
+        if (productStructureDtos.isEmpty()) {
             //濡傛灉璇ュ伐搴忔病鏈変骇鍝佺粨鏋勭殑鎶曞叆鍝�,閭h繖涓姇鍏ュ搧鍜屼骇鍑哄搧鏄悓涓�涓�
             ProductStructureDto productStructureDto = new ProductStructureDto();
             productStructureDto.setProductModelId(productProcessRouteItem.getProductModelId());
@@ -155,8 +155,6 @@
             productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
             productionProductInput.setProductMainId(productionProductMain.getId());
             productionProductInputMapper.insert(productionProductInput);
-            stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
-
         }
         /*鏂板鎶ュ伐浜у嚭琛�*/
         ProductionProductOutput productionProductOutput = new ProductionProductOutput();
@@ -165,8 +163,8 @@
         productionProductOutput.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO);
         productionProductOutput.setScrapQty(dto.getScrapQty() != null ? dto.getScrapQty() : BigDecimal.ZERO);
         productionProductOutputMapper.insert(productionProductOutput);
-        //鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺-鎶ュ簾鏁伴噺
-        BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
+        //鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺
+        BigDecimal productQty = productionProductOutput.getQuantity();
         //鍙湁鍚堟牸鏁伴噺>0鎵嶈兘澧炲姞鐩稿簲鏁版嵁
         if (productQty.compareTo(BigDecimal.ZERO) > 0) {
             /*鏂板璐ㄦ*/
@@ -230,6 +228,7 @@
             if (productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) == 0) {
                 productWorkOrder.setActualEndTime(LocalDate.now());//瀹為檯缁撴潫鏃堕棿
             }
+            productWorkOrder.setTotalInvestment(dto.getTotalInvestment());
             productWorkOrderMapper.updateById(productWorkOrder);
             //鐢熶骇璁㈠崟
             ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 8f13c5e..2f9632b 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -9,7 +9,6 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.service.AccountIncomeService;
-import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
 import com.ruoyi.basic.mapper.CustomerMapper;
 import com.ruoyi.basic.mapper.ProductMapper;
 import com.ruoyi.basic.mapper.ProductModelMapper;
@@ -27,19 +26,15 @@
 import com.ruoyi.other.mapper.TempFileMapper;
 import com.ruoyi.other.pojo.TempFile;
 import com.ruoyi.production.mapper.*;
-import com.ruoyi.production.pojo.*;
 import com.ruoyi.production.service.ProductionProductMainService;
-import com.ruoyi.production.service.impl.ProductionProductMainServiceImpl;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysDeptMapper;
 import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
-import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.sales.dto.*;
 import com.ruoyi.sales.mapper.*;
 import com.ruoyi.sales.pojo.*;
-import com.ruoyi.sales.service.ISalesLedgerProductService;
 import com.ruoyi.sales.service.ISalesLedgerService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -770,7 +765,7 @@
                 salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProductMapper.insert(salesLedgerProduct);
                 // 娣诲姞鐢熶骇鏁版嵁
-                salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
+//                salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
             }
         }
     }
diff --git a/src/main/resources/mapper/production/ProductParameterMapper.xml b/src/main/resources/mapper/production/ProductParameterMapper.xml
new file mode 100644
index 0000000..ac0b1c6
--- /dev/null
+++ b/src/main/resources/mapper/production/ProductParameterMapper.xml
@@ -0,0 +1,39 @@
+<?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.production.mapper.ProductParameterMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductParameter">
+        <id column="id" property="id" />
+        <result column="code" property="code" />
+        <result column="parameter_item" property="parameterItem" />
+        <result column="type" property="type" />
+        <result column="unit" property="unit" />
+        <result column="parameter_format" property="parameterFormat" />
+        <result column="dict" property="dict" />
+        <result column="is_required" property="isRequired" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+    <select id="pageProductParameter" resultType="com.ruoyi.production.dto.ProductParameterDto">
+        select pp.*
+        from
+        product_parameter pp
+        <where>
+            <if test="productParameter.code != null and productParameter.code != ''">
+                and pp.code like concat('%',#{productParameter.code},'%')
+            </if>
+            <if test="productParameter.parameterItem != null and productParameter.parameterItem != ''">
+                and pp.parameter_item like concat('%',#{productParameter.parameterItem},'%')
+            </if>
+            <if test="productParameter.type != null and productParameter.type != ''">
+                and pp.type like concat('%',#{productParameter.type},'%')
+            </if>
+        </where>
+        order by pp.id
+    </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/production/ProductProcessParameterMapper.xml b/src/main/resources/mapper/production/ProductProcessParameterMapper.xml
new file mode 100644
index 0000000..57ab6b6
--- /dev/null
+++ b/src/main/resources/mapper/production/ProductProcessParameterMapper.xml
@@ -0,0 +1,39 @@
+<?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.production.mapper.ProductProcessParameterMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductProcessParameter">
+        <id column="id" property="id" />
+        <result column="process_id" property="processId" />
+        <result column="code" property="code" />
+        <result column="parameter_item" property="parameterItem" />
+        <result column="type" property="type" />
+        <result column="unit" property="unit" />
+        <result column="parameter_format" property="parameterFormat" />
+        <result column="dict" property="dict" />
+        <result column="value" property="value" />
+        <result column="is_required" property="isRequired" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+    <select id="pageProductProcessParameter" resultType="com.ruoyi.production.dto.ProductProcessParameterDto">
+        SELECT
+            *
+        FROM product_process_parameter
+        WHERE 1=1
+        <if test="productProcessParameter.code != null and productProcessParameter.code != ''">
+            AND code LIKE concat('%',#{productProcessParameter.code},'%')
+        </if>
+        <if test="productProcessParameter.parameterItem != null and productProcessParameter.parameterItem != ''">
+            AND parameter_item LIKE concat('%',#{productProcessParameter.parameterItem},'%')
+        </if>
+        <if test="productProcessParameter.processId != null and productProcessParameter.processId != ''">
+            AND process_id = #{productProcessParameter.processId}
+        </if>
+    </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/production/ProductionProductMainMapper.xml b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
index a122e90..256a984 100644
--- a/src/main/resources/mapper/production/ProductionProductMainMapper.xml
+++ b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
@@ -16,6 +16,7 @@
         select ppm.*,
         pwo.work_order_no as workOrderNo,
         pwo.status as workOrderStatus,
+        pwo.total_investment as totalInvestment,
         u.nick_name as nickName,
         p.product_name as productName,
         pp.name as process,

--
Gitblit v1.9.3