buhuazhen
4 天以前 cf3482e6a4d40713cc09d107f11092c8db2e245a
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -17,6 +17,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
@@ -92,10 +93,10 @@
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Long processRouteAnticlockwise(List<ProcessRouteAnticlockwiseDto> processRouteAnticlockwiseDtos, Long productModelId, Long productOrderId,String uuid) {
    public Long processRouteAnticlockwise(List<ProcessRouteAnticlockwiseDto> processRouteAnticlockwiseDtos, Long productModelId, Long productOrderId) {
        ProductOrder byId = productOrderService.getById(productOrderId);
        // 1. 新增BOM
        ProductBom productBom = createProductBom(productModelId,uuid);
        ProductBom productBom = createProductBom(productModelId);
        // 2. 新增BOM子表
        List<ProductStructure> productStructures = buildProductStructures(processRouteAnticlockwiseDtos, productBom.getId());
@@ -112,18 +113,17 @@
        ProductProcessRoute productProcessRoute = createProductProcessRoute(productModelId, productOrderId, productBom.getId(), processRoute.getProcessRouteCode());
        // 6. 新增生产工艺路线子表
        buildProductProcessRouteItems(processRouteAnticlockwiseDtos, productProcessRoute.getId(), productModelId,productOrderId);
        buildProductProcessRouteItems(processRouteAnticlockwiseDtos, productProcessRoute.getId(), productModelId, productOrderId);
        return processRoute.getId();
    }
    /**
     * 创建产品BOM
     */
    private ProductBom createProductBom(Long productModelId,String uuid) {
    private ProductBom createProductBom(Long productModelId) {
        ProductBom productBom = new ProductBom();
        productBom.setProductModelId(productModelId);
        productBom.setVersion("1.0.0");
        productBom.setUuid(uuid);
        productBomService.save(productBom);
        productBom.setBomNo("BM." + String.format("%05d", productBom.getId()));
@@ -141,6 +141,7 @@
            ProductStructure structure = new ProductStructure();
            structure.setProductModelId(dto.getProductModelId());
            structure.setProcessId(dto.getProcessId());
            structure.setUnitQuantity(new BigDecimal(1));
            structure.setProcessRouteOpenNum(dto.getProcessRouteOpenNum());
            structure.setProcessRouteNum(dto.getProcessRouteNum());
            structure.setProcessRouteAddNum(dto.getProcessRouteAddNum());
@@ -162,7 +163,7 @@
        processRoute.setDescription("");
        this.save(processRoute);
        processRoute.setProcessRouteCode("GYLX." + String.format("%05d", processRoute.getId()));
        processRoute.setProcessRouteCode("GYLX." + String.format("%09d", processRoute.getId()));
        this.updateById(processRoute);
        return processRoute;
@@ -173,16 +174,18 @@
     */
    private List<ProcessRouteItem> buildProcessRouteItems(List<ProcessRouteAnticlockwiseDto> dtos, Long routeId, Long productModelId) {
        List<ProcessRouteItem> items = new ArrayList<>(dtos.size());
        Integer num = 0;
        for (ProcessRouteAnticlockwiseDto dto : dtos) {
            ProcessRouteItem item = new ProcessRouteItem();
            item.setRouteId(routeId);
            item.setProcessId(dto.getProcessId());
            item.setProductModelId(dto.getProductModelId());
            item.setProductModelId(productModelId);
            item.setProcessRouteName(dto.getProcessRouteName());
            item.setProcessRouteOpenNum(dto.getProcessRouteOpenNum());
            item.setProcessRouteNum(dto.getProcessRouteNum());
            item.setProcessRouteAddNum(dto.getProcessRouteAddNum());
            item.setProcessRouteRequire(dto.getProcessRouteRequire());
            item.setDragSort(num++);
            items.add(item);
        }
        return items;
@@ -205,29 +208,33 @@
    /**
     * 构建生产工艺路线子项列表
     */
    private void buildProductProcessRouteItems(List<ProcessRouteAnticlockwiseDto> dtos, Long productRouteId, Long productModelId,Long productOrderId) {
    private void buildProductProcessRouteItems(List<ProcessRouteAnticlockwiseDto> dtos, Long productRouteId, Long productModelId, Long productOrderId) {
        ProductOrder byId = productOrderService.getById(productOrderId);
        Integer num = 0;
        for (ProcessRouteAnticlockwiseDto dto : dtos) {
            ProductProcessRouteItem item = new ProductProcessRouteItem();
            item.setProductRouteId(productRouteId);
            item.setProcessId(dto.getProcessId());
            item.setProductModelId(dto.getProductModelId());
            item.setProductModelId(productModelId);
            item.setProcessRouteName(dto.getProcessRouteName());
            item.setProcessRouteOpenNum(dto.getProcessRouteOpenNum());
            item.setProcessRouteNum(dto.getProcessRouteNum());
            item.setProcessRouteAddNum(dto.getProcessRouteAddNum());
            item.setProcessRouteRequire(dto.getProcessRouteRequire());
            item.setDragSort(num++);
            item.setIsQuality(dto.getProductProcess().getIsQuality() != null && dto.getProductProcess().getIsQuality());
            item.setUuid(dto.getUuid());
            productProcessRouteItemService.save(item);
            ProductProcess productProcess = productProcessService.getById(item.getProcessId());
            //同步新增生产工单
            ProductWorkOrder productWorkOrder = new ProductWorkOrder();
            productWorkOrder.setProductProcessRouteItemId(item.getId());
            productWorkOrder.setProductOrderId(productOrderId);
            ProductOrder order = productOrderMapper.selectById(productOrderId);
            productWorkOrder.setPlanQuantity(order.getQuantity());
            productWorkOrder.setPlanQuantity(new BigDecimal(dto.getProcessRouteNum()));
            productWorkOrder.setDeviceId(dto.getDeviceId());
            productWorkOrder.setUserIds(dto.getUserIds());
            productWorkOrder.setWorkOrderNo(productWorkOrderService.generateProductWorkOrder(null, productProcess.getName(), byId.getNpsNo()));
            productWorkOrder.setUserNames(dto.getUserNames());
            productWorkOrder.setWorkOrderNo(productWorkOrderService.generateProductWorkOrder(productProcess.getName(), byId.getNpsNo()));
            productWorkOrder.setStatus(1);
            productWorkOrderService.save(productWorkOrder);
        }