liyong
2026-04-25 80155f95799dfd1c457e32252cbe43dfbb01c05a
src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
@@ -10,6 +10,8 @@
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProductProcessRouteItemService;
import com.ruoyi.production.service.ProductProcessService;
import com.ruoyi.production.service.ProductWorkOrderService;
import com.ruoyi.production.service.ProductionProductMainService;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.pojo.QualityInspect;
@@ -18,6 +20,7 @@
import lombok.AllArgsConstructor;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -36,17 +39,13 @@
@AllArgsConstructor
public class ProductProcessRouteItemServiceImpl extends ServiceImpl<ProductProcessRouteItemMapper, ProductProcessRouteItem> implements ProductProcessRouteItemService {
    @Autowired
    @Lazy
    private ProductionProductMainService productionProductMainService;
    private ProductProcessRouteItemMapper productProcessRouteItemMapper;
    private ProductionProductMainMapper productionProductMainMapper;
    private ProductionProductInputMapper productionProductInputMapper;
    private ProductionProductOutputMapper productionProductOutputMapper;
    private QualityInspectMapper qualityInspectMapper;
    private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
@@ -54,9 +53,9 @@
    private ProductOrderMapper productOrderMapper;
    private ProductProcessRouteMapper productProcessRouteMapper;
    private final ProductWorkOrderService productWorkOrderService;
    private SalesLedgerProductMapper salesLedgerProductMapper;
    private final ProductProcessService productProcessService;
    @Override
@@ -101,14 +100,12 @@
//                    // 删除质检
//                    qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>()
//                            .eq(QualityInspect::getProductMainId, mainId));
                    salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
                            .eq(SalesLedgerProductionAccounting::getProductMainId, main.getId()));
                }
            }
            // 查询订单 + 删除核算
            ProductOrder productOrder = productOrderMapper.selectById(productOrderId);
            if (productOrder != null && productOrder.getSalesLedgerId() != null) {
                salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
                        .eq(SalesLedgerProductionAccounting::getSalesLedgerId, productOrder.getSalesLedgerId()));
            }
            // 删除关联工单
            productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
                    .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId));
@@ -139,35 +136,16 @@
    @Override
    public R addRouteItem(ProductProcessRouteItem productProcessRouteItem) {
        ProductOrder productOrder = productOrderMapper.selectById(productProcessRouteItem.getProductOrderId());
        ProductProcess productProcess = productProcessService.getById(productProcessRouteItem.getProcessId());
        int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
        // 生成当前日期的前缀:年月日
        String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
        if (insert > 0) {
            // 查询今日已存在的最大工单号
            QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
            queryWrapper.likeRight("work_order_no", datePrefix)
                    .orderByDesc("work_order_no")
                    .last("LIMIT 1");
            ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper);
            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);
            ProductWorkOrder productWorkOrder = new ProductWorkOrder();
            productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
            productWorkOrder.setProductOrderId(productProcessRouteItem.getProductOrderId());
            productWorkOrder.setPlanQuantity(productOrder.getQuantity());
            productWorkOrder.setWorkOrderNo(workOrderNoStr);
            productWorkOrder.setWorkOrderNo(productWorkOrderService.generateProductWorkOrder(null,productProcess.getName(),productOrder.getNpsNo()));
            productWorkOrder.setStatus(1);
            productWorkOrderMapper.insert(productWorkOrder);
        }