<?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.ProductionProductMainMapper">
|
|
<resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductionProductMain">
|
<id property="id" column="id"/>
|
<result property="productNo" column="product_no"/>
|
<result property="userId" column="user_id"/>
|
<result property="workOrderId" column="work_order_id"/>
|
<result property="tenantId" column="tenant_id"/>
|
<result property="createTime" column="create_time"/>
|
<result property="status" column="status"/>
|
<result property="reportStartTime" column="report_start_time"/>
|
<result property="reportEndTime" column="report_end_time"/>
|
<result property="reportDurationMinutes" column="report_duration_minutes"/>
|
</resultMap>
|
|
<select id="listPageProductionProductMainDto" resultType="com.ruoyi.production.dto.ProductionProductMainDto">
|
select
|
min(ppm.id) as id,
|
null as productNo,
|
min(ppm.user_id) as userId,
|
min(ppm.work_order_id) as workOrderId,
|
min(ppm.status) as status,
|
min(ppm.report_start_time) as reportStartTime,
|
max(ppm.report_end_time) as reportEndTime,
|
sum(ifnull(ppm.report_duration_minutes, 0)) as reportDurationMinutes,
|
max(pwo.work_order_no) as workOrderNo,
|
max(po.nps_no) as productOrderNpsNo,
|
max(pwo.status) as workOrderStatus,
|
max(u.nick_name) as nickName,
|
max(p.product_name) as productName,
|
max(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 process,
|
max(pm.model) as productModelName,
|
sum(ifnull(ppo.quantity, 0)) as quantity,
|
sum(ifnull(ppo.scrap_qty, 0)) as scrapQty,
|
sum(ifnull(ppo.quantity, 0)) as outputTotalQuantity,
|
sum(ifnull(ppo.scrap_qty, 0)) as scrapTotalQuantity,
|
round(ifnull((
|
select sum(ifnull(pri.planned_work_hours, 0))
|
from product_process_route_item pri
|
where pri.product_order_id = po.id
|
), 0), 2) as projectTotalHours,
|
ifnull(max(pp.salary_quota), 0) as processStandardHours,
|
round(sum(ifnull(ppm.report_duration_minutes, 0)) / 60, 2) as actualReportHours,
|
round(ifnull((
|
select sum(d.duration_minutes)
|
from production_product_report_daily d
|
where d.user_id = ppm.user_id
|
and d.report_date = curdate()
|
), 0) / 60, 2) as dailyPersonHours,
|
max(pm.unit) as unit,
|
max(sl.sales_contract_no) as salesContractNo
|
from
|
production_product_main ppm
|
left join product_work_order pwo on pwo.id = ppm.work_order_id
|
left join product_process_route_item ppri on ppri.id = pwo.product_process_route_item_id
|
left join product_process pp on pp.id = ppri.process_id
|
left join product_order po on po.id = pwo.product_order_id
|
left join production_product_output ppo on ppm.id = ppo.product_main_id
|
left join product_model pm on pm.id = ppo.product_model_id
|
left join product p on p.id = pm.product_id
|
left join sales_ledger sl on sl.id = po.sales_ledger_id
|
left join sys_user u on u.user_id = ppm.user_id
|
<where>
|
<if test="c.nickName != null and c.nickName != ''">
|
and u.nick_name like concat('%',#{c.nickName},'%')
|
</if>
|
<if test="c.workOrderNo != null and c.workOrderNo != ''">
|
and pwo.work_order_no like concat('%',#{c.workOrderNo},'%')
|
</if>
|
<if test="c.workOrderStatus != null and c.workOrderStatus != ''">
|
and pwo.status = #{c.workOrderStatus}
|
</if>
|
<if test="c.status != null and c.status != ''">
|
and ppm.status = #{c.status}
|
</if>
|
<if test="c.userId != null">
|
and ppm.user_id = #{c.userId}
|
</if>
|
</where>
|
group by ppm.work_order_id, po.sales_ledger_id, po.sale_ledger_product_id, ppm.user_id
|
order by max(ppm.id) desc
|
</select>
|
|
<select id="listPageProductionProductMainDetailDto" resultType="com.ruoyi.production.dto.ProductionProductMainDto">
|
select
|
ppm.*,
|
pwo.work_order_no as workOrderNo,
|
po.nps_no as productOrderNpsNo,
|
pwo.status as workOrderStatus,
|
u.nick_name as nickName,
|
p.product_name as productName,
|
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 process,
|
pm.model as productModelName,
|
ppo.quantity,
|
ppo.scrap_qty as scrapQty,
|
ppo.quantity as outputTotalQuantity,
|
ppo.scrap_qty as scrapTotalQuantity,
|
pm.unit,
|
sl.sales_contract_no salesContractNo,
|
round(ifnull((
|
select sum(ifnull(pri.planned_work_hours, 0))
|
from product_process_route_item pri
|
where pri.product_order_id = po.id
|
), 0), 2) as projectTotalHours,
|
ifnull(pp.salary_quota, 0) as processStandardHours,
|
round(ifnull(ppm.report_duration_minutes, 0) / 60, 2) as actualReportHours,
|
round(ifnull((
|
select sum(d.duration_minutes)
|
from production_product_report_daily d
|
where d.user_id = ppm.user_id
|
and d.report_date = curdate()
|
), 0) / 60, 2) as dailyPersonHours
|
from production_product_main ppm
|
left join product_work_order pwo on pwo.id = ppm.work_order_id
|
left join product_process_route_item ppri on ppri.id = pwo.product_process_route_item_id
|
left join product_process pp on pp.id = ppri.process_id
|
left join product_order po on po.id = pwo.product_order_id
|
left join production_product_output ppo on ppm.id = ppo.product_main_id
|
left join product_model pm on pm.id = ppo.product_model_id
|
left join product p on p.id = pm.product_id
|
left join sales_ledger sl on sl.id = po.sales_ledger_id
|
left join sys_user u on u.user_id = ppm.user_id
|
<where>
|
<if test="c.workOrderId != null">
|
and ppm.work_order_id = #{c.workOrderId}
|
</if>
|
<if test="c.userId != null">
|
and ppm.user_id = #{c.userId}
|
</if>
|
<if test="c.startDate != null">
|
and date(ppm.report_end_time) <![CDATA[ >= ]]> #{c.startDate}
|
</if>
|
<if test="c.endDate != null">
|
and date(ppm.report_end_time) <![CDATA[ <= ]]> #{c.endDate}
|
</if>
|
</where>
|
order by ppm.id desc
|
</select>
|
|
<select id="getOrderByMainId" resultType="com.ruoyi.production.pojo.ProductOrder">
|
select po.*
|
from product_order po
|
left join product_work_order pwo on po.id = pwo.product_order_id
|
left join production_product_main pm on work_order_id = pwo.id
|
where pm.id = #{productMainId}
|
</select>
|
<select id="listProductionDetails" resultType="com.ruoyi.production.dto.ProductionProductMainDto">
|
SELECT
|
slpa.scheduling_date,
|
slpa.scheduling_user_name,
|
sl.sales_contract_no,
|
sl.customer_name,
|
p.product_name,
|
pm.model as product_model_name,
|
pm.unit,
|
slpa.process,
|
ppo.quantity,
|
slpa.work_hours,
|
slpa.work_hours * slpa.finished_num AS wages
|
FROM
|
production_product_main ppm
|
LEFT JOIN sales_ledger_production_accounting slpa ON slpa.product_main_id = ppm.id
|
LEFT JOIN production_product_output ppo ON ppm.id = ppo.product_main_id
|
LEFT JOIN product_work_order pwo ON pwo.id = ppm.work_order_id
|
LEFT JOIN product_order po ON po.id = pwo.product_order_id
|
LEFT JOIN process_route pr ON pr.id = po.route_id
|
LEFT JOIN product_model pm ON po.product_model_id = pm.id
|
LEFT JOIN product p ON p.id = pm.product_id
|
LEFT JOIN sales_ledger sl ON po.sales_ledger_id = sl.id
|
<where>
|
<if test="ew.schedulingUserName != null and ew.schedulingUserName !=''">
|
and slpa.scheduling_user_name = #{ew.schedulingUserName}
|
</if>
|
<if test="ew.entryDate != null " >
|
and slpa.scheduling_date >= #{ew.entryDate}
|
and slpa.scheduling_date < DATE_ADD(#{ew.entryDate}, INTERVAL 1 DAY)
|
</if>
|
<if test="ew.entryDateStart != null and ew.entryDateEnd != null" >
|
and slpa.scheduling_date >= #{ew.entryDateStart}
|
and slpa.scheduling_date < date_add(#{ew.entryDateEnd}, INTERVAL 1 DAY)
|
</if>
|
</where>
|
</select>
|
<select id="listMain" resultType="java.lang.Long">
|
SELECT ppm.id FROM production_product_main ppm
|
left join product_work_order pwo on pwo.id = ppm.work_order_id
|
left join product_order po on po.id = pwo.product_order_id
|
left join sales_ledger sl on sl.id = po.sales_ledger_id
|
<where>
|
<if test="idList != null and idList.size() > 0">
|
and sl.id in
|
<foreach item="id" collection="idList" open="(" separator="," close=")">
|
#{id}
|
</foreach>
|
</if>
|
</where>
|
</select>
|
|
<delete id="deleteByWorkOrderIds" parameterType="java.util.List">
|
DELETE FROM production_product_main
|
WHERE work_order_id IN
|
<foreach collection="workOrderIds" item="id" open="(" separator="," close=")">
|
#{id}
|
</foreach>
|
</delete>
|
</mapper>
|