李林
2023-10-07 658d4927d468c47208fd012d9128b09249c07eff
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
135
136
137
138
139
140
141
142
143
144
145
146
147
<?xml version="1.0" encoding="UTF-8"?>
 
<!--
  ~
  ~      Copyright (c) 2018-2025, ztt All rights reserved.
  ~
  ~  Redistribution and use in source and binary forms, with or without
  ~  modification, are permitted provided that the following conditions are met:
  ~
  ~ Redistributions of source code must retain the above copyright notice,
  ~  this list of conditions and the following disclaimer.
  ~  Redistributions in binary form must reproduce the above copyright
  ~  notice, this list of conditions and the following disclaimer in the
  ~  documentation and/or other materials provided with the distribution.
  ~  Neither the name of the pig4cloud.com developer nor the names of its
  ~  contributors may be used to endorse or promote products derived from
  ~  this software without specific prior written permission.
  ~  Author: ztt
  ~
  -->
 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="com.chinaztt.mes.technology.mapper.RoutingMapper">
 
    <resultMap id="routingMap" type="com.chinaztt.mes.technology.dto.RoutingDTO">
        <id property="id" column="id"/>
        <result property="routingNo" column="routing_no"/>
        <result property="name" column="name"/>
        <result property="partId" column="part_id"/>
        <result property="description" column="description"/>
        <result property="state" column="state"/>
        <result property="master" column="master"/>
        <result property="createTime" column="create_time"/>
        <result property="updateTime" column="update_time"/>
        <result property="createUser" column="create_user"/>
        <result property="updateUser" column="update_user"/>
        <result property="partName" column="part_name"/>
        <result property="partNo" column="part_no"/>
        <result property="version" column="version"/>
        <result property="bomId" column="bom_id"/>
        <result property="bomNo" column="bom_no"/>
        <result property="bomTypeDb" column="bom_type_db"/>
        <result property="alternativeNo" column="alternative_no"/>
        <result property="alternativeDesc" column="alternative_desc"/>
        <result property="ifsSync" column="ifs_sync"/>
        <result property="phaseInDate" column="phase_in_date"/>
        <result property="phaseOutDate" column="phase_out_date"/>
        <result property="wireCore" column="wire_core"/>
        <result property="operationOrder" column="operation_order"/>
        <collection property="refs" ofType="com.chinaztt.mes.technology.dto.RefDTO"
                    select="com.chinaztt.mes.technology.mapper.RoutingMapper.getRefByRoutingId" column="id">
        </collection>
        <collection property="operations" ofType="com.chinaztt.mes.technology.dto.RoutingOperationDTO"
                    select="com.chinaztt.mes.technology.mapper.RoutingOperationMapper.getDtoListByRoutingId"
                    column="id">
        </collection>
    </resultMap>
 
    <resultMap id="refMap" type="com.chinaztt.mes.technology.dto.RefDTO">
        <result property="routingId" column="routing_id"/>
        <result property="fromId" column="from_id"/>
        <result property="toId" column="to_id"/>
        <result property="condition" column="condition"/>
    </resultMap>
 
 
    <sql id="routingPage">
     SELECT
        r.*,
        P.part_name,
        P.part_no,
        tb."number" bom_no
    FROM
        technology_routing r
        LEFT JOIN basic_part P ON r.part_id = P.ID
        LEFT JOIN technology_bom tb on tb."id"=r.bom_id
        where r.active=true
    </sql>
 
    <select id="getRoutingPage" resultMap="routingMap">
        select * from(<include refid="routingPage"/>) a
        <if test="ew.emptyOfWhere == false">
            <where>
                ${ew.SqlSegment}
            </where>
        </if>
    </select>
 
    <select id="getRoutingById" resultMap="routingMap">
        SELECT
            r.*
        FROM
            technology_routing r
        WHERE
            r."id" = #{routingId}
          AND r.active = TRUE
    </select>
 
    <select id="getRoutingDtoById" resultMap="routingMap">
        SELECT
            r.*,
            P.part_name,
            p.part_no
        FROM
            technology_routing r
            LEFT JOIN basic_part P ON P.ID = r.part_id
        WHERE
            r."id" =#{routingId} and r.active=true
    </select>
 
    <select id="getRefByRoutingId" resultMap="refMap">
        select * from technology_routing_operation_ref where routing_id=#{routingId}
    </select>
 
    <select id="selectUnIfsSyncByDocId" resultType="com.chinaztt.mes.technology.entity.Routing">
        SELECT A.*
        FROM
            technology_routing A
                LEFT JOIN technology_join_document_bom_routing b ON A."id" = b.routing_id
        WHERE b.document_id = #{docId}
          AND a.ifs_sync = FALSE
    </select>
 
    <select id="selectByPartNoVA" resultType="com.chinaztt.mes.technology.entity.Routing">
        SELECT te.*
        FROM technology_routing te
                 LEFT JOIN basic_part bp ON te.part_id = bp."id"
        WHERE bp.part_no || '_' || te."version" || '_' || te.alternative_no = #{routingKey}
    </select>
 
    <select id="getRoutingByDocumentIdAndOperationId" resultMap="routingMap">
        SELECT DISTINCT
            tr.*,
            tro.operation_order,
            bp.part_no,
            bp.part_name
        FROM
            technology_routing tr
            LEFT JOIN technology_join_document_bom_routing tjdbr ON tr."id" = tjdbr.routing_id
             LEFT JOIN technology_routing_operation tro ON tr."id" = tro.routing_id
            LEFT JOIN basic_part bp ON bp."id" = tr.part_id
        WHERE
            tjdbr.document_id = #{documentId}
              AND tro.operation_id = #{operationId}
    </select>
</mapper>