From 398551392afc2ab879f837f60f95f9c9d8cf3c98 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 27 四月 2026 13:08:24 +0800
Subject: [PATCH] Merge branch 'dev_New_pro' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_New_pro
---
src/main/java/com/ruoyi/production/bean/dto/ProductionOrderDto.java | 5
src/main/java/com/ruoyi/production/service/ProductionOrderRoutingOperationParamService.java | 2
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 1
src/main/resources/mapper/production/ProductionOrderRoutingOperationMapper.xml | 8
src/main/java/com/ruoyi/production/bean/dto/ProductionBomStructureDto.java | 31 +++++
src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationParamServiceImpl.java | 86 +++-----------
src/main/resources/mapper/production/ProductionOrderMapper.xml | 6 +
src/main/java/com/ruoyi/production/controller/ProductionOrderRoutingOperationParamController.java | 10 -
src/main/java/com/ruoyi/technology/controller/TechnologyRoutingController.java | 2
src/main/java/com/ruoyi/production/bean/vo/ProductionOrderRoutingOperationVo.java | 3
src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java | 9 -
src/main/java/com/ruoyi/production/service/impl/ProductionBomStructureServiceImpl.java | 93 ++++++++++++++
src/main/java/com/ruoyi/production/service/ProductionBomStructureService.java | 2
src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationServiceImpl.java | 34 +++++
src/main/java/com/ruoyi/production/controller/ProductionBomStructureController.java | 12 +
src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java | 15 --
src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java | 5
src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperationParam.java | 8
18 files changed, 216 insertions(+), 116 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionBomStructureDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionBomStructureDto.java
new file mode 100644
index 0000000..c898c56
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionBomStructureDto.java
@@ -0,0 +1,31 @@
+package com.ruoyi.production.bean.dto;
+
+import com.ruoyi.production.pojo.ProductionBomStructure;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProductionBomStructureDto extends ProductionBomStructure {
+
+ @Schema(description = "宸ュ簭鍚嶇О")
+ private String operationName;
+
+ @Schema(description = "浜у搧鍚嶇О")
+ private String productName;
+
+ @Schema(description = "浜у搧ID")
+ private Long productId;
+
+ @Schema(description = "瑙勬牸鍨嬪彿")
+ private String model;
+
+ private String tempId;
+
+ private String parentTempId;
+
+ private List<ProductionBomStructureDto> children;
+}
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 9921344..4b0a711 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionOrderDto.java
@@ -9,4 +9,9 @@
@Data
@Schema(name = "ProductionOrderDto", description = "鐢熶骇璁㈠崟鏌ヨ瀵硅薄")
public class ProductionOrderDto extends ProductionOrder {
+ @Schema(description = "浜у搧鍚嶇О")
+ private String productName;
+
+ @Schema(description = "瑙勬牸鍨嬪彿")
+ private String model;
}
diff --git a/src/main/java/com/ruoyi/production/bean/vo/ProductionOrderRoutingOperationVo.java b/src/main/java/com/ruoyi/production/bean/vo/ProductionOrderRoutingOperationVo.java
index 8126f67..4333814 100644
--- a/src/main/java/com/ruoyi/production/bean/vo/ProductionOrderRoutingOperationVo.java
+++ b/src/main/java/com/ruoyi/production/bean/vo/ProductionOrderRoutingOperationVo.java
@@ -20,4 +20,7 @@
@Schema(description = "鍩虹宸ュ簭ID")
private Long technologyOperationId;
+
+ @Schema(description = "鍩虹宸ュ簭ID")
+ private Long productionOrderRoutingOperationId;
}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionBomStructureController.java b/src/main/java/com/ruoyi/production/controller/ProductionBomStructureController.java
index 2ff08ba..dd1d50e 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionBomStructureController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionBomStructureController.java
@@ -1,14 +1,12 @@
package com.ruoyi.production.controller;
import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.production.bean.dto.ProductionBomStructureDto;
import com.ruoyi.production.bean.vo.ProductionBomStructureVo;
import com.ruoyi.production.service.ProductionBomStructureService;
import io.swagger.v3.oas.annotations.Operation;
import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -33,4 +31,10 @@
return R.ok(productionBomStructureService.listByBomId(bomId));
}
+ @PostMapping("/addOrUpdateBomStructs")
+ @Operation(summary = "鏂板鎴栦慨鏀笲OM缁撴瀯")
+ public R addProductionBomStructure(@RequestBody ProductionBomStructureDto productionBomStructureDto) {
+ return R.ok(productionBomStructureService.addProductionBomStructure(productionBomStructureDto));
+ }
+
}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionOrderRoutingOperationParamController.java b/src/main/java/com/ruoyi/production/controller/ProductionOrderRoutingOperationParamController.java
index db37dbb..fd229ef 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionOrderRoutingOperationParamController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionOrderRoutingOperationParamController.java
@@ -4,12 +4,11 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.bean.dto.ProductionOrderRoutingOperationParamDto;
-import com.ruoyi.production.bean.dto.ProductionOrderRoutingOperationParamSyncDto;
import com.ruoyi.production.bean.vo.ProductionOrderRoutingOperationParamVo;
import com.ruoyi.production.pojo.ProductionOrderRoutingOperationParam;
import com.ruoyi.production.service.ProductionOrderRoutingOperationParamService;
-import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@@ -51,7 +50,7 @@
@PutMapping
@Operation(summary = "淇敼鐢熶骇璁㈠崟宸ヨ壓璺嚎宸ュ簭鍙傛暟")
public R<Boolean> edit(@RequestBody ProductionOrderRoutingOperationParam item) {
- return R.ok(productionOrderRoutingOperationParamService.saveProductionOrderRoutingOperationParam(item));
+ return R.ok(productionOrderRoutingOperationParamService.updateById(item));
}
@DeleteMapping("/{id}")
@@ -60,9 +59,4 @@
return R.ok(productionOrderRoutingOperationParamService.removeProductionOrderRoutingOperationParam(id));
}
- @PostMapping("/sync")
- @Operation(summary = "鎸夎鍗曞伐鑹鸿矾绾垮伐搴忓悓姝ュ伐搴忓弬鏁�")
- public R<Integer> sync(@RequestBody ProductionOrderRoutingOperationParamSyncDto syncDto) {
- return R.ok(productionOrderRoutingOperationParamService.syncProductionOrderRoutingOperationParam(syncDto));
- }
}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java
index df83127..fc36725 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java
@@ -28,7 +28,7 @@
@Schema(description = "鐢熶骇璁㈠崟id")
private Long productionOrderId;
- @Schema(description = "宸ヨ壓璺嚎宸ュ簭琛╥d")
+ @Schema(description = "宸ヨ壓璺嚎宸ュ簭琛╥d(棰濆鏂板鐨勬椂鍊欒繖涓瓧娈垫槸绌虹殑)")
private Long technologyRoutingOperationId;
@Schema(description = "鐢熶骇璁㈠崟宸ヨ壓璺嚎id")
@@ -64,4 +64,7 @@
@Schema(description = "宸ュ簭鍚嶇О")
private String operationName;
+
+ @Schema(description = "宸ュ簭琛╥d")
+ private Long technologyOperationId;
}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperationParam.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperationParam.java
index d1b7c3a..ef0df4d 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperationParam.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperationParam.java
@@ -3,8 +3,6 @@
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
@@ -84,9 +82,9 @@
@Schema(description = "宸ュ簭鍙傛暟ID")
private Long technologyOperationParamId;
- @Schema(description = "宸ヨ壓璺嚎宸ュ簭ID")
- private Long technologyRoutingOperationId;
-
@Schema(description = "鏍囧噯鍊�")
private String standardValue;
+
+ @Schema(description = "鐢熶骇璁㈠崟宸ヨ壓璺嚎宸ュ簭ID")
+ private Long productionOrderRoutingOperationId;
}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java b/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
index 0002b5b..0fa00eb 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
@@ -26,12 +26,6 @@
@Schema(description = "鎶ュ伐浜哄憳")
private String userName;
- @Schema(description = "鐢熶骇椤圭洰id")
- private Long productProcessRouteItemId;
-
- @Schema(description = "宸ュ崟id")
- private Long workOrderId;
-
@Schema(description = "鐢熶骇宸ュ簭宸ュ崟id")
private Long productionOperationTaskId;
@@ -51,9 +45,6 @@
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
- @Schema(description = "绉熸埛ID")
- @TableField(fill = FieldFill.INSERT)
- private Long tenantId;
@Schema(description = "鍒涘缓鐢ㄦ埛")
@TableField(fill = FieldFill.INSERT)
private Integer createUser;
diff --git a/src/main/java/com/ruoyi/production/service/ProductionBomStructureService.java b/src/main/java/com/ruoyi/production/service/ProductionBomStructureService.java
index f102cbd..6e63dfe 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionBomStructureService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductionBomStructureService.java
@@ -1,6 +1,7 @@
package com.ruoyi.production.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.production.bean.dto.ProductionBomStructureDto;
import com.ruoyi.production.bean.vo.ProductionBomStructureVo;
import com.ruoyi.production.pojo.ProductionBomStructure;
@@ -18,4 +19,5 @@
List<ProductionBomStructureVo> listByBomId(Long bomId);
+ Boolean addProductionBomStructure(ProductionBomStructureDto productionBomStructureDto);
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductionOrderRoutingOperationParamService.java b/src/main/java/com/ruoyi/production/service/ProductionOrderRoutingOperationParamService.java
index 0376c7a..25efddb 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionOrderRoutingOperationParamService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductionOrderRoutingOperationParamService.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.production.bean.dto.ProductionOrderRoutingOperationParamDto;
-import com.ruoyi.production.bean.dto.ProductionOrderRoutingOperationParamSyncDto;
import com.ruoyi.production.bean.vo.ProductionOrderRoutingOperationParamVo;
import com.ruoyi.production.pojo.ProductionOrderRoutingOperationParam;
@@ -31,5 +30,4 @@
boolean removeProductionOrderRoutingOperationParam(Long id);
- int syncProductionOrderRoutingOperationParam(ProductionOrderRoutingOperationParamSyncDto syncDto);
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionBomStructureServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionBomStructureServiceImpl.java
index 00ab057..cbae0dc 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionBomStructureServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionBomStructureServiceImpl.java
@@ -1,17 +1,18 @@
package com.ruoyi.production.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.production.bean.dto.ProductionBomStructureDto;
import com.ruoyi.production.bean.vo.ProductionBomStructureVo;
import com.ruoyi.production.mapper.ProductionBomStructureMapper;
import com.ruoyi.production.pojo.ProductionBomStructure;
import com.ruoyi.production.service.ProductionBomStructureService;
import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* <p>
@@ -54,4 +55,88 @@
return tree;
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean addProductionBomStructure(ProductionBomStructureDto dto) {
+ Long orderBomId = dto.getProductionOrderBomId();
+ List<ProductionBomStructureDto> flatDtoList = new ArrayList<>();
+ flattenTree(dto.getChildren(), flatDtoList);
+
+ List<ProductionBomStructure> dbList = this.list(new LambdaQueryWrapper<ProductionBomStructure>()
+ .eq(ProductionBomStructure::getProductionOrderBomId, orderBomId));
+
+ Set<Long> frontendIds = new HashSet<>();
+ for (ProductionBomStructureDto item : flatDtoList) {
+ if (item.getId() != null) {
+ frontendIds.add(item.getId());
+ }
+ }
+
+ Set<Long> deleteIds = new HashSet<>();
+ for (ProductionBomStructure dbItem : dbList) {
+ if (!frontendIds.contains(dbItem.getId())) {
+ deleteIds.add(dbItem.getId());
+ }
+ }
+ if (!deleteIds.isEmpty()) {
+ this.removeByIds(deleteIds);
+ }
+
+ List<ProductionBomStructure> insertList = new ArrayList<>();
+ List<ProductionBomStructure> updateList = new ArrayList<>();
+ Map<String, ProductionBomStructure> tempEntityMap = new HashMap<>();
+
+ for (ProductionBomStructureDto item : flatDtoList) {
+ ProductionBomStructure entity = new ProductionBomStructure();
+ BeanUtils.copyProperties(item, entity);
+ entity.setProductionOrderBomId(orderBomId);
+ if (item.getId() == null) {
+ entity.setParentId(null);
+ insertList.add(entity);
+ tempEntityMap.put(item.getTempId(), entity);
+ } else {
+ updateList.add(entity);
+ }
+ }
+
+ if (!insertList.isEmpty()) {
+ this.saveBatch(insertList);
+ }
+
+ List<ProductionBomStructure> parentFixList = new ArrayList<>();
+ for (ProductionBomStructureDto item : flatDtoList) {
+ if (item.getId() == null && item.getParentTempId() != null) {
+ ProductionBomStructure child = tempEntityMap.get(item.getTempId());
+ if (child == null) {
+ continue;
+ }
+ ProductionBomStructure parent = tempEntityMap.get(item.getParentTempId());
+ Long realParentId = parent != null ? parent.getId() : Long.valueOf(item.getParentTempId());
+ child.setParentId(realParentId);
+ parentFixList.add(child);
+ }
+ }
+
+ if (!parentFixList.isEmpty()) {
+ this.updateBatchById(parentFixList);
+ }
+ if (!updateList.isEmpty()) {
+ this.updateBatchById(updateList);
+ }
+ return true;
+ }
+
+ /**
+ * 灏嗘爲褰㈢粨鏋勬媿骞虫垚鍒楄〃锛屼究浜庣粺涓�淇濆瓨銆�
+ */
+ private void flattenTree(List<ProductionBomStructureDto> source, List<ProductionBomStructureDto> result) {
+ if (source == null) {
+ return;
+ }
+ for (ProductionBomStructureDto node : source) {
+ result.add(node);
+ flattenTree(node.getChildren(), result);
+ }
+ }
+
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationParamServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationParamServiceImpl.java
index 048519b..59094be 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationParamServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationParamServiceImpl.java
@@ -8,7 +8,6 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.production.bean.dto.ProductionOrderRoutingOperationParamDto;
-import com.ruoyi.production.bean.dto.ProductionOrderRoutingOperationParamSyncDto;
import com.ruoyi.production.bean.vo.ProductionOrderRoutingOperationParamVo;
import com.ruoyi.production.mapper.ProductionOrderMapper;
import com.ruoyi.production.mapper.ProductionOrderRoutingOperationMapper;
@@ -17,7 +16,9 @@
import com.ruoyi.production.pojo.ProductionOrderRoutingOperation;
import com.ruoyi.production.pojo.ProductionOrderRoutingOperationParam;
import com.ruoyi.production.service.ProductionOrderRoutingOperationParamService;
+import com.ruoyi.technology.mapper.TechnologyParamMapper;
import com.ruoyi.technology.mapper.TechnologyRoutingOperationParamMapper;
+import com.ruoyi.technology.pojo.TechnologyParam;
import com.ruoyi.technology.pojo.TechnologyRoutingOperationParam;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -34,6 +35,7 @@
private final ProductionOrderRoutingOperationParamMapper productionOrderRoutingOperationParamMapper;
private final ProductionOrderRoutingOperationMapper productionOrderRoutingOperationMapper;
private final ProductionOrderMapper productionOrderMapper;
+ private final TechnologyParamMapper technologyParamMapper;
private final TechnologyRoutingOperationParamMapper technologyRoutingOperationParamMapper;
@Override
@@ -57,7 +59,7 @@
@Override
public boolean saveProductionOrderRoutingOperationParam(ProductionOrderRoutingOperationParam item) {
- ProductionOrderRoutingOperation routingOperation = getRoutingOperation(item.getTechnologyRoutingOperationId());
+ ProductionOrderRoutingOperation routingOperation = getRoutingOperation(item.getProductionOrderRoutingOperationId());
fillFromSourceParam(item, routingOperation);
validateManualFields(item);
checkDuplicate(item);
@@ -69,62 +71,12 @@
return this.removeById(id);
}
- @Override
- public int syncProductionOrderRoutingOperationParam(ProductionOrderRoutingOperationParamSyncDto syncDto) {
- if (syncDto == null || syncDto.getProductionOrderRoutingOperationId() == null) {
- throw new ServiceException("productionOrderRoutingOperationId is required");
- }
- ProductionOrderRoutingOperation routingOperation = getRoutingOperation(syncDto.getProductionOrderRoutingOperationId());
- List<TechnologyRoutingOperationParam> sourceParamList = technologyRoutingOperationParamMapper.selectList(
- Wrappers.<TechnologyRoutingOperationParam>lambdaQuery()
- .eq(TechnologyRoutingOperationParam::getTechnologyRoutingOperationId, routingOperation.getTechnologyRoutingOperationId())
- .orderByAsc(TechnologyRoutingOperationParam::getId)
- );
- boolean replaceExisting = syncDto.getReplaceExisting() == null || syncDto.getReplaceExisting();
- if (replaceExisting) {
- productionOrderRoutingOperationParamMapper.delete(
- Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery()
- .eq(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId, routingOperation.getId())
- );
- }
- int successCount = 0;
- for (TechnologyRoutingOperationParam sourceParam : sourceParamList) {
- boolean exists = productionOrderRoutingOperationParamMapper.selectCount(
- Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery()
- .eq(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId, routingOperation.getId())
- .eq(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationParamId, sourceParam.getId())
- ) > 0;
- if (!replaceExisting && exists) {
- continue;
- }
- ProductionOrderRoutingOperationParam target = new ProductionOrderRoutingOperationParam();
- target.setTechnologyRoutingOperationId(routingOperation.getId());
- target.setTechnologyRoutingOperationParamId(sourceParam.getId());
- target.setProductionOrderId(routingOperation.getProductionOrderId());
- target.setTechnologyOperationId(sourceParam.getTechnologyOperationId());
- target.setTechnologyOperationParamId(sourceParam.getTechnologyOperationParamId());
- target.setParamId(sourceParam.getParamId());
- target.setParamCode(sourceParam.getParamCode());
- target.setParamName(sourceParam.getParamName());
- target.setParamType(sourceParam.getParamType());
- target.setParamFormat(sourceParam.getParamFormat());
- target.setUnit(sourceParam.getUnit());
- target.setIsRequired(sourceParam.getIsRequired());
- target.setRemark(sourceParam.getRemark());
- target.setStandardValue(sourceParam.getStandardValue());
- productionOrderRoutingOperationParamMapper.insert(target);
- successCount++;
- }
- return successCount;
- }
-
private LambdaQueryWrapper<ProductionOrderRoutingOperationParam> buildQueryWrapper(ProductionOrderRoutingOperationParamDto dto) {
ProductionOrderRoutingOperationParam query = dto == null ? new ProductionOrderRoutingOperationParam() : dto;
return Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery()
.eq(query.getId() != null, ProductionOrderRoutingOperationParam::getId, query.getId())
.eq(query.getProductionOrderId() != null, ProductionOrderRoutingOperationParam::getProductionOrderId, query.getProductionOrderId())
- .eq(query.getTechnologyRoutingOperationId() != null,
- ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId, query.getTechnologyRoutingOperationId())
+ .eq(query.getProductionOrderRoutingOperationId() != null, ProductionOrderRoutingOperationParam::getProductionOrderRoutingOperationId, query.getProductionOrderRoutingOperationId())
.eq(query.getTechnologyOperationId() != null,
ProductionOrderRoutingOperationParam::getTechnologyOperationId, query.getTechnologyOperationId())
.eq(query.getTechnologyRoutingOperationParamId() != null,
@@ -135,7 +87,7 @@
ProductionOrderRoutingOperationParam::getParamCode, query.getParamCode())
.like(query.getParamName() != null && !query.getParamName().trim().isEmpty(),
ProductionOrderRoutingOperationParam::getParamName, query.getParamName())
- .orderByAsc(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId)
+ .orderByAsc(ProductionOrderRoutingOperationParam::getProductionOrderRoutingOperationId)
.orderByAsc(ProductionOrderRoutingOperationParam::getId);
}
@@ -151,25 +103,28 @@
}
private void fillFromSourceParam(ProductionOrderRoutingOperationParam item, ProductionOrderRoutingOperation routingOperation) {
- item.setTechnologyRoutingOperationId(routingOperation.getId());
item.setProductionOrderId(routingOperation.getProductionOrderId());
+ item.setProductionOrderRoutingOperationId(routingOperation.getId());
ProductionOrder productionOrder = productionOrderMapper.selectById(routingOperation.getProductionOrderId());
if (productionOrder == null) {
throw new ServiceException("Production order not found");
}
- if (item.getTechnologyRoutingOperationParamId() == null) {
+ if (item.getParamId() == null) {
return;
}
- TechnologyRoutingOperationParam sourceParam = technologyRoutingOperationParamMapper.selectById(item.getTechnologyRoutingOperationParamId());
+ TechnologyParam sourceParam = technologyParamMapper.selectById(item.getParamId());
if (sourceParam == null) {
- throw new ServiceException("Technology routing operation param not found");
+ throw new ServiceException("Technology param not found");
}
- if (!routingOperation.getTechnologyRoutingOperationId().equals(sourceParam.getTechnologyRoutingOperationId())) {
- throw new ServiceException("Source param does not belong to routing operation");
+ if (item.getTechnologyOperationParamId() != null) {
+ TechnologyRoutingOperationParam sourceRoutingOperationParam = technologyRoutingOperationParamMapper.selectById(item.getTechnologyOperationParamId());
+ item.setTechnologyOperationId(sourceRoutingOperationParam.getTechnologyOperationId());
+ item.setTechnologyOperationParamId(sourceRoutingOperationParam.getTechnologyOperationParamId());
+ if (item.getStandardValue() == null) {
+ item.setStandardValue(sourceRoutingOperationParam.getStandardValue());
+ }
}
- item.setTechnologyOperationId(sourceParam.getTechnologyOperationId());
- item.setTechnologyOperationParamId(sourceParam.getTechnologyOperationParamId());
- item.setParamId(sourceParam.getParamId());
+ item.setParamId(sourceParam.getId());
item.setParamCode(sourceParam.getParamCode());
item.setParamName(sourceParam.getParamName());
item.setParamType(sourceParam.getParamType());
@@ -178,9 +133,6 @@
item.setIsRequired(sourceParam.getIsRequired());
if (item.getRemark() == null || item.getRemark().trim().isEmpty()) {
item.setRemark(sourceParam.getRemark());
- }
- if (item.getStandardValue() == null) {
- item.setStandardValue(sourceParam.getStandardValue());
}
}
@@ -196,7 +148,7 @@
private void checkDuplicate(ProductionOrderRoutingOperationParam item) {
boolean duplicate = productionOrderRoutingOperationParamMapper.selectCount(
Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery()
- .eq(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId, item.getTechnologyRoutingOperationId())
+ .eq(ProductionOrderRoutingOperationParam::getProductionOrderRoutingOperationId, item.getProductionOrderRoutingOperationId())
.eq(item.getTechnologyRoutingOperationParamId() != null,
ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationParamId, item.getTechnologyRoutingOperationParamId())
.eq(item.getTechnologyRoutingOperationParamId() == null && item.getParamCode() != null,
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationServiceImpl.java
index 489fc30..9b5953b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationServiceImpl.java
@@ -1,17 +1,24 @@
package com.ruoyi.production.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.mapper.ProductionOperationTaskMapper;
import com.ruoyi.production.mapper.ProductionOrderRoutingOperationMapper;
+import com.ruoyi.production.mapper.ProductionOrderRoutingOperationParamMapper;
import com.ruoyi.production.mapper.ProductionProductMainMapper;
import com.ruoyi.production.pojo.ProductionOperationTask;
import com.ruoyi.production.pojo.ProductionOrderRoutingOperation;
+import com.ruoyi.production.pojo.ProductionOrderRoutingOperationParam;
import com.ruoyi.production.pojo.ProductionProductMain;
import com.ruoyi.production.service.ProductionOrderRoutingOperationService;
import com.ruoyi.production.service.ProductionProductMainService;
+import com.ruoyi.technology.mapper.TechnologyOperationParamMapper;
+import com.ruoyi.technology.mapper.TechnologyParamMapper;
+import com.ruoyi.technology.pojo.TechnologyOperationParam;
+import com.ruoyi.technology.pojo.TechnologyParam;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -19,6 +26,7 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
import java.util.List;
@Service
@@ -31,10 +39,36 @@
private final ProductionOperationTaskMapper productionOperationTaskMapper;
private final ProductionProductMainMapper productionProductMainMapper;
private final ProductionProductMainService productionProductMainService;
+ private final TechnologyOperationParamMapper technologyOperationParamMapper;
+ private final TechnologyParamMapper technologyParamMapper;
+ private final ProductionOrderRoutingOperationParamMapper productionOrderRoutingOperationParamMapper;
@Override
public R addRouteItem(ProductionOrderRoutingOperation productionOrderRoutingOperation) {
int insert = productionOrderRoutingOperationMapper.insert(productionOrderRoutingOperation);
+ //宸ュ簭鍏宠仈鐨勫弬鏁伴渶瑕佸悓姝ユ柊澧�
+ List<TechnologyOperationParam> technologyOperationParams = technologyOperationParamMapper.selectList(Wrappers.<TechnologyOperationParam>lambdaQuery()
+ .eq(TechnologyOperationParam::getTechnologyOperationId, productionOrderRoutingOperation.getTechnologyOperationId()));
+ if (CollectionUtils.isNotEmpty(technologyOperationParams)){
+ ArrayList<ProductionOrderRoutingOperationParam> productionOrderRoutingOperationParams = new ArrayList<>();
+ for (TechnologyOperationParam technologyOperationParam : technologyOperationParams) {
+ TechnologyParam technologyParam = technologyParamMapper.selectById(technologyOperationParam.getTechnologyParamId());
+ ProductionOrderRoutingOperationParam productionOrderRoutingOperationParam = new ProductionOrderRoutingOperationParam();
+ productionOrderRoutingOperationParam.setProductionOrderId(productionOrderRoutingOperation.getProductionOrderId());
+ productionOrderRoutingOperationParam.setProductionOrderRoutingOperationId(productionOrderRoutingOperation.getId());
+ productionOrderRoutingOperationParam.setParamCode(technologyParam.getParamCode());
+ productionOrderRoutingOperationParam.setParamName(technologyParam.getParamName());
+ productionOrderRoutingOperationParam.setParamType(technologyParam.getParamType());
+ productionOrderRoutingOperationParam.setParamFormat(technologyParam.getParamFormat());
+ productionOrderRoutingOperationParam.setUnit(technologyParam.getUnit());
+ productionOrderRoutingOperationParam.setIsRequired(technologyParam.getIsRequired());
+ productionOrderRoutingOperationParam.setRemark(technologyParam.getRemark());
+ productionOrderRoutingOperationParam.setParamId(technologyParam.getId());
+ productionOrderRoutingOperationParam.setTechnologyOperationId(productionOrderRoutingOperation.getTechnologyOperationId());
+ productionOrderRoutingOperationParams.add(productionOrderRoutingOperationParam);
+ }
+ productionOrderRoutingOperationParamMapper.insert(productionOrderRoutingOperationParams);
+ }
String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
if (insert > 0) {
ProductionOperationTask lastTask = productionOperationTaskMapper.selectOne(
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java
index 9be6ae2..bb56608 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java
@@ -237,6 +237,7 @@
targetOperation.setDragSort(sourceOperation.getDragSort());
targetOperation.setIsQuality(sourceOperation.getIsQuality());
targetOperation.setOperationName(operationNameMap.get(sourceOperation.getTechnologyOperationId()));
+ targetOperation.setTechnologyOperationId(sourceOperation.getTechnologyOperationId());
productionOrderRoutingOperationMapper.insert(targetOperation);
ProductionOperationTask task = new ProductionOperationTask();
@@ -256,7 +257,7 @@
// 宸ュ簭鎵ц鍙傛暟鍚屾牱鍋氬揩鐓э紝閬垮厤宸ヨ壓鍙傛暟璋冩暣褰卞搷宸蹭笅杈捐鍗曘��
ProductionOrderRoutingOperationParam targetParam = new ProductionOrderRoutingOperationParam();
targetParam.setProductionOrderId(productionOrder.getId());
- targetParam.setTechnologyRoutingOperationId(targetOperation.getId());
+ targetParam.setProductionOrderRoutingOperationId(targetOperation.getId());
targetParam.setTechnologyRoutingOperationParamId(sourceParam.getId());
targetParam.setParamId(sourceParam.getParamId());
targetParam.setTechnologyOperationId(sourceParam.getTechnologyOperationId());
@@ -312,7 +313,7 @@
target.setProductModelId(source.getProductModelId());
target.setTechnologyOperationId(source.getOperationId());
target.setUnitQuantity(source.getUnitQuantity());
- target.setDemandedQuantity(resolveBomDemandQuantity(source, orderQuantity));
+ target.setDemandedQuantity(source.getUnitQuantity().multiply(orderQuantity));
target.setUnit(source.getUnit());
productionBomStructureMapper.insert(target);
idMap.put(source.getId(), target.getId());
@@ -571,16 +572,6 @@
} else {
productionOrderPickMapper.updateById(orderPick);
}
- }
-
- private BigDecimal resolveBomDemandQuantity(TechnologyBomStructure source, BigDecimal orderQuantity) {
- // 宸ヨ壓 BOM 涓殑闇�姹傞噺鎸夆�滃崟浠堕渶姹� * 璁㈠崟鏁伴噺鈥濆睍寮�鎴愯鍗曠骇闇�姹傘��
- BigDecimal baseQuantity = source.getDemandedQuantity() != null ? source.getDemandedQuantity() : source.getUnitQuantity();
- baseQuantity = baseQuantity == null ? BigDecimal.ZERO : baseQuantity;
- if (baseQuantity.compareTo(BigDecimal.ZERO) <= 0) {
- return BigDecimal.ZERO;
- }
- return baseQuantity.multiply(orderQuantity);
}
private List<Long> parsePlanIds(String productionPlanIds) {
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 c148955..044998a 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -136,7 +136,6 @@
productionProductMain.setUserId(dto.getUserId());
productionProductMain.setUserName(dto.getUserName());
productionProductMain.setProductionOperationTaskId(productionOperationTask.getId());
- productionProductMain.setWorkOrderId(productionOperationTask.getId());
productionProductMain.setStatus(0);
productionProductMainMapper.insert(productionProductMain);
diff --git a/src/main/java/com/ruoyi/technology/controller/TechnologyRoutingController.java b/src/main/java/com/ruoyi/technology/controller/TechnologyRoutingController.java
index f7fc0d6..e433efa 100644
--- a/src/main/java/com/ruoyi/technology/controller/TechnologyRoutingController.java
+++ b/src/main/java/com/ruoyi/technology/controller/TechnologyRoutingController.java
@@ -66,4 +66,6 @@
public R remove(@RequestBody List<Long> ids) {
return R.ok(technologyRoutingService.removeTechnologyRouting(ids));
}
+
+ //TODO 澧炲姞宸ヨ壓璺嚎闄勪欢涓婁紶 @闄堟捣鏉�
}
diff --git a/src/main/resources/mapper/production/ProductionOrderMapper.xml b/src/main/resources/mapper/production/ProductionOrderMapper.xml
index 8166dad..c799d3d 100644
--- a/src/main/resources/mapper/production/ProductionOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductionOrderMapper.xml
@@ -65,6 +65,12 @@
<if test="c.id != null">
and po.id = #{c.id}
</if>
+ <if test="c.productName != null and c.productName != ''">
+ and p.product_name like concat('%', #{c.productName}, '%')
+ </if>
+ <if test="c.model != null and c.model != ''">
+ and pm.model like concat('%', #{c.model}, '%')
+ </if>
<if test="c.productModelId != null">
and po.product_model_id = #{c.productModelId}
</if>
diff --git a/src/main/resources/mapper/production/ProductionOrderRoutingOperationMapper.xml b/src/main/resources/mapper/production/ProductionOrderRoutingOperationMapper.xml
index 7bfc539..55739db 100644
--- a/src/main/resources/mapper/production/ProductionOrderRoutingOperationMapper.xml
+++ b/src/main/resources/mapper/production/ProductionOrderRoutingOperationMapper.xml
@@ -7,7 +7,7 @@
<id column="id" property="id" />
<result column="production_order_id" property="productionOrderId" />
<result column="technology_routing_operation_id" property="technologyRoutingOperationId" />
- <result column="technology_routing_id" property="technologyRoutingId" />
+ <result column="order_routing_id" property="orderRoutingId" />
<result column="product_model_id" property="productModelId" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
@@ -19,6 +19,7 @@
<resultMap id="OperationVoResultMap" type="com.ruoyi.production.bean.vo.ProductionOrderRoutingOperationVo" extends="BaseResultMap">
<result column="technologyOperationId" property="technologyOperationId" />
+ <result column="productionOrderRoutingOperationId" property="productionOrderRoutingOperationId" />
<result column="productName" property="productName" />
<result column="model" property="model" />
<result column="unit" property="unit" />
@@ -26,13 +27,14 @@
<select id="selectVoListByOrderId" resultMap="OperationVoResultMap">
SELECT
+ poro.id AS productionOrderRoutingOperationId,
poro.*,
- tro.technology_operation_id AS technologyOperationId,
+ too.id AS technologyOperationId,
p.product_name AS productName,
pm.model AS model,
pm.unit AS unit
FROM production_order_routing_operation poro
- LEFT JOIN technology_routing_operation tro ON poro.technology_routing_operation_id = tro.id
+ LEFT JOIN technology_operation too ON poro.technology_operation_id = too.id
LEFT JOIN product_model pm ON poro.product_model_id = pm.id
LEFT JOIN product p ON pm.product_id = p.id
WHERE poro.production_order_id = #{orderId}
--
Gitblit v1.9.3