From eaf6548902e9472fc9b876d531db8508e16c4f2f Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 20 三月 2026 13:49:43 +0800
Subject: [PATCH] feat: 生产订单的撤回、删除;BOM的子集新增/修改统一使用临时ID处理
---
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java | 84 ++++++++++++--------
src/main/java/com/ruoyi/production/enums/ProductOrderStatusEnum.java | 9 ++
src/main/java/com/ruoyi/production/service/ProductOrderService.java | 4
src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java | 34 +++----
src/main/java/com/ruoyi/production/service/impl/ProductionOrderStructureServiceImpl.java | 22 ++---
src/main/java/com/ruoyi/production/mapper/ProductionOrderStructureMapper.java | 5 +
src/main/java/com/ruoyi/production/controller/ProductionOrderStructureController.java | 6
src/main/java/com/ruoyi/production/service/IProductionOrderStructureService.java | 2
src/main/java/com/ruoyi/production/controller/ProductStructureController.java | 7 +
src/main/java/com/ruoyi/production/service/ProductStructureService.java | 2
src/main/java/com/ruoyi/production/controller/ProductOrderController.java | 16 ++-
src/main/resources/mapper/production/ProductionOrderStructureMapper.xml | 16 ++++
src/main/java/com/ruoyi/production/dto/ProductionOrderStructureDto.java | 8 ++
13 files changed, 129 insertions(+), 86 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
index fd32aeb..0bfbfec 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -48,8 +48,14 @@
@PostMapping("/revoke")
@ApiOperation("鎾ゅ洖鐢熶骇璁″垝")
- public R revoke(@RequestBody ProductOrder productOrder) {
- return R.ok(productOrderService.revoke(productOrder));
+ public R revoke(@RequestBody List<Long> ids) {
+ return R.ok(productOrderService.revoke(ids));
+ }
+
+ @ApiOperation("鍒犻櫎鐢熶骇璁㈠崟")
+ @DeleteMapping("/{id}")
+ public R delete(@PathVariable("id") Long ids) {
+ return R.ok(productOrderService.delete(ids));
}
/**
@@ -76,9 +82,5 @@
return R.ok(productOrderService.addProductOrder(productOrder));
}
- @ApiOperation("鍒犻櫎鐢熶骇璁㈠崟")
- @DeleteMapping("/{ids}")
- public R delete(@PathVariable("ids") Long[] ids) {
- return R.ok(productOrderService.delete(ids));
- }
+
}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductStructureController.java b/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
index 59fb707..ad2b36c 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
@@ -17,6 +17,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
+import java.util.List;
@RequestMapping("productStructure")
@RestController
@@ -27,9 +28,9 @@
@ApiOperation("鏂板BOM瀛愰泦")
- @PostMapping()
- public R addOrUpdate(@RequestBody ProductStructureDto productStructureDto){
- return R.ok(productStructureService.addProductStructureDto(productStructureDto));
+ @PostMapping("/{bomId}")
+ public R addOrUpdate(@PathVariable Integer bomId, @RequestBody List<ProductStructureDto> list){
+ return R.ok(productStructureService.addProductStructureDto(bomId, list));
}
@ApiOperation("BOM鏌ョ湅瀛愰泦璇︽儏")
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionOrderStructureController.java b/src/main/java/com/ruoyi/production/controller/ProductionOrderStructureController.java
index 912e99f..42e80f3 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionOrderStructureController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionOrderStructureController.java
@@ -33,10 +33,10 @@
return AjaxResult.success(list);
}
- @PutMapping("/addOrUpdateBomStructs")
+ @PutMapping("/addOrUpdateBomStructs/{orderId}")
@ApiOperation("鏂板/鏇存柊BOM瀛愰泦缁撴瀯")
- public AjaxResult addOrUpdateBomStructs(@RequestBody ProductionOrderStructureDto instanceDto) {
- productionOrderStructureService.addOrUpdateBomStructs(instanceDto);
+ public AjaxResult addOrUpdateBomStructs(@PathVariable Long orderId, @RequestBody List<ProductionOrderStructureDto> list) {
+ productionOrderStructureService.addOrUpdateBomStructs(orderId, list);
return AjaxResult.success();
}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionOrderStructureDto.java b/src/main/java/com/ruoyi/production/dto/ProductionOrderStructureDto.java
index a0757ac..b9f58e8 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductionOrderStructureDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductionOrderStructureDto.java
@@ -31,4 +31,12 @@
@ApiModelProperty("鐖惰妭鐐逛复鏃禝D")
private String parentTempId;
+ @ApiModelProperty("宸ュ簭鍚嶇О")
+ private String processName;
+
+ @ApiModelProperty("浜у搧鍚嶇О")
+ private String productName;
+
+ @ApiModelProperty("浜у搧瑙勬牸")
+ private String model;
}
diff --git a/src/main/java/com/ruoyi/production/enums/ProductOrderStatusEnum.java b/src/main/java/com/ruoyi/production/enums/ProductOrderStatusEnum.java
index 6175f2f..5ad55c3 100644
--- a/src/main/java/com/ruoyi/production/enums/ProductOrderStatusEnum.java
+++ b/src/main/java/com/ruoyi/production/enums/ProductOrderStatusEnum.java
@@ -43,13 +43,20 @@
}
/**
- * 鍒ゆ柇鏄惁鍏佽鍒犻櫎锛�1銆�4锛�
+ * 鍒ゆ柇鏄惁鍏佽鍒犻櫎锛�4锛�
*/
public static boolean canDelete(Integer code) {
return WAIT.getCode().equals(code) || CANCEL.getCode().equals(code);
}
/**
+ * 鍒ゆ柇鏄惁鍏佽鎾ゅ洖锛�1锛�
+ */
+ public static boolean canRevoke(Integer code) {
+ return WAIT.getCode().equals(code);
+ }
+
+ /**
* 鍒ゆ柇鏄惁宸插紑濮嬬敓浜э紙2銆�3锛�
*/
public static boolean isStarted(Integer code) {
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductionOrderStructureMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductionOrderStructureMapper.java
index 191fbdd..35d44ad 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductionOrderStructureMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductionOrderStructureMapper.java
@@ -1,7 +1,10 @@
package com.ruoyi.production.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.production.dto.ProductionOrderStructureDto;
import com.ruoyi.production.pojo.ProductionOrderStructure;
+
+import java.util.List;
/**
* <p>
@@ -13,4 +16,6 @@
*/
public interface ProductionOrderStructureMapper extends BaseMapper<ProductionOrderStructure> {
+ List<ProductionOrderStructureDto> listByOrderId(Long orderId);
+
}
diff --git a/src/main/java/com/ruoyi/production/service/IProductionOrderStructureService.java b/src/main/java/com/ruoyi/production/service/IProductionOrderStructureService.java
index 9b74d02..70239cc 100644
--- a/src/main/java/com/ruoyi/production/service/IProductionOrderStructureService.java
+++ b/src/main/java/com/ruoyi/production/service/IProductionOrderStructureService.java
@@ -18,5 +18,5 @@
List<ProductionOrderStructureDto> listByOrderId(Long orderId);
- void addOrUpdateBomStructs(ProductionOrderStructureDto instanceDto);
+ void addOrUpdateBomStructs(Long orderId, List<ProductionOrderStructureDto> list);
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductOrderService.java b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
index abd84b7..612ecd8 100644
--- a/src/main/java/com/ruoyi/production/service/ProductOrderService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
@@ -21,7 +21,7 @@
/**
* 鎾ゅ洖鐢熶骇璁″垝
*/
- Boolean revoke(ProductOrder productOrder);
+ Boolean revoke(List<Long> ids);
List<ProcessRoute> listProcessRoute(Long productModelId);
@@ -31,5 +31,5 @@
Long insertProductOrder(ProductOrder productOrder);
- Boolean delete(Long[] id);
+ Boolean delete(Long id);
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductStructureService.java b/src/main/java/com/ruoyi/production/service/ProductStructureService.java
index 760ca6e..e86c3da 100644
--- a/src/main/java/com/ruoyi/production/service/ProductStructureService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductStructureService.java
@@ -10,7 +10,7 @@
public interface ProductStructureService extends IService<ProductStructure> {
- Boolean addProductStructureDto(ProductStructureDto productStructureDto);
+ Boolean addProductStructureDto(Integer bomId, List<ProductStructureDto> list);
List<ProductStructureDto> listByBomId(Integer bomId);
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
index f3031c7..094d016 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -1,6 +1,5 @@
package com.ruoyi.production.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -137,25 +136,48 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public Boolean revoke(ProductOrder productOrder) {
- // todo 鍒ゆ柇鏄惁浜х敓鎶ュ伐淇℃伅
-
- // 鏌ヨ鍚堝苟鐨勭敓浜ц鍒�
- List<ProductOrderPlan> productOrderPlans = productOrderPlanMapper.selectList(Wrappers.<ProductOrderPlan>lambdaQuery().in(ProductOrderPlan::getProductOrderId, productOrder.getId()));
- if (productOrderPlans.isEmpty()) {
- throw new RuntimeException("鍚堝苟鐨勭敓浜ц鍒掍笉瀛樺湪");
+ public Boolean revoke(List<Long> ids) {
+ List<ProductOrder> orders = productOrderMapper.selectBatchIds(ids);
+ if (orders.isEmpty()) {
+ throw new RuntimeException("鐢熶骇璁㈠崟涓嶅瓨鍦�");
}
+ for (ProductOrder order : orders) {
+ if (!ProductOrderStatusEnum.canRevoke(order.getStatus())) {
+ throw new RuntimeException("鍙湁銆愬緟寮�濮嬨�戠姸鎬佺殑璁㈠崟鎵嶅彲浠ユ挙鍥�");
+ }
+ }
+
+ // 鍥為��鐢熶骇璁″垝
+ List<ProductOrderPlan> productOrderPlans = productOrderPlanMapper.selectList(Wrappers.<ProductOrderPlan>lambdaQuery().in(ProductOrderPlan::getProductOrderId, ids));
for (ProductOrderPlan productOrderPlan : productOrderPlans) {
ProductionPlan productionPlan = productionPlanMapper.selectById(productOrderPlan.getProductionPlanId());
- productionPlan.setAssignedQuantity(productionPlan.getAssignedQuantity().subtract(productOrderPlan.getAssignedQuantity()));
- productionPlanMapper.updateById(productionPlan);
+ if (productionPlan != null) {
+ BigDecimal newAssigned = productionPlan.getAssignedQuantity().subtract(productOrderPlan.getAssignedQuantity());
+ if (newAssigned.compareTo(BigDecimal.ZERO) < 0) {
+ newAssigned = BigDecimal.ZERO;
+ }
+ productionPlan.setAssignedQuantity(newAssigned);
+ BigDecimal volume = productionPlan.getVolume() == null ? BigDecimal.ZERO : productionPlan.getVolume();
+ int status;
+ if (newAssigned.compareTo(BigDecimal.ZERO) == 0) {
+ status = 0; // 鏈笅鍙�
+ } else if (newAssigned.compareTo(volume) < 0) {
+ status = 1; // 閮ㄥ垎涓嬪彂
+ } else {
+ status = 2; // 宸蹭笅鍙�
+ }
+ productionPlan.setStatus(status);
+ productionPlanMapper.updateById(productionPlan);
+ }
}
- // 鍒犻櫎鍏宠仈鍏崇郴
- productOrderPlanMapper.delete(Wrappers.<ProductOrderPlan>lambdaQuery().in(ProductOrderPlan::getProductOrderId, productOrder.getId()));
- // 鍒犻櫎璁㈠崟
- productOrderMapper.deleteById(productOrder.getId());
- // todo 鍒犻櫎璁㈠崟涓嬬殑宸ヨ壓璺嚎瀛愯〃
- return null;
+
+ // 灏嗚鍗曠姸鎬佹敼涓哄凡鍙栨秷
+ for (ProductOrder order : orders) {
+ order.setStatus(ProductOrderStatusEnum.CANCEL.getCode());
+ }
+ updateBatchById(orders);
+
+ return true;
}
@Override
@@ -192,20 +214,18 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public Boolean delete(Long[] ids) {
- List<ProductOrder> orders = productOrderMapper.selectList(Wrappers.<ProductOrder>lambdaQuery().in(ProductOrder::getId, ids));
+ public Boolean delete(Long id) {
+ ProductOrder order = productOrderMapper.selectById(id);
- if (orders.isEmpty()) {
+ if (order == null) {
throw new RuntimeException("鐢熶骇璁㈠崟涓嶅瓨鍦�");
}
- for (ProductOrder order : orders) {
- if (!ProductOrderStatusEnum.canDelete(order.getStatus())) {
- throw new RuntimeException("鍙湁銆愬緟寮�濮嬨�佸凡鍙栨秷銆戠姸鎬佺殑璁㈠崟鎵嶅彲浠ュ垹闄�");
- }
+ if (!ProductOrderStatusEnum.canDelete(order.getStatus())) {
+ throw new RuntimeException("鍙湁銆愬緟寮�濮嬨�佸凡鍙栨秷銆戠姸鎬佺殑璁㈠崟鎵嶅彲浠ュ垹闄�");
}
// 鏄惁宸茬敓浜�
- List<ProductWorkOrder> productWorkOrders = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery().in(ProductWorkOrder::getProductOrderId, ids));
+ List<ProductWorkOrder> productWorkOrders = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery().eq(ProductWorkOrder::getProductOrderId, id));
if (!productWorkOrders.isEmpty()) {
List<Long> workOrderIds = productWorkOrders.stream()
@@ -218,11 +238,11 @@
}
// 鍒犻櫎宸ュ崟
- productWorkOrderMapper.delete(Wrappers.<ProductWorkOrder>lambdaQuery().in(ProductWorkOrder::getProductOrderId, ids));
+ productWorkOrderMapper.delete(Wrappers.<ProductWorkOrder>lambdaQuery().eq(ProductWorkOrder::getProductOrderId, id));
}
// 鍥為��鐢熶骇璁″垝
- List<ProductOrderPlan> productOrderPlans = productOrderPlanMapper.selectList(Wrappers.<ProductOrderPlan>lambdaQuery().in(ProductOrderPlan::getProductOrderId, ids));
+ List<ProductOrderPlan> productOrderPlans = productOrderPlanMapper.selectList(Wrappers.<ProductOrderPlan>lambdaQuery().eq(ProductOrderPlan::getProductOrderId, id));
for (ProductOrderPlan productOrderPlan : productOrderPlans) {
ProductionPlan productionPlan = productionPlanMapper.selectById(productOrderPlan.getProductionPlanId());
@@ -253,19 +273,13 @@
}
// 鍒犻櫎涓棿琛�
- productOrderPlanMapper.delete(Wrappers.<ProductOrderPlan>lambdaQuery().in(ProductOrderPlan::getProductOrderId, ids));
+ productOrderPlanMapper.delete(Wrappers.<ProductOrderPlan>lambdaQuery().eq(ProductOrderPlan::getProductOrderId, id));
// 鍒犻櫎闄勮〃鐨勫伐鑹鸿矾绾夸笌BOM
- for (Long id : ids) {
- ProductOrder productOrder = baseMapper.selectById(id);
- productionOrderAppendixService.deleteData(productOrder.getId(), productOrder.getRouteId());
- }
-
-// productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>().in(ProductProcessRouteItem::getProductOrderId, ids));
-// productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>().in(ProductProcessRoute::getProductOrderId, ids));
+ productionOrderAppendixService.deleteData(order.getId(), order.getRouteId());
// 鍒犻櫎璁㈠崟
- productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>().in(ProductOrder::getId, ids));
+ productOrderMapper.deleteById(id);
return true;
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
index 22f248e..f694dad 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
@@ -25,13 +25,14 @@
@Override
@Transactional
- public Boolean addProductStructureDto(ProductStructureDto dto) {
+ public Boolean addProductStructureDto(Integer bomId, List<ProductStructureDto> list) {
- Integer bomId = dto.getBomId();
-
- // 灏嗘爲鎵佸钩鍖�
+ // 鎵佸钩鍖栦紶鍏ョ殑鏍�
List<ProductStructureDto> flatDtoList = new ArrayList<>();
- flattenTree(dto.getChildren(), flatDtoList);
+ for (ProductStructureDto root : list) {
+ flatDtoList.add(root);
+ flattenTree(root.getChildren(), flatDtoList);
+ }
// 鏌ヨ鏁版嵁搴撲腑宸叉湁鐨� BOM 鏁版嵁
List<ProductStructure> dbList = this.list(new LambdaQueryWrapper<ProductStructure>().eq(ProductStructure::getBomId, bomId));
@@ -65,13 +66,13 @@
entity.setBomId(bomId);
if (psDto.getId() == null) {
- // 鏂板
entity.setId(null);
entity.setParentId(null);
insertList.add(entity);
- tempEntityMap.put(psDto.getTempId(), entity);
+ if (psDto.getTempId() != null) {
+ tempEntityMap.put(psDto.getTempId(), entity);
+ }
} else {
- // 鏇存柊
updateList.add(entity);
}
}
@@ -83,32 +84,27 @@
// 鍥炲啓鏂板鑺傜偣 parentId
List<ProductStructure> parentFixList = new ArrayList<>();
- // 鐪熷疄鐨勭埗鑺傜偣 ID
Long realParentId;
for (ProductStructureDto psDto : flatDtoList) {
+ if (psDto.getId() != null) continue;
+ ProductStructure child = tempEntityMap.get(psDto.getTempId());
+ if (child == null) continue;
String parentTempId = psDto.getParentTempId();
- if (psDto.getId() == null && parentTempId != null && !parentTempId.isEmpty()) {
- ProductStructure child = tempEntityMap.get(psDto.getTempId());
+ if (parentTempId != null && !parentTempId.isEmpty()) {
if (tempEntityMap.containsKey(parentTempId)) {
- // 鐖惰妭鐐规槸鏂拌妭鐐�
realParentId = tempEntityMap.get(parentTempId).getId();
} else {
- // 鐖惰妭鐐规槸鑰佽妭鐐�
try {
realParentId = Long.valueOf(parentTempId);
} catch (NumberFormatException e) {
realParentId = 0L;
}
}
-
child.setParentId(realParentId);
- parentFixList.add(child);
- } else if (psDto.getId() == null) {
- // 濡傛灉 parentTempId 涓虹┖锛屽垯鏄《绾ц妭鐐�
- ProductStructure child = tempEntityMap.get(psDto.getTempId());
+ } else {
child.setParentId(0L);
- parentFixList.add(child);
}
+ parentFixList.add(child);
}
if (!parentFixList.isEmpty()) {
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderStructureServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderStructureServiceImpl.java
index 21f14df..a063566 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderStructureServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderStructureServiceImpl.java
@@ -2,7 +2,6 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.production.dto.ProductionOrderStructureDto;
import com.ruoyi.production.mapper.ProductionOrderStructureMapper;
import com.ruoyi.production.pojo.ProductionOrderStructure;
@@ -32,13 +31,7 @@
@Override
public List<ProductionOrderStructureDto> listByOrderId(Long orderId) {
- List<ProductionOrderStructure> list = list(new LambdaQueryWrapper<ProductionOrderStructure>().eq(ProductionOrderStructure::getOrderId, orderId));
-
- List<ProductionOrderStructureDto> dtoList = list.stream().map(item -> {
- ProductionOrderStructureDto dto = new ProductionOrderStructureDto();
- BeanUtils.copyProperties(item, dto);
- return dto;
- }).collect(Collectors.toList());
+ List<ProductionOrderStructureDto> dtoList = baseMapper.listByOrderId(orderId);
Map<Long, ProductionOrderStructureDto> map = new HashMap<>();
for (ProductionOrderStructureDto node : dtoList) {
@@ -58,12 +51,13 @@
}
@Override
- public void addOrUpdateBomStructs(ProductionOrderStructureDto instanceDto) {
- Long orderId = instanceDto.getOrderId();
-
+ public void addOrUpdateBomStructs(Long orderId, List<ProductionOrderStructureDto> list) {
// 鎵佸钩鍖栧墠绔紶鍏ョ殑鏍�
List<ProductionOrderStructureDto> flatList = new ArrayList<>();
- flattenTree(instanceDto.getChildren(), flatList);
+ for (ProductionOrderStructureDto root : list) {
+ flatList.add(root);
+ flattenTree(root.getChildren(), flatList);
+ }
// 鏌ヨ鏁版嵁搴撳凡鏈夋暟鎹�
List<ProductionOrderStructure> dbList = list(new LambdaQueryWrapper<ProductionOrderStructure>()
@@ -90,7 +84,7 @@
for (ProductionOrderStructureDto dto : flatList) {
ProductionOrderStructure entity = new ProductionOrderStructure();
- BeanUtils.copyProperties(dto, entity);
+ org.springframework.beans.BeanUtils.copyProperties(dto, entity);
entity.setOrderId(orderId);
if (dto.getId() == null) {
entity.setId(null);
@@ -110,13 +104,13 @@
// 鍥炲啓鏂板鑺傜偣鐨� parentId
List<ProductionOrderStructure> parentFixList = new ArrayList<>();
+ Long realParentId;
for (ProductionOrderStructureDto dto : flatList) {
if (dto.getId() != null) continue;
ProductionOrderStructure child = tempEntityMap.get(dto.getTempId());
if (child == null) continue;
String parentTempId = dto.getParentTempId();
if (parentTempId != null && !parentTempId.isEmpty()) {
- Long realParentId;
if (tempEntityMap.containsKey(parentTempId)) {
realParentId = tempEntityMap.get(parentTempId).getId();
} else {
diff --git a/src/main/resources/mapper/production/ProductionOrderStructureMapper.xml b/src/main/resources/mapper/production/ProductionOrderStructureMapper.xml
index 4bbafbe..1864054 100644
--- a/src/main/resources/mapper/production/ProductionOrderStructureMapper.xml
+++ b/src/main/resources/mapper/production/ProductionOrderStructureMapper.xml
@@ -16,4 +16,20 @@
<result column="bom_id" property="bomId"/>
</resultMap>
+ <select id="listByOrderId" resultType="com.ruoyi.production.dto.ProductionOrderStructureDto"
+ parameterType="java.lang.Long">
+
+ SELECT s.*,
+ pp.name AS process_name,
+ pm.product_name AS product_name,
+ sku.model AS model
+ FROM production_order_structure s
+ LEFT JOIN product_process pp ON pp.id = s.process_id
+ LEFT JOIN product_material_sku sku ON sku.id = s.product_model_id
+ LEFT JOIN product_material pm ON pm.id = sku.product_id
+ WHERE s.order_id = #{orderId}
+
+ </select>
+
+
</mapper>
--
Gitblit v1.9.3