gongchunyi
3 小时以前 346d463346701e8714b3a3a3ebb21e21960b5484
feat: 查看生产订单对应的生产计划来源
已添加1个文件
已修改5个文件
101 ■■■■■ 文件已修改
src/main/java/com/ruoyi/production/controller/ProductOrderController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProductOrderSourceDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/ProductOrderService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductOrderMapper.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -1,13 +1,13 @@
package com.ruoyi.production.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.dto.ProductOrderSourceDto;
import com.ruoyi.production.pojo.ProductOrder;
import com.ruoyi.production.service.ProductOrderService;
import io.swagger.annotations.Api;
@@ -16,7 +16,6 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
@RequestMapping("/productOrder")
@@ -82,5 +81,11 @@
        return R.ok(productOrderService.addProductOrder(productOrder));
    }
    @GetMapping("/productOrderSource/{orderId}")
    @ApiOperation("查看生产订单对应的生产计划")
    public AjaxResult productOrderSource(@PathVariable Long orderId) {
        List<ProductOrderSourceDto> list = productOrderService.productOrderSource(orderId);
        return AjaxResult.success(list);
    }
}
src/main/java/com/ruoyi/production/dto/ProductOrderSourceDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.production.dto;
import com.ruoyi.productionPlan.dto.ProductionPlanDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * <br>
 * ç”Ÿäº§è®¢å•来源-主生产计划
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/20
 */
@Data
@ApiModel(value = "ProductOrderSourceDto", description = "生产订单来源-主生产计划")
public class ProductOrderSourceDto {
    @ApiModelProperty("申请单编号")
    private String applyNo;
    @ApiModelProperty("主生产计划数据")
    private List<ProductionPlanDto> productPlans;
}
src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
@@ -3,8 +3,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.production.dto.ProductBomDto;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductOrderSourceDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.pojo.ProductOrder;
@@ -27,4 +27,6 @@
    Integer countCompleted(@Param("startDate") String startDate, @Param("endDate") String endDate);
    Integer countPending(@Param("startDate") String startDate, @Param("endDate") String endDate);
    List<ProductOrderSourceDto> productOrderSource(@Param("orderId") Long orderId);
}
src/main/java/com/ruoyi/production/service/ProductOrderService.java
@@ -3,8 +3,8 @@
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.ProductOrderSourceDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.pojo.ProductOrder;
@@ -32,4 +32,6 @@
    Long insertProductOrder(ProductOrder productOrder);
    Boolean delete(Long id);
    List<ProductOrderSourceDto> productOrderSource(Long orderId);
}
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -6,8 +6,10 @@
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.exception.ServiceException;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductOrderSourceDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.enums.ProductOrderStatusEnum;
import com.ruoyi.production.mapper.*;
@@ -314,5 +316,17 @@
        return "SC" + datePrefix + String.format("%04d", sequence);
    }
    @Override
    public List<ProductOrderSourceDto> productOrderSource(Long orderId) {
        if (orderId == null) {
            throw new ServiceException("查询订单数据不能为空");
        }
        ProductOrder productOrder = getById(orderId);
        if (productOrder == null) {
            throw new ServiceException("查询失败,生产订单不存在");
        }
        List<ProductOrderSourceDto> list = baseMapper.productOrderSource(orderId);
        return list;
    }
}
src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -14,6 +14,19 @@
        <result property="status" column="status"/>
    </resultMap>
    <resultMap id="ProductOrderSourceMap" type="com.ruoyi.production.dto.ProductOrderSourceDto">
        <id property="applyNo" column="apply_no"/>
        <result property="applyNo" column="apply_no"/>
        <collection property="productPlans" ofType="com.ruoyi.productionPlan.dto.ProductionPlanDto" autoMapping="true">
            <id property="id" column="plan_id"/>
            <result property="materialCode" column="material_code"/>
            <result property="productName" column="product_name"/>
            <result property="model" column="model"/>
            <result property="unit" column="unit"/>
            <result property="totalAssignedQuantity" column="total_assigned_quantity"/>
        </collection>
    </resultMap>
    <select id="pageProductOrder" resultType="com.ruoyi.production.dto.ProductOrderDto">
        SELECT
        po.id,
@@ -41,9 +54,9 @@
        LEFT JOIN process_route pr ON po.route_id = pr.id
        LEFT JOIN product_bom pb ON pr.bom_id = pb.id
        LEFT JOIN (
            SELECT product_order_id, MIN(production_plan_id) AS production_plan_id
            FROM product_order_plan
            GROUP BY product_order_id
        SELECT product_order_id, MIN(production_plan_id) AS production_plan_id
        FROM product_order_plan
        GROUP BY product_order_id
        ) pop ON po.id = pop.product_order_id
        LEFT JOIN production_plan pp ON pop.production_plan_id = pp.id
        LEFT JOIN product_material_sku pms ON pms.id = pp.product_material_sku_id
@@ -108,4 +121,25 @@
          AND create_time &lt;= #{endDate}
          AND complete_quantity &lt; quantity
    </select>
    <select id="productOrderSource" resultMap="ProductOrderSourceMap"
            parameterType="java.lang.Long">
        SELECT pp.id                 AS plan_id,
               pp.apply_no,
               pp.*,
               pop.assigned_quantity AS total_assigned_quantity,
               sku.material_code,
               sku.model,
               pm.product_name,
               pm.unit
        FROM product_order_plan pop
                 LEFT JOIN production_plan pp ON pop.production_plan_id = pp.id
                 LEFT JOIN product_material_sku sku ON pp.product_material_sku_id = sku.id
                 LEFT JOIN product_material pm ON sku.product_id = pm.id
        WHERE pop.product_order_id = #{orderId}
        ORDER BY pp.apply_no
    </select>
</mapper>