Files
invyone/backend-spring/src/main/resources/mapper/processWorkStandard.xml
T

230 lines
8.1 KiB
XML

<?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="processWorkStandard">
<sql id="processWorkStandardItemSearchCondition">
<if test="keyword != null and keyword != ''">
AND (i.item_code ILIKE '%' || #{keyword} || '%' OR i.item_name ILIKE '%' || #{keyword} || '%')
</if>
<if test="itemType != null and itemType != ''">
AND i.item_type = #{itemType}
</if>
</sql>
<select id="getProcessWorkStandardItemList" parameterType="map" resultType="map">
SELECT
i.item_code, i.item_name, i.item_type, i.unit,
COUNT(pr.id) AS routing_count,
MAX(CASE WHEN pr.is_default THEN pr.version_no ELSE NULL END) AS default_version
FROM items i
LEFT JOIN process_routing pr ON i.item_code = pr.item_code
WHERE 1=1
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (i.company_code = #{companyCode} OR i.company_code = '*')
</if>
<include refid="processWorkStandardItemSearchCondition"/>
GROUP BY i.item_code, i.item_name, i.item_type, i.unit
<include refid="common.dynamicOrderBy"/>
<include refid="common.pagination"/>
</select>
<select id="getProcessWorkStandardItemListCnt" parameterType="map" resultType="int">
SELECT COUNT(*) FROM (
SELECT i.item_code
FROM items i
LEFT JOIN process_routing pr ON i.item_code = pr.item_code
WHERE 1=1
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (i.company_code = #{companyCode} OR i.company_code = '*')
</if>
<include refid="processWorkStandardItemSearchCondition"/>
GROUP BY i.item_code
) sub
</select>
<select id="getProcessWorkStandardRoutingList" parameterType="map" resultType="map">
SELECT
pr.*,
COUNT(prd.id) AS detail_count
FROM process_routing pr
LEFT JOIN process_routing_detail prd ON pr.id = prd.routing_id
WHERE pr.item_code = #{itemCode}
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (pr.company_code = #{companyCode} OR pr.company_code = '*')
</if>
GROUP BY pr.id
ORDER BY pr.version_no ASC
</select>
<update id="setProcessWorkStandardDefaultVersion" parameterType="map">
UPDATE process_routing
SET is_default = CASE WHEN id = #{versionId} THEN TRUE ELSE FALSE END
WHERE item_code = (SELECT item_code FROM process_routing WHERE id = #{versionId})
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (company_code = #{companyCode} OR company_code = '*')
</if>
</update>
<update id="unsetProcessWorkStandardDefaultVersion" parameterType="map">
UPDATE process_routing
SET is_default = FALSE
WHERE id = #{versionId}
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (company_code = #{companyCode} OR company_code = '*')
</if>
</update>
<select id="getProcessWorkStandardWorkItemList" parameterType="map" resultType="map">
SELECT
pwi.*,
prd.process_code, prd.process_name, prd.sequence_no AS routing_sequence_no
FROM process_work_item pwi
LEFT JOIN process_routing_detail prd ON pwi.routing_detail_id = prd.id
WHERE pwi.routing_detail_id = #{routingDetailId}
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (pwi.company_code = #{companyCode} OR pwi.company_code = '*')
</if>
ORDER BY pwi.sequence_no ASC
</select>
<insert id="insertProcessWorkStandardWorkItem" parameterType="map" useGeneratedKeys="true" keyProperty="id">
INSERT INTO process_work_item (
company_code, routing_detail_id, work_item_code, work_item_name,
sequence_no, work_time, description, CREATED_DATE, UPDATED_DATE
) VALUES (
#{companyCode}, #{routingDetailId}, #{workItemCode}, #{workItemName},
COALESCE(#{sequenceNo}, 0), COALESCE(#{workTime}, 0), #{description}, NOW(), NOW()
)
</insert>
<update id="updateProcessWorkStandardWorkItem" parameterType="map">
UPDATE process_work_item
<set>
<if test="workItemName != null">work_item_name = #{workItemName},</if>
<if test="sequenceNo != null">sequence_no = #{sequenceNo},</if>
<if test="workTime != null">work_time = #{workTime},</if>
<if test="description != null">description = #{description},</if>
UPDATED_DATE = NOW()
</set>
WHERE id = #{id}
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (company_code = #{companyCode} OR company_code = '*')
</if>
</update>
<delete id="deleteProcessWorkStandardWorkItem" parameterType="map">
DELETE FROM process_work_item
WHERE id = #{id}
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (company_code = #{companyCode} OR company_code = '*')
</if>
</delete>
<select id="getProcessWorkStandardWorkItemDetailList" parameterType="map" resultType="map">
SELECT * FROM process_work_item_detail
WHERE work_item_id = #{workItemId}
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (company_code = #{companyCode} OR company_code = '*')
</if>
ORDER BY detail_no ASC
</select>
<insert id="insertProcessWorkStandardWorkItemDetail" parameterType="map" useGeneratedKeys="true" keyProperty="id">
INSERT INTO process_work_item_detail (
company_code, work_item_id, detail_no, content,
standard_time, quality_point, safety_note, CREATED_DATE, UPDATED_DATE
) VALUES (
#{companyCode}, #{workItemId}, COALESCE(#{detailNo}, 1), #{content},
COALESCE(#{standardTime}, 0), #{qualityPoint}, #{safetyNote}, NOW(), NOW()
)
</insert>
<update id="updateProcessWorkStandardWorkItemDetail" parameterType="map">
UPDATE process_work_item_detail
<set>
<if test="detailNo != null">detail_no = #{detailNo},</if>
<if test="content != null">content = #{content},</if>
<if test="standardTime != null">standard_time = #{standardTime},</if>
<if test="qualityPoint != null">quality_point = #{qualityPoint},</if>
<if test="safetyNote != null">safety_note = #{safetyNote},</if>
UPDATED_DATE = NOW()
</set>
WHERE id = #{id}
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (company_code = #{companyCode} OR company_code = '*')
</if>
</update>
<delete id="deleteProcessWorkStandardWorkItemDetail" parameterType="map">
DELETE FROM process_work_item_detail
WHERE id = #{id}
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (company_code = #{companyCode} OR company_code = '*')
</if>
</delete>
<select id="getProcessWorkStandardRegisteredItemList" parameterType="map" resultType="map">
SELECT pri.*, i.item_name, i.item_type, i.unit
FROM process_registered_item pri
LEFT JOIN items i ON pri.item_code = i.item_code
WHERE pri.screen_code = #{screenCode}
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (pri.company_code = #{companyCode} OR pri.company_code = '*')
</if>
ORDER BY pri.id ASC
</select>
<insert id="insertProcessWorkStandardRegisteredItem" parameterType="map" useGeneratedKeys="true" keyProperty="id">
INSERT INTO process_registered_item (
company_code, screen_code, item_code, routing_id, CREATED_DATE, UPDATED_DATE
) VALUES (
#{companyCode}, #{screenCode}, #{itemCode}, #{routingId}, NOW(), NOW()
)
</insert>
<insert id="insertProcessWorkStandardRegisteredItemBatch" parameterType="map">
INSERT INTO process_registered_item (
company_code, screen_code, item_code, routing_id, CREATED_DATE, UPDATED_DATE
) VALUES
<foreach collection="items" item="item" separator=",">
(#{companyCode}, #{item.screenCode}, #{item.itemCode}, #{item.routingId}, NOW(), NOW())
</foreach>
</insert>
<delete id="deleteProcessWorkStandardRegisteredItem" parameterType="map">
DELETE FROM process_registered_item
WHERE id = #{id}
<if test="companyCode != null and companyCode != &quot;*&quot;">
AND (company_code = #{companyCode} OR company_code = '*')
</if>
</delete>
</mapper>