wenwj
2025-04-12 6ff5bfe44de8c3cfba86053e8fed43f6f97584fc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aps.core.mapper.ApsPartRouteStatMapper">
    
    <resultMap type="ApsPartRouteStat" id="ApsPartRouteStatResult">
        <result property="id"    column="id"    />
        <result property="workOrderNo"    column="work_order_no"    />
        <result property="roadProcessNumber"    column="road_process_number"    />
        <result property="currentProcessNumber"    column="current_process_number"    />
        <result property="productionQuantity"    column="production_quantity"    />
        <result property="standardTime"    column="standard_time"    />
        <result property="processTotalTime"    column="process_total_time"    />
        <result property="processPlanStartDay"    column="process_plan_start_day"    />
        <result property="designTimes"    column="design_times"    />
        <result property="delFlag"    column="del_flag"    />
        <result property="createBy"    column="create_by"    />
        <result property="batchNumber"    column="batch_number"    />
    </resultMap>
 
    <sql id="selectApsPartRouteStatVo">
        select id, work_order_no, road_process_number, current_process_number, production_quantity, standard_time, process_total_time, process_plan_start_day, design_times, del_flag, create_by, batch_number from aps_part_route_stat
    </sql>
 
    <select id="selectApsPartRouteStatList" parameterType="ApsPartRouteStat" resultMap="ApsPartRouteStatResult">
        <include refid="selectApsPartRouteStatVo"/>
        <where>  
            <if test="workOrderNo != null  and workOrderNo != ''"> and work_order_no = #{workOrderNo}</if>
            <if test="roadProcessNumber != null  and roadProcessNumber != ''"> and road_process_number = #{roadProcessNumber}</if>
            <if test="currentProcessNumber != null  and currentProcessNumber != ''"> and current_process_number = #{currentProcessNumber}</if>
            <if test="productionQuantity != null "> and production_quantity = #{productionQuantity}</if>
            <if test="standardTime != null "> and standard_time = #{standardTime}</if>
            <if test="processTotalTime != null "> and process_total_time = #{processTotalTime}</if>
            <if test="processPlanStartDay != null  and processPlanStartDay != ''"> and process_plan_start_day = #{processPlanStartDay}</if>
            <if test="designTimes != null "> and design_times = #{designTimes}</if>
            <if test="batchNumber != null  and batchNumber != ''"> and batch_number = #{batchNumber}</if>
        </where>
    </select>
    
    <select id="selectApsPartRouteStatById" parameterType="String" resultMap="ApsPartRouteStatResult">
        <include refid="selectApsPartRouteStatVo"/>
        where id = #{id}
    </select>
 
    <insert id="insertApsPartRouteStat" parameterType="ApsPartRouteStat">
        insert into aps_part_route_stat
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="workOrderNo != null">work_order_no,</if>
            <if test="roadProcessNumber != null and roadProcessNumber != ''">road_process_number,</if>
            <if test="currentProcessNumber != null">current_process_number,</if>
            <if test="productionQuantity != null">production_quantity,</if>
            <if test="standardTime != null">standard_time,</if>
            <if test="processTotalTime != null">process_total_time,</if>
            <if test="processPlanStartDay != null and processPlanStartDay != ''">process_plan_start_day,</if>
            <if test="designTimes != null">design_times,</if>
            <if test="delFlag != null">del_flag,</if>
            <if test="createBy != null">create_by,</if>
            <if test="batchNumber != null">batch_number,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="workOrderNo != null">#{workOrderNo},</if>
            <if test="roadProcessNumber != null and roadProcessNumber != ''">#{roadProcessNumber},</if>
            <if test="currentProcessNumber != null">#{currentProcessNumber},</if>
            <if test="productionQuantity != null">#{productionQuantity},</if>
            <if test="standardTime != null">#{standardTime},</if>
            <if test="processTotalTime != null">#{processTotalTime},</if>
            <if test="processPlanStartDay != null and processPlanStartDay != ''">#{processPlanStartDay},</if>
            <if test="designTimes != null">#{designTimes},</if>
            <if test="delFlag != null">#{delFlag},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="batchNumber != null">#{batchNumber},</if>
         </trim>
    </insert>
 
    <update id="updateApsPartRouteStat" parameterType="ApsPartRouteStat">
        update aps_part_route_stat
        <trim prefix="SET" suffixOverrides=",">
            <if test="workOrderNo != null">work_order_no = #{workOrderNo},</if>
            <if test="roadProcessNumber != null and roadProcessNumber != ''">road_process_number = #{roadProcessNumber},</if>
            <if test="currentProcessNumber != null">current_process_number = #{currentProcessNumber},</if>
            <if test="productionQuantity != null">production_quantity = #{productionQuantity},</if>
            <if test="standardTime != null">standard_time = #{standardTime},</if>
            <if test="processTotalTime != null">process_total_time = #{processTotalTime},</if>
            <if test="processPlanStartDay != null and processPlanStartDay != ''">process_plan_start_day = #{processPlanStartDay},</if>
            <if test="designTimes != null">design_times = #{designTimes},</if>
            <if test="delFlag != null">del_flag = #{delFlag},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="batchNumber != null">batch_number = #{batchNumber},</if>
        </trim>
        where id = #{id}
    </update>
 
    <update id="deleteApsPartRouteStatById" parameterType="String">
        update aps_part_route_stat set del_flag = '1' where id = #{id}
    </update>
 
    <update id="deleteApsPartRouteStatByIds" parameterType="String">
        update aps_part_route_stat set del_flag = '1'
        where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </update>
    <update id="deleteLastBatch" parameterType="String">
        update aps_part_route_stat set del_flag = '1' where batch_number != #{batchNumber}
    </update>
    <select id="selectPartRoutStat"  resultMap="ApsPartRouteStatResult" >
        select rt.work_order_no,
            rt.process_name,
            cast( rt.process_number as numeric(18,2)) as road_process_number,
            cast( pl.process_number as numeric(18,2)) as current_process_number,
            pl.production_quantity,
            rt.standard_time,
            (rt.standard_time*pl.production_quantity) as process_total_time,
            rt.process_plan_start_day ,
            (rs.devices_quantity*rs.theory_hours) as design_time
        from aps_part_plan  as pl
            left join aps_process_route as rt on pl.document_number=rt.work_order_no
            left join aps_resource_group as rs on rs.resource_group_name=rt.process_name
        where pl.del_flag='0' and rt.del_flag='0'
            /*零件计划状态为:非完工 */
            and ( pl.order_status!='' and ( pl.order_status!='3' or pl.order_status!='完工') )
            /*工艺路线的工序号>=零件计划的当前工序*/
            and cast( rt.process_number as decimal(18,2)) >=  cast( pl.process_number as decimal(18,2))
            /*工序计划开工日 <= 资源组的截止日期*/
            and rt.process_plan_start_day<=rs.request_date
            /*资源组需求截止日期<=当前日期+15天*/
            and rs.request_date<=(current_date + INTERVAL '15 day')
            order by rt.work_order_no,process_plan_start_day
    </select>
</mapper>