huminmin
2 天以前 52e4610b008f7643f84c5f37a110c081123caf69
报工后新增/修改生产核算;删除报工后,删除关联的核算数据
已添加1个文件
已修改7个文件
65 ■■■■■ 文件已修改
doc/1767778273_add_product_order_id_to_product_work_order.sql 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/1767778273_add_product_order_id_to_product_work_order.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
alter table product_work_order
    add product_order_id bigint not null default 0 comment '生产订单id';
src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
@@ -90,6 +90,7 @@
                    String workOrderNoStr = String.format("%s%03d", datePrefix, startSequence + i);
                    ProductWorkOrder workOrder = new ProductWorkOrder();
                    workOrder.setProductProcessRouteItemId(item.getId());
                    workOrder.setProductOrderId(item.getRouteId());
                    workOrder.setWorkOrderNo(workOrderNoStr);
                    workOrder.setStatus(1);
                    workOrders.add(workOrder);
src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -12,6 +12,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
@RequestMapping("productionProductMain")
@RestController
src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
@@ -13,7 +13,7 @@
    @TableId(type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "工艺路线id")
    @ApiModelProperty(value = "生产订单id(product_order_id)")
    private Long routeId;
    @ApiModelProperty(value = "工序id")
src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
@@ -32,6 +32,12 @@
    private Long productProcessRouteItemId;
    /**
     * ç”Ÿäº§è®¢å•id
     */
    @ApiModelProperty(value = "生产订单id")
    private Long productOrderId;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @ApiModelProperty(value = "创建时间")
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -10,6 +10,7 @@
import com.ruoyi.basic.mapper.ProductModelMapper;
import com.ruoyi.basic.pojo.Product;
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.production.controller.ProductWorkOrderController;
import com.ruoyi.production.dto.ProductStructureDto;
@@ -17,6 +18,7 @@
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProductionProductMainService;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.mapper.QualityInspectParamMapper;
import com.ruoyi.quality.mapper.QualityTestStandardMapper;
@@ -66,6 +68,10 @@
    private ProductionProductInputMapper productionProductInputMapper;
    private ProductOrderMapper productOrderMapper;
    private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
    @Override
    public IPage<ProductionProductMainDto> listPageProductionProductMainDto(Page page, ProductionProductMainDto productionProductMainDto) {
@@ -79,6 +85,8 @@
            throw new RuntimeException("参数不能为空");
        }
        SysUser user = SecurityUtils.getLoginUser().getUser();
        if (dto.isReportWork()) {
            // æ›´æ–°é€»è¾‘ - åªæ›´æ–°æ•°é‡
            QueryWrapper<ProductionProductOutput> outputWrapper = new QueryWrapper<>();
@@ -89,10 +97,21 @@
                throw new RuntimeException("产出记录不存在");
            }
            // æŸ¥è¯¢ç”Ÿäº§æ ¸ç®—记录
            QueryWrapper<SalesLedgerProductionAccounting> accountingWrapper = new QueryWrapper<>();
            accountingWrapper.eq("sales_ledger_work_id", dto.getProductMainId());
            SalesLedgerProductionAccounting accounting = salesLedgerProductionAccountingMapper.selectOne(accountingWrapper);
            if (accounting == null) {
                throw new RuntimeException("生产核算记录不存在");
            }
            // åªæ›´æ–°æ•°é‡
            if (dto.getQuantity() != null) {
                output.setQuantity(dto.getQuantity());
                productionProductOutputMapper.updateById(output);
                // æ›´æ–°ç”Ÿäº§æ ¸ç®—记录
                accounting.setFinishedNum(dto.getQuantity());
                salesLedgerProductionAccountingMapper.updateById(accounting);
            }
            return true;
        }
@@ -136,7 +155,7 @@
        String productNo = String.format("%s%03d", datePrefix, sequenceNumber);
        productionProductMain.setProductNo(productNo);
        productionProductMain.setUserId(dto.getUserId());
        productionProductMain.setUserId(user.getUserId());
        productionProductMain.setProductProcessRouteItemId(dto.getProductProcessRouteItemId());
        productionProductMain.setWorkOrderId(dto.getWorkOrderId());
        productionProductMain.setStatus(0);
@@ -203,6 +222,28 @@
        productionProductOutput.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO);
        productionProductOutputMapper.insert(productionProductOutput);
        // èŽ·å–ç”Ÿäº§è®¢å•
        ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
        ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
        if (productOrder == null) {
            throw new RuntimeException("生产订单不存在");
        }
        // æ·»åŠ ç”Ÿäº§æ ¸ç®—
        SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
                .salesLedgerWorkId(productionProductMain.getId())
                .salesLedgerSchedulingId(0L)
                .salesLedgerId(productOrder.getSalesLedgerId())
                .salesLedgerProductId(productOrder.getProductModelId())
                .schedulingUserId(user.getUserId())
                .schedulingUserName(user.getNickName())
                .finishedNum(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO)
                .workHours(productProcess.getSalaryQuota())
                .process(productProcess.getName())
                .schedulingDate(LocalDate.now())
                .tenantId(dto.getTenantId())
                .build();
        salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
        return true;
    }
@@ -227,6 +268,12 @@
                .eq(ProductionProductOutput::getProductMainId, id)
        );
        // åˆ é™¤å…³è”的核算数据
        salesLedgerProductionAccountingMapper.delete(
                        new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
                                .eq(SalesLedgerProductionAccounting::getSalesLedgerWorkId, id)
                );
        // åˆ é™¤ä¸»è¡¨
        return productionProductMainMapper.deleteById(id) > 0;
    }
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -222,6 +222,8 @@
                        String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
                        ProductWorkOrder productWorkOrder = new ProductWorkOrder();
                        productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
                        productWorkOrder.setProductOrderId(productOrder.getId());
                        productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
                        productWorkOrder.setWorkOrderNo(workOrderNoStr);
                        productWorkOrder.setStatus(1);
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -677,6 +677,8 @@
                            String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
                            ProductWorkOrder productWorkOrder = new ProductWorkOrder();
                            productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
                            productWorkOrder.setProductOrderId(productOrder.getId());
                            productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
                            productWorkOrder.setWorkOrderNo(workOrderNoStr);
                            productWorkOrder.setStatus(1);
                            productWorkOrderMapper.insert(productWorkOrder);