<?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.ruoyi.production.mapper.ProductWorkOrderMapper">
|
|
<resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductWorkOrder">
|
<result column="id" property="id"/>
|
<result column="product_process_route_item_id" property="productProcessRouteItemId"/>
|
<result column="create_time" property="createTime"/>
|
<result column="update_time" property="updateTime"/>
|
<result column="work_order_no" property="workOrderNo"/>
|
<result column="status" property="status"/>
|
<result column="tenant_id" property="tenantId"/>
|
<result column="plan_start_time" property="planStartTime"/>
|
<result column="plan_end_time" property="planEndTime"/>
|
<result column="actual_start_time" property="actualStartTime"/>
|
<result column="actual_end_time" property="actualEndTime"/>
|
</resultMap>
|
|
<select id="pageProductWorkOrder" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
|
SELECT
|
pwo.*,
|
CASE pp.type
|
WHEN 1 THEN '加工'
|
WHEN 2 THEN '刮板冷芯制作'
|
WHEN 3 THEN '管路组对'
|
WHEN 4 THEN '罐体连接及调试'
|
WHEN 5 THEN '测试打压'
|
WHEN 6 THEN '其他'
|
ELSE pp.NAME
|
END as processName,
|
pm.model,
|
pm.unit,
|
p.product_name AS productName,
|
po.nps_no AS productOrderNpsNo,
|
pp.salary_quota,
|
ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus,
|
CASE
|
WHEN pwo.work_order_no LIKE 'FG%' THEN '返工返修'
|
ELSE '正常'
|
END AS work_order_type
|
FROM
|
product_work_order pwo
|
LEFT JOIN product_process_route_item ppri ON ppri.id = pwo.product_process_route_item_id
|
LEFT JOIN product_order po ON po.id = pwo.product_order_id
|
LEFT JOIN product_process pp ON pp.id = ppri.process_id
|
LEFT JOIN product_model pm ON pm.id = ppri.product_model_id
|
LEFT JOIN product p ON p.id = pm.product_id
|
where 1=1
|
<if test="c.workOrderNo != null and c.workOrderNo != ''">
|
and pwo.work_order_no like concat('%',#{c.workOrderNo},'%')
|
</if>
|
<if test="c.planStartTime != null and c.planEndTime != null">
|
and pwo.create_time <![CDATA[ >= ]]> #{c.planStartTime}
|
and pwo.create_time <![CDATA[ <= ]]> #{c.planEndTime}
|
</if>
|
<if test="c.productOrderId != null and c.productOrderId != ''">
|
and pwo.product_order_id = #{c.productOrderId}
|
</if>
|
<if test="c.type != null and c.type == 2 and c.currentUserId != null">
|
and exists (
|
select 1
|
from product_work_order_rapporteur pwor
|
where pwor.work_order_id = pwo.id
|
and pwor.user_id = #{c.currentUserId}
|
)
|
</if>
|
</select>
|
<select id="getProductWorkOrderFlowCard" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
|
SELECT
|
pwo.*,
|
CASE pp.type
|
WHEN 1 THEN '加工'
|
WHEN 2 THEN '刮板冷芯制作'
|
WHEN 3 THEN '管路组对'
|
WHEN 4 THEN '罐体连接及调试'
|
WHEN 5 THEN '测试打压'
|
WHEN 6 THEN '其他'
|
ELSE pp.NAME
|
END as processName,
|
pm.model,
|
pm.unit,
|
p.product_name AS productName,
|
po.nps_no AS productOrderNpsNo,
|
ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus,
|
sum(ppo.scrap_qty) scrapQty
|
FROM
|
product_work_order pwo
|
LEFT JOIN product_process_route_item ppri ON ppri.id = pwo.product_process_route_item_id
|
LEFT JOIN production_product_main ppm ON ppm.work_order_id = pwo.id
|
LEFT JOIN production_product_output ppo ON ppo.product_main_id = ppm.id
|
LEFT JOIN product_order po ON po.id = pwo.product_order_id
|
LEFT JOIN product_process pp ON pp.id = ppri.process_id
|
LEFT JOIN product_model pm ON pm.id = ppri.product_model_id
|
LEFT JOIN product p ON p.id = pm.product_id
|
WHERE pwo.id = #{id}
|
GROUP BY pwo.id, pwo.product_process_route_item_id, pwo.create_time, pwo.update_time, pwo.work_order_no, pwo.plan_start_time, pwo.plan_end_time, pwo.actual_start_time, pwo.actual_end_time, pwo.status, pwo.tenant_id, pwo.plan_quantity, pwo.product_order_id, pwo.complete_quantity,
|
pp.NAME ,
|
pm.model,
|
pm.unit,
|
p.product_name,
|
po.nps_no
|
</select>
|
<select id="selectWorkOrderStartStats" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
|
SELECT
|
id,
|
actual_start_time AS planStartTime,
|
plan_quantity
|
FROM
|
product_work_order
|
WHERE
|
actual_start_time >= #{startDate}
|
AND actual_start_time <= #{endDate}
|
</select>
|
<select id="selectMax" resultType="com.ruoyi.production.pojo.ProductWorkOrder">
|
SELECT SUBSTRING(work_order_no, 3) as work_order_no
|
FROM product_work_order
|
WHERE SUBSTRING(work_order_no, 3) like concat(#{datePrefix},'%')
|
order by work_order_no desc
|
limit 1
|
;
|
</select>
|
|
<update id="addCompleteQtyIfNotExceed">
|
update product_work_order
|
set
|
complete_quantity = complete_quantity + #{delta},
|
actual_start_time = ifnull(actual_start_time, now()),
|
actual_end_time = case when (complete_quantity + #{delta}) = plan_quantity then now() else actual_end_time end
|
where id = #{id}
|
and (complete_quantity + #{delta}) <![CDATA[ <= ]]> plan_quantity
|
</update>
|
</mapper>
|