From b2a081508aca058c075a7e6dcf980c52451093b6 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 23 四月 2026 11:40:50 +0800
Subject: [PATCH] fix:1.生产部分完善 2.生产计划部分更改
---
src/main/java/com/ruoyi/production/bean/dto/ProductionOrderDto.java | 2
src/main/java/com/ruoyi/production/pojo/ProductionBomStructure.java | 4
src/main/java/com/ruoyi/production/bean/dto/ProductionProductMainDto.java | 28 +++
src/main/java/com/ruoyi/production/pojo/ProductionOperationTask.java | 6
src/main/java/com/ruoyi/production/service/impl/ProductionPlanServiceImpl.java | 215 ++++++++++++++++++++++++--
src/main/java/com/ruoyi/production/pojo/ProductionPlan.java | 9
src/main/java/com/ruoyi/production/bean/dto/ProductStructureDto.java | 12 +
src/main/java/com/ruoyi/production/bean/dto/BomImportDto.java | 8 +
src/main/java/com/ruoyi/production/pojo/ProductionOrderPickRecord.java | 4
src/main/java/com/ruoyi/production/bean/dto/ProductionPlanSummaryDto.java | 72 +++++++++
src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java | 4
src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperationParam.java | 4
src/main/java/com/ruoyi/production/bean/dto/ProductionOrderRoutingOperationParamDto.java | 2
src/main/java/com/ruoyi/production/bean/dto/SalesLedgerProductionAccountingDto.java | 6
src/main/java/com/ruoyi/production/bean/dto/ProductionProductInputDto.java | 17 ++
src/main/java/com/ruoyi/production/pojo/ProductionAccount.java | 6
src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderDto.java | 3
src/main/java/com/ruoyi/production/bean/dto/ProductionProductOutputDto.java | 15 +
src/main/java/com/ruoyi/production/pojo/ProductionOperationMainParam.java | 4
src/main/java/com/ruoyi/production/pojo/ProductionOrderRouting.java | 6
src/main/java/com/ruoyi/production/controller/ProductionPlanController.java | 14 -
src/main/java/com/ruoyi/production/pojo/ProductionOrderBom.java | 4
src/main/java/com/ruoyi/production/service/ProductionPlanService.java | 10 -
src/main/java/com/ruoyi/production/bean/dto/ProductionOperationTaskDto.java | 2
src/main/java/com/ruoyi/production/bean/dto/UserAccountDto.java | 3
src/main/java/com/ruoyi/production/pojo/ProductionOrderPick.java | 4
src/main/java/com/ruoyi/production/bean/dto/UserProductionAccountingDto.java | 3
src/main/java/com/ruoyi/production/pojo/ProductionOrder.java | 6
src/main/java/com/ruoyi/production/bean/dto/ProductionOrderRoutingOperationParamSyncDto.java | 3
29 files changed, 405 insertions(+), 71 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/bean/dto/BomImportDto.java b/src/main/java/com/ruoyi/production/bean/dto/BomImportDto.java
index 4557cf7..10ae162 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/BomImportDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/BomImportDto.java
@@ -1,30 +1,38 @@
package com.ruoyi.production.bean.dto;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class BomImportDto {
+ @ApiModelProperty("鐖朵骇鍝佸悕绉�")
@Excel(name = "鐖朵骇鍝佸悕绉�")
private String parentName;
+ @ApiModelProperty("鐖朵骇鍝佽鏍�")
@Excel(name = "鐖朵骇鍝佽鏍�")
private String parentSpec;
+ @ApiModelProperty("瀛愪骇鍝佸悕绉�")
@Excel(name = "瀛愪骇鍝佸悕绉�")
private String childName;
+ @ApiModelProperty("瀛愪骇鍝佽鏍�")
@Excel(name = "瀛愪骇鍝佽鏍�")
private String childSpec;
+ @ApiModelProperty("鍗曚綅鐢ㄩ噺")
@Excel(name = "鍗曚綅鐢ㄩ噺")
private BigDecimal unitQty;
+ @ApiModelProperty("宸ュ簭")
@Excel(name = "宸ュ簭")
private String process;
+ @ApiModelProperty("澶囨敞")
@Excel(name = "澶囨敞")
private String remark;
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductStructureDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductStructureDto.java
index 0bb4230..9c0cdcf 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductStructureDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductStructureDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.production.bean.dto;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@@ -7,15 +8,26 @@
@Data
public class ProductStructureDto {
+ @ApiModelProperty("涓婚敭ID")
private Long id;
+ @ApiModelProperty("BOM涓婚敭ID")
private Long bomId;
+ @ApiModelProperty("鐖剁骇ID")
private Long parentId;
+ @ApiModelProperty("浜у搧鍨嬪彿ID")
private Long productModelId;
+ @ApiModelProperty("鍗曚綅鐢ㄩ噺")
private BigDecimal unitQuantity;
+ @ApiModelProperty("鍗曚綅")
private String unit;
+ @ApiModelProperty("宸ュ簭ID")
private Long processId;
+ @ApiModelProperty("宸ュ簭鍚嶇О")
private String processName;
+ @ApiModelProperty("浜у搧鍚嶇О")
private String productName;
+ @ApiModelProperty("瑙勬牸鍨嬪彿")
private String model;
+ @ApiModelProperty("瀛愯妭鐐�")
private List<ProductStructureDto> children;
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionOperationTaskDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionOperationTaskDto.java
index 906d1f6..d2653c6 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionOperationTaskDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionOperationTaskDto.java
@@ -2,7 +2,9 @@
import com.ruoyi.production.pojo.ProductionOperationTask;
import lombok.Data;
+import lombok.EqualsAndHashCode;
+@EqualsAndHashCode(callSuper = true)
@Data
public class ProductionOperationTaskDto extends ProductionOperationTask {
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderDto.java
index c99a633..c171f2e 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderDto.java
@@ -2,7 +2,9 @@
import com.ruoyi.production.pojo.ProductionOrder;
import lombok.Data;
+import lombok.EqualsAndHashCode;
+@EqualsAndHashCode(callSuper = true)
@Data
public class ProductionOrderDto extends ProductionOrder {
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderRoutingOperationParamDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderRoutingOperationParamDto.java
index e89cc1a..a4e29a0 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderRoutingOperationParamDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderRoutingOperationParamDto.java
@@ -2,7 +2,9 @@
import com.ruoyi.production.pojo.ProductionOrderRoutingOperationParam;
import lombok.Data;
+import lombok.EqualsAndHashCode;
+@EqualsAndHashCode(callSuper = true)
@Data
public class ProductionOrderRoutingOperationParamDto extends ProductionOrderRoutingOperationParam {
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderRoutingOperationParamSyncDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderRoutingOperationParamSyncDto.java
index 044ae7f..03bc0d0 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderRoutingOperationParamSyncDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderRoutingOperationParamSyncDto.java
@@ -1,11 +1,14 @@
package com.ruoyi.production.bean.dto;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ProductionOrderRoutingOperationParamSyncDto {
+ @ApiModelProperty("鐢熶骇璁㈠崟宸ュ簭鍙傛暟ID")
private Long productionOrderRoutingOperationId;
+ @ApiModelProperty("鏄惁鏇挎崲宸叉湁鍙傛暟")
private Boolean replaceExisting;
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionPlanSummaryDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionPlanSummaryDto.java
new file mode 100644
index 0000000..b862476
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionPlanSummaryDto.java
@@ -0,0 +1,72 @@
+package com.ruoyi.production.bean.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * <br>
+ * 閿�鍞敓浜ч渶姹� - 浜у搧绫诲瀷姹囨�籇TO
+ * </br>
+ */
+@Data
+@ApiModel("鐢熶骇闇�姹備骇鍝佹眹鎬�")
+public class ProductionPlanSummaryDto {
+
+ /**
+ * 鐗╂枡缂栫爜
+ */
+ @ApiModelProperty("鐗╂枡缂栫爜")
+ private String materialCode;
+
+ /**
+ * 浜у搧鍚嶇О
+ */
+ @ApiModelProperty("浜у搧鍚嶇О")
+ private String productName;
+
+ /**
+ * 浜у搧瑙勬牸
+ */
+ @ApiModelProperty("浜у搧瑙勬牸")
+ private String model;
+
+ /**
+ * 浜у搧闀垮害
+ */
+ @ApiModelProperty("浜у搧闀垮害")
+ private Integer length;
+
+ /**
+ * 浜у搧瀹藉害
+ */
+ @ApiModelProperty("浜у搧瀹藉害")
+ private Integer width;
+
+ /**
+ * 浜у搧楂樺害
+ */
+ @ApiModelProperty("浜у搧楂樺害")
+ private Integer height;
+
+ /**
+ * 姹囨�诲潡鏁�
+ */
+ @ApiModelProperty("姹囨�诲潡鏁�")
+ private Integer quantity;
+
+ /**
+ * 姹囨�绘柟鏁�
+ */
+ @ApiModelProperty("姹囨�绘柟鏁�")
+ private BigDecimal volume;
+
+ /**
+ * 鍩烘湰鍗曚綅
+ */
+ @ApiModelProperty("鍩烘湰鍗曚綅")
+ private String unit;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionProductInputDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionProductInputDto.java
index f1435d8..0ca0a25 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionProductInputDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionProductInputDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.production.bean.dto;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@@ -7,21 +8,37 @@
@Data
public class ProductionProductInputDto {
+ @ApiModelProperty("涓婚敭ID")
private Long id;
+ @ApiModelProperty("浜у搧涓昏〃ID")
private Long productMainId;
+ @ApiModelProperty("鐢熶骇浜у搧涓昏〃ID")
private Long productionProductMainId;
+ @ApiModelProperty("浜у搧鍨嬪彿ID")
private Long productModelId;
+ @ApiModelProperty("鏁伴噺")
private BigDecimal quantity;
+ @ApiModelProperty("鎶曞叆鏁伴噺")
private BigDecimal inputQuantity;
+ @ApiModelProperty("鍒涘缓鏃堕棿")
private LocalDateTime createTime;
+ @ApiModelProperty("鏇存柊鏃堕棿")
private LocalDateTime updateTime;
+ @ApiModelProperty("绉熸埛ID")
private Long tenantId;
+ @ApiModelProperty("鍒涘缓浜�")
private Integer createUser;
+ @ApiModelProperty("鏇存柊浜�")
private Integer updateUser;
+ @ApiModelProperty("閮ㄩ棬ID")
private Long deptId;
+ @ApiModelProperty("浜у搧缂栧彿")
private String productNo;
+ @ApiModelProperty("瑙勬牸鍨嬪彿")
private String model;
+ @ApiModelProperty("浜у搧鍚嶇О")
private String productName;
+ @ApiModelProperty("鍗曚綅")
private String unit;
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionProductMainDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionProductMainDto.java
index 1712d72..26ef072 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionProductMainDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionProductMainDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.production.bean.dto;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@@ -8,32 +9,59 @@
@Data
public class ProductionProductMainDto {
+ @ApiModelProperty("涓婚敭ID")
private Long id;
+ @ApiModelProperty("浜у搧缂栧彿")
private String productNo;
+ @ApiModelProperty("鐢ㄦ埛ID")
private Long userId;
+ @ApiModelProperty("鐢ㄦ埛鍚嶇О")
private String userName;
+ @ApiModelProperty("浜у搧宸ヨ壓璺嚎鏄庣粏ID")
private Long productProcessRouteItemId;
+ @ApiModelProperty("宸ュ崟ID")
private Long workOrderId;
+ @ApiModelProperty("鐢熶骇宸ュ簭浠诲姟ID")
private Long productionOperationTaskId;
+ @ApiModelProperty("鐘舵��")
private Integer status;
+ @ApiModelProperty("鍒涘缓鏃堕棿")
private LocalDateTime createTime;
+ @ApiModelProperty("鏇存柊鏃堕棿")
private LocalDateTime updateTime;
+ @ApiModelProperty("绉熸埛ID")
private Long tenantId;
+ @ApiModelProperty("鍒涘缓浜�")
private Integer createUser;
+ @ApiModelProperty("鏇存柊浜�")
private Integer updateUser;
+ @ApiModelProperty("閮ㄩ棬ID")
private Long deptId;
+ @ApiModelProperty("宸ュ崟缂栧彿")
private String workOrderNo;
+ @ApiModelProperty("宸ュ崟鐘舵��")
private String workOrderStatus;
+ @ApiModelProperty("鏄电О")
private String nickName;
+ @ApiModelProperty("鏁伴噺")
private BigDecimal quantity;
+ @ApiModelProperty("鎶ュ簾鏁伴噺")
private BigDecimal scrapQty;
+ @ApiModelProperty("浜у搧鍚嶇О")
private String productName;
+ @ApiModelProperty("浜у搧鍨嬪彿鍚嶇О")
private String productModelName;
+ @ApiModelProperty("鍗曚綅")
private String unit;
+ @ApiModelProperty("閿�鍞悎鍚岀紪鍙�")
private String salesContractNo;
+ @ApiModelProperty("鎺掍骇鏃ユ湡")
private LocalDate schedulingDate;
+ @ApiModelProperty("鎺掍骇浜哄憳鍚嶇О")
private String schedulingUserName;
+ @ApiModelProperty("瀹㈡埛鍚嶇О")
private String customerName;
+ @ApiModelProperty("宸ュ簭")
private String process;
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionProductOutputDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionProductOutputDto.java
index 0363ea9..1e2cbb2 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionProductOutputDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionProductOutputDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.production.bean.dto;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@@ -7,19 +8,33 @@
@Data
public class ProductionProductOutputDto {
+ @ApiModelProperty("涓婚敭ID")
private Long id;
+ @ApiModelProperty("浜у搧涓昏〃ID")
private Long productMainId;
+ @ApiModelProperty("鐢熶骇浜у搧涓昏〃ID")
private Long productionProductMainId;
+ @ApiModelProperty("浜у搧鍨嬪彿ID")
private Long productModelId;
+ @ApiModelProperty("鏁伴噺")
private BigDecimal quantity;
+ @ApiModelProperty("鎶ュ簾鏁伴噺")
private BigDecimal scrapQty;
+ @ApiModelProperty("鍒涘缓鏃堕棿")
private LocalDateTime createTime;
+ @ApiModelProperty("鏇存柊鏃堕棿")
private LocalDateTime updateTime;
+ @ApiModelProperty("绉熸埛ID")
private Long tenantId;
+ @ApiModelProperty("鍒涘缓浜�")
private Integer createUser;
+ @ApiModelProperty("鏇存柊浜�")
private Integer updateUser;
+ @ApiModelProperty("閮ㄩ棬ID")
private Long deptId;
+ @ApiModelProperty("浜у搧缂栧彿")
private String productNo;
+ @ApiModelProperty("瑙勬牸鍨嬪彿")
private String model;
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/SalesLedgerProductionAccountingDto.java b/src/main/java/com/ruoyi/production/bean/dto/SalesLedgerProductionAccountingDto.java
index 2270368..366c61e 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/SalesLedgerProductionAccountingDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/SalesLedgerProductionAccountingDto.java
@@ -1,14 +1,20 @@
package com.ruoyi.production.bean.dto;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
@Data
public class SalesLedgerProductionAccountingDto {
+ @ApiModelProperty("鐢ㄦ埛ID")
private Long userId;
+ @ApiModelProperty("鐢ㄦ埛鍚嶇О")
private String userName;
+ @ApiModelProperty("宸ュ簭")
private String process;
+ @ApiModelProperty("寮�濮嬫棩鏈�")
private LocalDate startDate;
+ @ApiModelProperty("缁撴潫鏃ユ湡")
private LocalDate endDate;
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/UserAccountDto.java b/src/main/java/com/ruoyi/production/bean/dto/UserAccountDto.java
index 5ac89c7..b991e8f 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/UserAccountDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/UserAccountDto.java
@@ -1,11 +1,14 @@
package com.ruoyi.production.bean.dto;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class UserAccountDto {
+ @ApiModelProperty("閲戦")
private BigDecimal account = BigDecimal.ZERO;
+ @ApiModelProperty("璐︽埛浣欓")
private BigDecimal accountBalance = BigDecimal.ZERO;
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/UserProductionAccountingDto.java b/src/main/java/com/ruoyi/production/bean/dto/UserProductionAccountingDto.java
index 3541487..ca86abf 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/UserProductionAccountingDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/UserProductionAccountingDto.java
@@ -1,9 +1,12 @@
package com.ruoyi.production.bean.dto;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserProductionAccountingDto {
+ @ApiModelProperty("鐢ㄦ埛ID")
private Long userId;
+ @ApiModelProperty("鏃ユ湡")
private String date;
}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionPlanController.java b/src/main/java/com/ruoyi/production/controller/ProductionPlanController.java
index 29ec05b..c9cb854 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionPlanController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionPlanController.java
@@ -42,14 +42,6 @@
return R.ok(productionPlanService.listPage(page, productionPlanDto));
}
- @GetMapping("/loadProdData")
- @ApiOperation("鎷夊彇閿�鍞敓浜ц鍒�")
- @Log(title = "鎷夊彇閿�鍞敓浜ц鍒�", businessType = BusinessType.INSERT)
- public R loadProdData() {
- productionPlanService.loadProdData();
- return R.ok();
- }
-
@PostMapping("/combine")
@Log(title = "鍚堝苟鐢熶骇璁″垝", businessType = BusinessType.INSERT)
@ApiOperation("鍚堝苟鐢熶骇璁″垝")
@@ -64,21 +56,21 @@
return R.ok(productionPlanService.combine(productionPlanDto));
}
- @PostMapping("")
+ @PostMapping("addProductionPlan")
@Log(title = "鍒涘缓鐢熶骇璁″垝", businessType = BusinessType.INSERT)
@ApiOperation("鍒涘缓鐢熶骇璁″垝")
public R add(@RequestBody ProductionPlanDto productionPlanDto) {
return R.ok(productionPlanService.add(productionPlanDto));
}
- @PutMapping("")
+ @PutMapping("updateProductionPlan")
@Log(title = "鏇存柊鐢熶骇璁″垝", businessType = BusinessType.UPDATE)
@ApiOperation("鏇存柊鐢熶骇璁″垝")
public R update(@RequestBody ProductionPlanDto productionPlanDto) {
return R.ok(productionPlanService.update(productionPlanDto));
}
- @DeleteMapping("")
+ @DeleteMapping("deleteProductionPlan")
@Log(title = "鍒犻櫎鐢熶骇璁″垝", businessType = BusinessType.DELETE)
@ApiOperation("鍒犻櫎鐢熶骇璁″垝")
public R delete(@RequestBody List<Long> ids) {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionAccount.java b/src/main/java/com/ruoyi/production/pojo/ProductionAccount.java
index 910c2a3..17ea424 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionAccount.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionAccount.java
@@ -3,8 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -18,8 +17,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_account")
@ApiModel(value = "ProductionAccount瀵硅薄", description = "鐢熶骇鏍哥畻琛�")
public class ProductionAccount implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionBomStructure.java b/src/main/java/com/ruoyi/production/pojo/ProductionBomStructure.java
index a70c057..e48c0e8 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionBomStructure.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionBomStructure.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@@ -17,8 +18,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_bom_structure")
@ApiModel(value = "ProductionBomStructure瀵硅薄", description = "鐢熶骇璁㈠崟BOM浜у搧缁撴瀯")
public class ProductionBomStructure implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOperationMainParam.java b/src/main/java/com/ruoyi/production/pojo/ProductionOperationMainParam.java
index cd136ad..87c8704 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOperationMainParam.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOperationMainParam.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@@ -17,8 +18,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_operation_main_param")
@ApiModel(value = "ProductionOperationMainParam瀵硅薄", description = "鐢熶骇宸ュ崟鎶ュ伐鍙傛暟琛�")
public class ProductionOperationMainParam implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOperationTask.java b/src/main/java/com/ruoyi/production/pojo/ProductionOperationTask.java
index 08f4d39..99f852a 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOperationTask.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOperationTask.java
@@ -3,8 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -19,8 +18,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_operation_task")
@ApiModel(value = "ProductionOperationTask瀵硅薄", description = "鐢熶骇宸ュ崟琛�")
public class ProductionOperationTask implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrder.java
index c07b320..9d0d80d 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOrder.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrder.java
@@ -4,8 +4,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
@@ -21,8 +20,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_order")
@ApiModel(value = "ProductionOrder瀵硅薄", description = "鐢熶骇璁㈠崟琛�")
public class ProductionOrder implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderBom.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderBom.java
index 53cbb17..26c981d 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOrderBom.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderBom.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@@ -17,8 +18,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_order_bom")
@ApiModel(value = "ProductionOrderBom瀵硅薄", description = "鐢熶骇璁㈠崟BOM")
public class ProductionOrderBom implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderPick.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderPick.java
index d0fcc28..6e67ce0 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOrderPick.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderPick.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@@ -18,8 +19,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_order_pick")
@ApiModel(value = "ProductionOrderPick瀵硅薄", description = "璁㈠崟棰嗘枡绾胯竟浠�")
public class ProductionOrderPick implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderPickRecord.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderPickRecord.java
index b4fa6a8..3417b9a 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOrderPickRecord.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderPickRecord.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@@ -18,8 +19,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_order_pick_record")
@ApiModel(value = "ProductionOrderPickRecord瀵硅薄", description = "绾胯竟浠撳嚭鍏ュ簱璁板綍")
public class ProductionOrderPickRecord implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRouting.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRouting.java
index a74d7ad..b798cd1 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRouting.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRouting.java
@@ -3,8 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@@ -17,8 +16,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_order_routing")
@ApiModel(value = "ProductionOrderRouting瀵硅薄", description = "鐢熶骇璁㈠崟宸ヨ壓璺嚎琛�")
public class ProductionOrderRouting implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java
index 5d2bc57..17e8660 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@@ -17,8 +18,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_order_routing_operation")
@ApiModel(value = "ProductionOrderRoutingOperation瀵硅薄", description = "鐢熶骇璁㈠崟宸ヨ壓璺嚎宸ュ簭琛�")
public class ProductionOrderRoutingOperation implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperationParam.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperationParam.java
index 6cc4910..3c1bc09 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperationParam.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperationParam.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@@ -17,8 +18,7 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-04-21 03:55:52
*/
-@Getter
-@Setter
+@Data
@TableName("production_order_routing_operation_param")
@ApiModel(value = "ProductionOrderRoutingOperationParam瀵硅薄", description = "鐢熶骇璁㈠崟宸ヨ壓璺嚎宸ュ簭鍙傛暟琛�")
public class ProductionOrderRoutingOperationParam implements Serializable {
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionPlan.java b/src/main/java/com/ruoyi/production/pojo/ProductionPlan.java
index 44dcaa7..1b00082 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionPlan.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionPlan.java
@@ -1,12 +1,12 @@
package com.ruoyi.production.pojo;
import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
-import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -25,7 +25,6 @@
@ApiModel(value = "ProductionPlan瀵硅薄", description = "鐢熶骇璁″垝琛�")
public class ProductionPlan implements Serializable {
- @Serial
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@@ -78,4 +77,10 @@
@ApiModelProperty("鎵胯鏃ユ湡")
private LocalDateTime promisedDeliveryDate;
+
+ @ApiModelProperty("鐢宠鍗曠紪鍙�")
+ private String applyNo;
+
+ @ApiModelProperty("鐘舵�� 0鏈笅鍙� 1閮ㄥ垎涓嬪彂 2宸蹭笅鍙�")
+ private Integer status;
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductionPlanService.java b/src/main/java/com/ruoyi/production/service/ProductionPlanService.java
index 370a7c6..052676b 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionPlanService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductionPlanService.java
@@ -24,16 +24,6 @@
IPage<ProductionPlanVo> listPage(Page<ProductionPlanDto> page, ProductionPlanDto productionPlanDto);
/**
- * 鎵嬪姩鍚屾
- */
- void loadProdData();
-
- /**
- * 瀹氭椂鍚屾
- */
- void syncProdDataJob();
-
- /**
* 鍚堝苟鐢熶骇璁″垝
*/
boolean combine(ProductionPlanDto productionPlanDto);
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionPlanServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionPlanServiceImpl.java
index 6113736..8e70889 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionPlanServiceImpl.java
@@ -1,65 +1,246 @@
package com.ruoyi.production.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.production.bean.dto.ProductionPlanDto;
+import com.ruoyi.production.bean.dto.ProductionPlanImportDto;
import com.ruoyi.production.bean.vo.ProductionPlanVo;
+import com.ruoyi.production.enums.ProductOrderStatusEnum;
+import com.ruoyi.production.mapper.ProductionOrderMapper;
import com.ruoyi.production.mapper.ProductionPlanMapper;
+import com.ruoyi.production.pojo.ProductionOrder;
import com.ruoyi.production.pojo.ProductionPlan;
import com.ruoyi.production.service.ProductionPlanService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class ProductionPlanServiceImpl extends ServiceImpl<ProductionPlanMapper, ProductionPlan> implements ProductionPlanService {
+
+ private final ProductionPlanMapper productionPlanMapper;
+
+ private final ProductionOrderMapper productionOrderMapper;
+
@Override
public IPage<ProductionPlanVo> listPage(Page<ProductionPlanDto> page, ProductionPlanDto productionPlanDto) {
- return null;
+
+ IPage<ProductionPlanVo> planVoIPage = productionPlanMapper.listPage(page, productionPlanDto)
+ .convert(dto -> {
+ ProductionPlanVo vo = new ProductionPlanVo();
+ BeanUtils.copyProperties(dto, vo);
+ return vo;
+ });
+ return planVoIPage;
}
+ /**
+ * 鍚堝苟鐢熶骇璁″垝
+ */
@Override
- public void loadProdData() {
-
- }
-
- @Override
- public void syncProdDataJob() {
-
- }
-
- @Override
+ @Transactional(rollbackFor = Exception.class)
public boolean combine(ProductionPlanDto productionPlanDto) {
- return false;
+ if (productionPlanDto.getIds() == null || productionPlanDto.getIds().isEmpty()) {
+ return false;
+ }
+
+ // 鏌ヨ涓荤敓浜ц鍒�
+ List<ProductionPlanDto> plans = productionPlanMapper.selectWithMaterialByIds(productionPlanDto.getIds());
+
+ if (plans == null || plans.isEmpty()) {
+ throw new ServiceException("涓嬪彂澶辫触,鐢熶骇璁″垝涓嶅瓨鍦�");
+ }
+
+ // 鏍¢獙鏄惁瀛樺湪涓嶅悓鐨勪骇鍝佸悕绉�
+ String firstProductName = plans.get(0).getProductName();
+ if (plans.stream().anyMatch(p -> p.getProductName() == null || !p.getProductName().equals(firstProductName))) {
+ throw new BaseException("鍚堝苟澶辫触锛屽瓨鍦ㄤ笉鍚岀殑浜у搧鍚嶇О");
+ }
+
+ // 鏍¢獙鏄惁瀛樺湪涓嶅悓鐨勪骇鍝佽鏍�
+ String firstProductSpec = plans.get(0).getModel();
+ if (plans.stream().anyMatch(p -> p.getModel() == null || !p.getModel().equals(firstProductSpec))) {
+ throw new BaseException("鍚堝苟澶辫触锛屽瓨鍦ㄤ笉鍚岀殑浜у搧瑙勬牸");
+ }
+
+ // 鍒涘缓鐢熶骇璁㈠崟
+ ProductionOrder productionOrder = new ProductionOrder();
+ productionOrder.setQuantity(productionPlanDto.getTotalAssignedQuantity());
+ productionOrder.setPlanCompleteTime(productionPlanDto.getPlanCompleteTime());
+ productionOrder.setStatus(ProductOrderStatusEnum.WAIT.getCode());
+ productionOrder.setStrength(productionPlanDto.getStrength());
+ return true;
}
@Override
- public boolean add(ProductionPlanDto productionPlanDto) {
- return false;
+ @Transactional(rollbackFor = Exception.class)
+ public boolean add(ProductionPlanDto dto) {
+ if (StringUtils.isBlank(dto.getApplyNo())) {
+ throw new ServiceException("鏂板澶辫触锛岀敵璇峰崟缂栧彿涓嶈兘涓虹┖");
+ }
+ checkApplyNoUnique(dto.getApplyNo(), null);
+
+ dto.setStatus(0);
+ return productionPlanMapper.insert(dto) > 0;
}
@Override
- public boolean update(ProductionPlanDto productionPlanDto) {
- return false;
+ @Transactional(rollbackFor = Exception.class)
+ public boolean update(ProductionPlanDto dto) {
+ if (dto == null || dto.getId() == null) {
+ throw new ServiceException("缂栬緫澶辫触,鏁版嵁涓嶈兘涓虹┖");
+ }
+
+ ProductionPlan old = getById(dto.getId());
+ if (old == null) {
+ throw new ServiceException("缂栬緫澶辫触,涓荤敓浜ц鍒掍笉瀛樺湪");
+ }
+
+ // 鐘舵�佹牎楠�
+ if (old.getStatus() != 0) {
+ throw new BaseException("缂栬緫澶辫触,璇ョ敓浜ц鍒掑凡涓嬪彂鎴栭儴鍒嗕笅鍙戠姸鎬�,绂佹缂栬緫");
+ }
+
+ // applyNo鍙樻洿鎵嶆牎楠�
+ if (StringUtils.isNotBlank(dto.getApplyNo())
+ && !dto.getApplyNo().equals(old.getApplyNo())) {
+ checkApplyNoUnique(dto.getApplyNo(), dto.getId());
+ }
+
+ return productionPlanMapper.updateById(dto) > 0;
+ }
+
+ private void checkApplyNoUnique(String applyNo, Long excludeId) {
+ LambdaQueryWrapper<ProductionPlan> wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(ProductionPlan::getApplyNo, applyNo);
+
+ if (excludeId != null) {
+ wrapper.ne(ProductionPlan::getId, excludeId);
+ }
+
+ if (productionPlanMapper.selectCount(wrapper) > 0) {
+ throw new ServiceException("鐢宠鍗曠紪鍙� " + applyNo + " 宸插瓨鍦�");
+ }
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public boolean delete(List<Long> ids) {
- return false;
+ // 濡傛灉瀛樺湪宸蹭笅鍙戠殑璁″垝锛屽垯涓嶈兘鍒犻櫎
+ if (productionPlanMapper.selectList(Wrappers.<ProductionPlan>lambdaQuery().in(ProductionPlan::getId, ids)).stream().anyMatch(p -> p.getStatus() == 1 || p.getStatus() == 2)) {
+ throw new BaseException("鍒犻櫎澶辫触锛屽瓨鍦ㄥ凡涓嬪彂鎴栭儴鍒嗕笅鍙戠殑璁″垝");
+ }
+ // 濡傛灉鏈夊叧鑱旇鍗曪紝鍒欎笉鑳藉垹闄�
+ if (productionOrderMapper.selectList(Wrappers.<ProductionOrder>lambdaQuery().in(ProductionOrder::getProductionPlanIds, ids)).stream().anyMatch(p -> p.getId() != null)) {
+ throw new BaseException("鍒犻櫎澶辫触锛屽瓨鍦ㄥ叧鑱旇鍗�");
+ }
+
+ return productionPlanMapper.deleteBatchIds(ids) > 0;
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void importProdData(MultipartFile file) {
+ if (file == null || file.isEmpty()) {
+ throw new ServiceException("瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+ }
+ ExcelUtil<ProductionPlanImportDto> excelUtil = new ExcelUtil<>(ProductionPlanImportDto.class);
+ List<ProductionPlanImportDto> list;
+ try {
+ list = excelUtil.importExcel(file.getInputStream());
+ } catch (Exception e) {
+ log.error("鐢熶骇闇�姹侲xcel瀵煎叆澶辫触", e);
+ throw new ServiceException("Excel瑙f瀽澶辫触");
+ }
+ if (list == null || list.isEmpty()) {
+ throw new ServiceException("Excel娌℃湁鏁版嵁");
+ }
+
+ Set<String> applyNos = new HashSet<>();
+ Set<String> materialCodes = new HashSet<>();
+ for (int i = 0; i < list.size(); i++) {
+ ProductionPlanImportDto dto = list.get(i);
+ String applyNo = dto.getApplyNo();
+ String materialCode = dto.getMaterialCode();
+
+ if (StringUtils.isEmpty(applyNo)) {
+ throw new ServiceException("瀵煎叆澶辫触锛氱 " + (i + 2) + " 琛岀敵璇峰崟缂栧彿涓嶈兘涓虹┖");
+ }
+ if (!applyNos.add(applyNo)) {
+ throw new ServiceException("瀵煎叆澶辫触锛欵xcel 涓瓨鍦ㄩ噸澶嶇殑鐢宠鍗曠紪鍙�: " + applyNo);
+ }
+ if (StringUtils.isEmpty(materialCode)) {
+ throw new ServiceException("瀵煎叆澶辫触锛氱 " + (i + 2) + " 琛岀墿鏂欑紪鐮佷笉鑳戒负绌�");
+ }
+
+ String strength = dto.getStrength();
+ if (StringUtils.isNotEmpty(strength)) {
+ if (!"A3.5".equals(strength) && !"A5.0".equals(strength)) {
+ throw new ServiceException("瀵煎叆澶辫触锛氱 " + (i + 2) + " 琛屽己搴﹀彧鑳芥槸 A3.5 鎴� A5.0");
+ }
+ }
+
+ materialCodes.add(materialCode);
+ }
+
+ // 鐢宠鍗曠紪鍙锋槸鍚﹀凡瀛樺湪
+ Long existApplyNoCount = baseMapper.selectCount(Wrappers.<ProductionPlan>lambdaQuery()
+ .in(ProductionPlan::getApplyNo, applyNos));
+ if (existApplyNoCount > 0) {
+ List<String> existApplyNos = baseMapper.selectList(Wrappers.<ProductionPlan>lambdaQuery()
+ .in(ProductionPlan::getApplyNo, applyNos))
+ .stream().map(ProductionPlan::getApplyNo).collect(Collectors.toList());
+ throw new ServiceException("瀵煎叆澶辫触锛岀敵璇峰崟缂栧彿宸插瓨鍦�: " + String.join(", ", existApplyNos));
+ }
+
+ LocalDateTime now = LocalDateTime.now();
+ List<ProductionPlan> entityList = list.stream().map(dto -> {
+ ProductionPlan entity = new ProductionPlan();
+ BeanUtils.copyProperties(dto, entity);
+ entity.setStatus(0);
+ entity.setCreateTime(now);
+ entity.setUpdateTime(now);
+ return entity;
+ }).collect(Collectors.toList());
+
+ this.saveBatch(entityList);
}
@Override
public void exportProdData(HttpServletResponse response, List<Long> ids) {
+ List<ProductionPlan> list;
+ if (ids != null && !ids.isEmpty()) {
+ list = baseMapper.selectBatchIds(ids);
+ } else {
+ list = baseMapper.selectList(null);
+ }
+ List<ProductionPlanImportDto> exportList = new ArrayList<>();
+ for (ProductionPlan entity : list) {
+ ProductionPlanImportDto dto = new ProductionPlanImportDto();
+ BeanUtils.copyProperties(entity, dto);
+ exportList.add(dto);
+ }
+ ExcelUtil<ProductionPlanImportDto> util = new ExcelUtil<>(ProductionPlanImportDto.class);
+ util.exportExcel(response, exportList, "閿�鍞敓浜ч渶姹傛暟鎹�");
}
}
diff --git a/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderDto.java b/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderDto.java
index f48f158..926221c 100644
--- a/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderDto.java
@@ -1,11 +1,12 @@
package com.ruoyi.purchase.dto;
-import com.ruoyi.purchase.pojo.PurchaseReturnOrderProducts;
import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import java.util.List;
+@EqualsAndHashCode(callSuper = true)
@Data
public class PurchaseReturnOrderDto extends PurchaseReturnOrders {
// 鏄惁浣跨敤绯荤粺鍗曞彿
--
Gitblit v1.9.3