chenhj
2 小时以前 7c060a33ae9399a86db97ad18da965e7a848dfc3
feat(production): 添加生产订单完成功能

- 在ProductOrder实体类中新增isEnd字段用于标记订单是否结束
- 添加finishOrder方法通过PATCH请求完成订单操作
- 更新数据库映射文件以支持isEnd字段的数据映射
- 在ProductOrderService中实现finishOrder业务逻辑
- 移除无用的导入包包括ProductBomDto、StockOutQualifiedRecordTypeEnum等
- 当生产订单结束时自动将完成进度设置为100%
- 在ProductWorkOrderDto中添加productOrderIsEnd字段用于工作订单显示
- 完善完成订单时的业务处理逻辑和数据更新机制
已修改7个文件
35 ■■■■ 文件已修改
src/main/java/com/ruoyi/production/controller/ProductOrderController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductOrder.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/ProductOrderService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductOrderMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductWorkOrderMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -72,4 +72,9 @@
    public R delete(@PathVariable("ids") Long[] ids) {
        return R.ok(productOrderService.delete(ids));
    }
    @PatchMapping("/{id}")
    public R finishOrder(@PathVariable Long id) {
        return R.ok(productOrderService.finishOrder(id));
    }
}
src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
@@ -33,6 +33,7 @@
    //生产订单号
    @ApiModelProperty(value = "生产订单号")
    private String productOrderNpsNo;
    private Boolean productOrderIsEnd;
    @ApiModelProperty(value = "完成进度")
    private BigDecimal completionStatus;
src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -116,4 +116,5 @@
    @ApiModelProperty(value = "批号")
    private String batchNo;
    private Boolean isEnd;
}
src/main/java/com/ruoyi/production/service/ProductOrderService.java
@@ -3,7 +3,6 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.production.dto.ProductBomDto;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.pojo.ProcessRoute;
@@ -25,4 +24,6 @@
    Boolean addProductOrder(ProductOrder productOrder);
    Boolean delete(Long[] id);
    int finishOrder(Long orderId);
}
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.production.service.impl;
import cn.hutool.core.util.BooleanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -7,8 +8,6 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductStructureDto;
@@ -16,7 +15,6 @@
import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProductOrderService;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.pojo.QualityInspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -67,7 +65,17 @@
    @Override
    public IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder) {
        return productOrderMapper.pageProductOrder(page, productOrder);
        IPage<ProductOrderDto> productOrderDtoIPage = productOrderMapper.pageProductOrder(page, productOrder);
        List<ProductOrderDto> productOrderDtos = productOrderDtoIPage.getRecords();
        for (int i = 0; i < productOrderDtos.size(); i++) {
            ProductOrderDto productOrderDto = productOrderDtos.get(i);
            if (BooleanUtil.isTrue(productOrderDto.getIsEnd())) {
                // 如果生产订单被结束,则将完成进度设置为100%
                productOrderDto.setCompletionStatus(BigDecimal.valueOf(100));
            }
        }
        return productOrderDtoIPage;
    }
    @Override
@@ -201,4 +209,11 @@
    }
    @Override
    public int finishOrder(Long orderId) {
        ProductOrder productOrder = new ProductOrder();
        productOrder.setId(orderId);
        productOrder.setIsEnd(true);
        return productOrderMapper.updateById(productOrder);
    }
}
src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -14,6 +14,7 @@
        <result property="updateTime" column="update_time"/>
        <result property="expectedSchedule" column="expected_schedule"/>
        <result property="manufacturingTeam" column="manufacturing_team"/>
        <result property="isEnd" column="is_end"/>
    </resultMap>
    <select id="pageProductOrder" resultType="com.ruoyi.production.dto.ProductOrderDto">
        select po.*,
src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -28,6 +28,7 @@
        pm.uid_no,
        p.product_name AS productName,
        po.nps_no AS productOrderNpsNo,
        po.is_end as productOrderIsEnd,
        ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus,
        CASE
        WHEN pwo.work_order_no LIKE 'FG%' THEN '返工返修'