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; } 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; } 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; } 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 = "æ°å¢æä¿®æ¹BOMç»æ") public R addProductionBomStructure(@RequestBody ProductionBomStructureDto productionBomStructureDto) { return R.ok(productionBomStructureService.addProductionBomStructure(productionBomStructureDto)); } } 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)); } } src/main/java/com/ruoyi/production/pojo/ProductionOrderRoutingOperation.java
@@ -28,7 +28,7 @@ @Schema(description = "ç产订åid") private Long productionOrderId; @Schema(description = "å·¥èºè·¯çº¿å·¥åºè¡¨id") @Schema(description = "å·¥èºè·¯çº¿å·¥åºè¡¨id(é¢å¤æ°å¢çæ¶åè¿ä¸ªå段æ¯ç©ºç)") private Long technologyRoutingOperationId; @Schema(description = "ç产订åå·¥èºè·¯çº¿id") @@ -64,4 +64,7 @@ @Schema(description = "å·¥åºåç§°") private String operationName; @Schema(description = "å·¥åºè¡¨id") private Long technologyOperationId; } 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; } 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; 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); } 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); } 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); } } } 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, 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( 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) { 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); 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 å¢å å·¥èºè·¯çº¿éä»¶ä¸ä¼ @éæµ·æ° } 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> 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}