From f4d4d29368ccacb807f93e2033cd4a643a3ddade Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 30 三月 2026 10:20:28 +0800
Subject: [PATCH] yys 1.修改bug
---
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java | 154 +++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 119 insertions(+), 35 deletions(-)
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 33a80c8..5cd4bbd 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -3,27 +3,38 @@
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.ArrayUtils;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.FileNameType;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.procurementrecord.utils.StockUtils;
-import com.ruoyi.production.dto.ProductBomDto;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
-import com.ruoyi.production.service.ProcessRouteService;
import com.ruoyi.production.service.ProductOrderService;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.pojo.QualityInspect;
+import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
+import com.ruoyi.stock.dto.StockInventoryDto;
+import com.ruoyi.stock.service.impl.StockInventoryServiceImpl;
+import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.io.File;
+import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -38,6 +49,9 @@
@Autowired
private ProductProcessRouteMapper productProcessRouteMapper;
+
+ @Autowired
+ private ProductStructureRecordMapper productStructureRecordMapper;
@Autowired
private ProcessRouteItemMapper processRouteItemMapper;
@@ -66,9 +80,30 @@
@Autowired
private StockUtils stockUtils;
+ @Autowired
+ private StockInventoryServiceImpl stockInventoryService;
+
+ @Autowired
+ private CommonFileServiceImpl commonFileService;
+
@Override
public IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder) {
- return productOrderMapper.pageProductOrder(page, productOrder);
+ IPage<ProductOrderDto> productOrderDtoIPage = productOrderMapper.pageProductOrder(page, productOrder);
+ productOrderDtoIPage.getRecords().forEach(productOrderDto -> {
+ // 鑾峰彇浜у搧鍚堟牸搴撳瓨
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setProductModelId(productOrderDto.getProductModelId());
+ stockInventoryDto.setProductType(1);
+ Page page1 = new Page<>(1,1);
+ IPage<StockInventoryDto> stockInventoryDtoIPage = stockInventoryService.pagestockInventory(page1,stockInventoryDto);
+ if(stockInventoryDtoIPage.getTotal() > 0){
+ productOrderDto.setInventoryQuantity(stockInventoryDtoIPage.getRecords().get(0).getQualitity());
+ }
+ // 闄勪欢
+ productOrderDto.setSalesLedgerFiles(commonFileService.getFileListByBusinessId(productOrderDto.getId()
+ , FileNameType.PRODUCT_ORDER.getValue()));
+ });
+ return productOrderDtoIPage;
}
@Override
@@ -81,46 +116,59 @@
productProcessRoute.setProductOrderId(productOrder.getId());
productProcessRoute.setBomId(processRoute.getBomId());
productProcessRouteMapper.insert(productProcessRoute);
+ // 缁戝畾鐢熶骇bom娓呭崟
+ if(CollectionUtils.isNotEmpty(productOrder.getProductStructureRecords())){
+ List<ProductStructureRecord> productStructureDtos = productOrder.getProductStructureRecords();
+ productStructureDtos.forEach(item ->{
+ item.setProductOrderId(productOrder.getId());
+ productStructureRecordMapper.insert(item);
+ });
+ }
//鏂板鐢熶骇璁㈠崟涓嬬殑宸ヨ壓璺嚎瀛愯〃
- List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
+ List<ProductProcessRouteItem> processRouteItems = productOrder.getProcessRouteItems();
// 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
- for (ProcessRouteItem processRouteItem : processRouteItems) {
- ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
- productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId());
- productProcessRouteItem.setProcessId(processRouteItem.getProcessId());
+ for (ProductProcessRouteItem productProcessRouteItem : processRouteItems) {
+ productProcessRouteItem.setProductModelId(productOrder.getProductModelId());
productProcessRouteItem.setProductOrderId(productOrder.getId());
productProcessRouteItem.setProductRouteId(productProcessRoute.getId());
- productProcessRouteItem.setDragSort(processRouteItem.getDragSort());
int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
if (insert > 0) {
// 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix);
- int sequenceNumber = 1; // 榛樿搴忓彿
- if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
- String lastNo = lastWorkOrder.getWorkOrderNo().toString();
- if (lastNo.startsWith(datePrefix)) {
- String seqStr = lastNo.substring(datePrefix.length());
- try {
- sequenceNumber = Integer.parseInt(seqStr) + 1;
- } catch (NumberFormatException e) {
- sequenceNumber = 1;
- }
- }
- }
- // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
- String workOrderNoStr = "GD" + String.format("%s%03d", datePrefix, sequenceNumber);
+ String workOrderNoStr = getWorkOrderNoStr(lastWorkOrder, datePrefix); // 宸ュ崟鍙�
ProductWorkOrder productWorkOrder = new ProductWorkOrder();
productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
productWorkOrder.setProductOrderId(productOrder.getId());
- ProductOrder order = productOrderMapper.selectById(productOrder.getId());
- productWorkOrder.setPlanQuantity(order.getQuantity());
+ productWorkOrder.setPlanQuantity(BigDecimal.valueOf(productProcessRouteItem.getPlanNum()));
productWorkOrder.setWorkOrderNo(workOrderNoStr);
+ productWorkOrder.setPlanStartTime(productProcessRouteItem.getPlanStartTime());
+ productWorkOrder.setPlanEndTime(productProcessRouteItem.getPlanEndTime());
productWorkOrder.setStatus(1);
+ productWorkOrder.setUserPower(productProcessRouteItem.getUserPower());
productWorkOrderMapper.insert(productWorkOrder);
}
}
return productOrderMapper.updateById(productOrder);
+ }
+
+ @NotNull
+ private static String getWorkOrderNoStr(ProductWorkOrder lastWorkOrder, String datePrefix) {
+ int sequenceNumber = 1; // 榛樿搴忓彿
+ if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
+ String lastNo = lastWorkOrder.getWorkOrderNo();
+ if (lastNo.startsWith(datePrefix)) {
+ String seqStr = lastNo.substring(datePrefix.length());
+ try {
+ sequenceNumber = Integer.parseInt(seqStr) + 1;
+ } catch (NumberFormatException e) {
+ sequenceNumber = 1;
+ }
+ }
+ }
+ // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
+ String workOrderNoStr = "GD" + String.format("%s%03d", datePrefix, sequenceNumber);
+ return workOrderNoStr;
}
@Override
@@ -134,27 +182,31 @@
}
@Override
- public Boolean addProductOrder(ProductOrder productOrder) {
+ public Boolean addProductOrder(ProductOrder productOrder) throws IOException {
String string = generateNextOrderNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
productOrder.setNpsNo(string);
productOrder.setCompleteQuantity(BigDecimal.ZERO);
+ productOrder.setStatus("寰呯敓浜�");
this.save(productOrder);
if (ObjectUtils.isNotEmpty(productOrder.getRouteId())) {
this.bindingRoute(productOrder);
+ }
+ if(CollectionUtils.isNotEmpty(productOrder.getTempFileIds())){
+ commonFileService.migrateTempFilesToFormal(productOrder.getId(), productOrder.getTempFileIds());
}
return true;
}
@Override
- public Boolean delete(Long[] ids) {
-
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean delete(Long[] idList) {
//鎵归噺鏌ヨproductOrder
List<ProductOrder> productOrders = productOrderMapper.selectList(
new LambdaQueryWrapper<ProductOrder>()
- .in(ProductOrder::getId, ids)
+ .in(ProductOrder::getId, Arrays.asList(idList))
);
if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) {
-
+ List<Long> ids = productOrders.stream().map(ProductOrder::getId).collect(Collectors.toList());
// 鎵归噺鏌ヨprocessRouteItems
List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList(
@@ -190,7 +242,7 @@
// 鍒犻櫎浜у嚭琛ㄣ�佹姇鍏ヨ〃鏁版嵁
if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(productMainIds)) {
productionProductOutputMapper.deleteByProductMainIds(productMainIds);
- productionProductInputMapper.deleteByProductMainIds(productMainIds);
+ productionProductInputMapper.deleteByProductMainIds(ids);
List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
new LambdaQueryWrapper<QualityInspect>()
.in(QualityInspect::getProductMainId, productMainIds)
@@ -198,9 +250,9 @@
//鍒犻櫎鍑哄簱璁板綍
for (Long productMainId : productMainIds) {
//鍒犻櫎鐢熶骇鍑哄簱璁板綍
- stockUtils.deleteStockOutRecord(productMainId, StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
+ stockUtils.deleteStockOutRecord(productMainId, StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
//鍒犻櫎鎶ュ簾鐨勫叆搴撹褰�
- stockUtils.deleteStockInRecord(productMainId, StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
+ stockUtils.deleteStockInRecord(productMainId, StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
}
qualityInspects.forEach(qualityInspect -> {
//inspectState=1 宸叉彁浜� 涓嶈兘鍒犻櫎
@@ -232,10 +284,42 @@
// 鎵归噺鍒犻櫎productOrder
productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>()
.in(ProductOrder::getId, ids));
+ // 鍒犻櫎闄勪欢
+ commonFileService.deleteByBusinessIds(ids, FileNameType.PRODUCT_ORDER.getValue());
+ // 鍒犻櫎鐢熶骇璁㈠崟-鐗╂枡娓呭崟
+ productStructureRecordMapper.delete(new LambdaQueryWrapper<ProductStructureRecord>()
+ .in(ProductStructureRecord::getProductOrderId, ids));
}
+
return true;
}
+ @Override
+ public Object startOrPause(ProductOrderDto item) {
+ ProductOrder productOrder = productOrderMapper.selectById(item.getId());
+ if(productOrder == null){
+ throw new ServiceException("鐢熶骇璁㈠崟涓嶅瓨鍦�");
+ }
+ int i;
+ if(item.getOperation().equals(1)){
+ i = 2;
+ } else {
+ i = 1;
+ }
+ productOrder.setStatus(item.getOperation() == 1 ? "鐢熶骇涓�" : "寰呯敓浜�");
+ productOrderMapper.updateById(productOrder);
+ List<ProductWorkOrder> productWorkOrders = productWorkOrderMapper.selectList(new LambdaQueryWrapper<ProductWorkOrder>()
+ .eq(ProductWorkOrder::getProductOrderId, productOrder.getId()));
+ if(CollectionUtils.isNotEmpty(productWorkOrders)){
+
+ productWorkOrders.forEach(productWorkOrder -> {
+ productWorkOrder.setStatus(i);
+ productWorkOrderMapper.updateById(productWorkOrder);
+ });
+ }
+ return "鎿嶄綔鎴愬姛";
+ }
+
//鑾峰彇褰撳墠鐢熶骇璁㈠崟鍙�
public String getMaxOrderNoByDate(String datePrefix) {
QueryWrapper<ProductOrder> queryWrapper = new QueryWrapper<>();
--
Gitblit v1.9.3