heli-mes/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/taskdispatch/TaskDispatchDetailMapper.xml
2026-01-21 08:59:47 +08:00

273 lines
16 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<update id="updateOwnerAndPostIdById" parameterType="Long">
update pro_task_dispatch_detail set
<if test="type == 1">owner = null</if>
<if test="type == 2">post_id = null</if>
WHERE id =#{id}
</update>
<select id="planBbPage" resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO">
SELECT d.code AS projectCode,
d.project_name AS projectName,
j.plan_no AS taskNo, 0 AS planType,
e.name AS projectSubName,
c.material_name AS materialName,
f.name AS procdureName,
t.work_time AS workTime,
t.owner,
b.dispatch_type as type,
t.amount AS amount,
COALESCE(SUM(CASE WHEN h.work_time IS NULL THEN 0 ELSE h.work_time END), 0) AS bgWorkTime,
COALESCE(SUM(CASE WHEN h.amount IS NULL THEN 0 ELSE h.amount END), 0) AS bgAmount,
t.procedure_status AS wgType, t.end_time AS endTime
FROM pro_task_dispatch_detail t
LEFT JOIN pro_task_dispatch b ON (b.id = t.dispatch_id AND b.tenant_id = 2 AND b.deleted = 0)
LEFT JOIN pro_task_report h ON (h.dispatch_detail_id = t.id AND h.tenant_id = 2 AND h.deleted = 0)
LEFT JOIN pro_process_bom_detail c ON (c.id = b.bom_detail_id AND c.tenant_id = 2 AND c.deleted = 0)
LEFT JOIN project_sale_order d ON (d.id = b.project_id AND d.tenant_id = 2 AND d.deleted = 0)
LEFT JOIN project_sale_order_sub e ON (e.id = b.project_sub_id AND e.tenant_id = 2 AND e.deleted = 0)
LEFT JOIN base_procedure f ON (f.id = t.procedure_id AND f.tenant_id = 2 AND f.deleted = 0)
LEFT JOIN project_plan_task g ON (g.id = b.task_id AND g.tenant_id = 2 AND g.deleted = 0)
LEFT JOIN project_plan j ON (j.id = b.plan_id AND j.tenant_id = 2 AND j.deleted = 0)
WHERE t.deleted = 0 AND t.tenant_id = 2
<if test="reqVO.projectCode != null and reqVO.projectCode != ''">
AND d.code = #{reqVO.projectCode}
</if>
<if test="reqVO.projectName != null and reqVO.projectName != ''">
AND d.project_name = #{reqVO.projectName}
</if>
<if test="reqVO.taskNo != null and reqVO.taskNo != ''">
AND j.plan_no = #{reqVO.taskNo}
</if>
<if test="reqVO.projectSubName != null and reqVO.projectSubName != ''">
AND e.name = #{reqVO.projectSubName}
</if>
<if test="reqVO.materialName != null and reqVO.materialName != ''">
AND c.material_name = #{reqVO.materialName}
</if>
<if test="reqVO.owner != null and reqVO.owner != ''">
AND t.owner = #{reqVO.owner}
</if>
GROUP BY t.id
limit #{reqVO.pageNo},#{reqVO.pageSize}
</select>
<select id="planBb" resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO">
SELECT d.code AS projectCode,
d.project_name AS projectName,
j.plan_no AS taskNo, 0 AS planType,
e.name AS projectSubName,
c.material_name AS materialName,
f.name AS procdureName,
t.work_time AS workTime,
t.owner,
t.amount AS amount,
COALESCE(SUM(CASE WHEN h.work_time IS NULL THEN 0 ELSE h.work_time END), 0) AS bgWorkTime,
COALESCE(SUM(CASE WHEN h.amount IS NULL THEN 0 ELSE h.amount END), 0) AS bgAmount,
t.procedure_status AS wgType, t.end_time AS endTime
FROM pro_task_dispatch_detail t
LEFT JOIN pro_task_dispatch b ON (b.id = t.dispatch_id AND b.tenant_id = 2 AND b.deleted = 0)
LEFT JOIN pro_task_report h ON (h.dispatch_detail_id = t.id AND h.tenant_id = 2 AND h.deleted = 0)
LEFT JOIN pro_process_bom_detail c ON (c.id = b.bom_detail_id AND c.tenant_id = 2 AND c.deleted = 0)
LEFT JOIN project_sale_order d ON (d.id = b.project_id AND d.tenant_id = 2 AND d.deleted = 0)
LEFT JOIN project_sale_order_sub e ON (e.id = b.project_sub_id AND e.tenant_id = 2 AND e.deleted = 0)
LEFT JOIN base_procedure f ON (f.id = t.procedure_id AND f.tenant_id = 2 AND f.deleted = 0)
LEFT JOIN project_plan_task g ON (g.id = b.task_id AND g.tenant_id = 2 AND g.deleted = 0)
LEFT JOIN project_plan j ON (j.id = b.plan_id AND j.tenant_id = 2 AND j.deleted = 0)
WHERE t.deleted = 0 AND t.tenant_id = 2
<if test="reqVO.projectCode != null and reqVO.projectCode != ''">
AND d.code = #{reqVO.projectCode}
</if>
<if test="reqVO.projectName != null and reqVO.projectName != ''">
AND d.project_name = #{reqVO.projectName}
</if>
<if test="reqVO.taskNo != null and reqVO.taskNo != ''">
AND j.plan_no = #{reqVO.taskNo}
</if>
<if test="reqVO.projectSubName != null and reqVO.projectSubName != ''">
AND e.name = #{reqVO.projectSubName}
</if>
<if test="reqVO.materialName != null and reqVO.materialName != ''">
AND c.material_name = #{reqVO.materialName}
</if>
<if test="reqVO.owner != null and reqVO.owner != ''">
AND t.owner = #{reqVO.owner}
</if>
GROUP BY t.id
</select>
<select id="sumAssembleReport" parameterType="java.util.List" resultType="java.util.HashMap">
select t.dispatch_detail_id as detailId,count(t.id) as amount from pro_task_report t where t.dispatch_detail_id in
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
and t.has_report = 1
group by t.dispatch_detail_id
</select>
<select id="assemblyLaborCost" resultType="java.math.BigDecimal">
SELECT sum(COALESCE(r.work_time, 0) * p.grade_cost) cost
from
pro_task_report r
left join system_user_post u on u.user_id=r.owner and u.deleted=0 and u.tenant_id=2
left join system_post p on p.id=u.post_id and u.deleted=0 and p.tenant_id=2 and p.status=0
where r.deleted=0 and r.dispatch_detail_id=#{id}
</select>
<select id="bubbleFees" resultType="java.math.BigDecimal">
SELECT
SUM(COALESCE(p.mat_weight, 0) * COALESCE(c.price, 0)) AS cost
FROM
pro_process_bom_detail t
LEFT JOIN project_material_plan_boom p ON p.boom_detail_id = t.id
AND p.deleted = 0
AND p.tenant_id = 2
LEFT JOIN base_composition c ON t.composition_id = c.id
AND c.deleted = 0
AND c.tenant_id = 2
WHERE
t.type = 2
AND p.boom_detail_id =#{bomDetailId} and p.procedure_id=#{procedureId}
</select>
<select id="materialCost" resultType="java.math.BigDecimal">
SELECT sum(r.work_time) cost
from pro_task_dispatch t
left join pro_task_dispatch_detail t1 on t.id=t1.dispatch_id and t1.deleted=0 and t1.tenant_id=2
left join pro_task_report r on r.dispatch_detail_id=t1.id and r.deleted=0 and r.tenant_id=2
where t1.is_outsourcing='Y' and t.deleted=0 and t.dispatch_type='PRODUCTION' and r.work_type=2 and t1.id=#{id}
</select>
<select id="internalLaborCost" resultType="java.math.BigDecimal">
SELECT sum(COALESCE(r.work_time, 0) * p.grade_cost) cost
from pro_task_dispatch t
left join pro_task_dispatch_detail t1 on t.id=t1.dispatch_id and t1.deleted=0 and t1.tenant_id=2
left join pro_task_report r on r.dispatch_detail_id=t1.id and r.deleted=0 and r.tenant_id=2
left join system_user_post u on u.user_id=r.owner and u.deleted=0 and u.tenant_id=2
left join system_post p on p.id=u.post_id and u.deleted=0 and p.tenant_id=2 and p.status=0
where t1.is_outsourcing='N' and t.deleted=0 and t.dispatch_type='PRODUCTION' and r.work_type=1 and t1.id=#{id}
</select>
<select id="finalInspection" resultType="java.math.BigDecimal">
SELECT sum(COALESCE(t.work_time, 0) * p.grade_cost) cost
FROM quality_zj_pg_master_line g
LEFT JOIN quality_zj_bg_master_line t ON t.zj_mx_id = g.id and t.deleted = 0 and t.tenant_id = 2
left join system_user_post u on u.user_id=t.bg_user and u.deleted=0 and u.tenant_id=2
left join system_post p on p.id=u.post_id and u.deleted=0 and p.tenant_id=2 and p.status=0
where g.deleted = 0 and g.project_id=#{id} and g.project_sub_id= #{projectSubId}
</select>
<select id="processInspection" resultType="java.math.BigDecimal">
SELECT sum(COALESCE(t.work_time, 0) * p.grade_cost) cost
FROM quality_pg_master_line g
LEFT JOIN quality_bg_master_line t ON t.zj_mx_id = g.id and t.deleted = 0 and t.tenant_id = 2
left join system_user_post u on u.user_id=t.bg_user and u.deleted=0 and u.tenant_id=2
left join system_post p on p.id=u.post_id and u.deleted=0 and p.tenant_id=2 and p.status=0
where g.deleted = 0 and g.dispatch_detail_id=#{id}
</select>
<select id="materialCosts" resultType="java.math.BigDecimal">
SELECT
ROUND(SUM(unit_price * total_storage), 1) AS cost
FROM (
SELECT
ROUND(t.estimated_price / t.purchase_amount, 1) AS unit_price,
SUM(s.storage_amount) AS total_storage
FROM project_purchase_order_no_detail t
JOIN project_storage_in_detail s on s.purchase_order_no_detail_id=t.id and s.deleted=0 and s.tenant_id=2
left join pro_process_bom_detail d on d.id=t.boom_detail_id
where t.deleted=0 and t.tenant_id=2 and d.type=2 and t.boom_detail_id=#{bomDetailId} and t.procedure_id=#{procedureId}
GROUP BY s.id
) AS subquery;
</select>
<select id="batchBubbleFees"
resultType="com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.BubbleFeeResult">
SELECT
p.boom_detail_id AS bomDetailId,
p.procedure_id AS procedureId,
SUM(COALESCE(p.mat_weight, 0) * COALESCE(c.price, 0)) AS cost
FROM
pro_process_bom_detail t
LEFT JOIN project_material_plan_boom p ON p.boom_detail_id = t.id
AND p.deleted = 0
AND p.tenant_id = 2
LEFT JOIN base_composition c ON t.composition_id = c.id
AND c.deleted = 0
AND c.tenant_id = 2
WHERE
t.type = 2
AND p.boom_detail_id in
<foreach collection="bomDetailIds" item="bomDetailId" open="(" close=")" separator=",">
#{bomDetailId}
</foreach>
and p.procedure_id in
<foreach collection="procedureIds" item="procedureId" open="(" close=")" separator=",">
#{procedureId}
</foreach>
GROUP BY p.boom_detail_id, p.procedure_id
</select>
<select id="batchMaterialCosts"
resultType="com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.BubbleFeeResult">
SELECT
subquery.bomDetailId AS bomDetailId,
subquery.procedureId AS procedureId,
ROUND(SUM(unit_price * total_storage), 1) AS cost
FROM (
SELECT
ROUND(t.estimated_price / t.purchase_amount, 1) AS unit_price,
SUM(s.storage_amount) AS total_storage,
t.boom_detail_id AS bomDetailId,
t.procedure_id AS procedureId
FROM project_purchase_order_no_detail t
JOIN project_storage_in_detail s on s.purchase_order_no_detail_id=t.id and s.deleted=0 and s.tenant_id=2
left join pro_process_bom_detail d on d.id=t.boom_detail_id
where t.deleted=0 and t.tenant_id=2 and d.type=2 and t.boom_detail_id in
<foreach collection="bomDetailIds" item="bomDetailId" open="(" close=")" separator=",">
#{bomDetailId}
</foreach>
and t.procedure_id in
<foreach collection="procedureIds" item="procedureId" open="(" close=")" separator=",">
#{procedureId}
</foreach>
GROUP BY s.id
) AS subquery
GROUP BY subquery.bomDetailId, subquery.procedureId;
</select>
<select id="batchInternalLaborCost" resultType="com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.BubbleFeeResult">
SELECT t1.id as dispatchDetailId,sum(COALESCE(r.work_time, 0) * p.grade_cost) cost
from pro_task_dispatch t
left join pro_task_dispatch_detail t1 on t.id=t1.dispatch_id and t1.deleted=0 and t1.tenant_id=2
left join pro_task_report r on r.dispatch_detail_id=t1.id and r.deleted=0 and r.tenant_id=2
left join system_user_post u on u.user_id=r.owner and u.deleted=0 and u.tenant_id=2
left join system_post p on p.id=u.post_id and u.deleted=0 and p.tenant_id=2 and p.status=0
where t1.is_outsourcing='N' and t.deleted=0 and t.dispatch_type='PRODUCTION' and r.work_type=1 and t1.id in
<foreach collection="bomDetailIds" item="bomDetailId" open="(" close=")" separator=",">
#{bomDetailId}
</foreach>
group by t1.id
</select>
<select id="batchProcessInspection" resultType="com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.BubbleFeeResult">
SELECT g.dispatch_detail_id as dispatchDetailId,sum(COALESCE(t.work_time, 0) * p.grade_cost) cost
FROM quality_pg_master_line g
LEFT JOIN quality_bg_master_line t ON t.zj_mx_id = g.id and t.deleted = 0 and t.tenant_id = 2
left join system_user_post u on u.user_id=t.bg_user and u.deleted=0 and u.tenant_id=2
left join system_post p on p.id=u.post_id and u.deleted=0 and p.tenant_id=2 and p.status=0
where g.deleted = 0 and g.dispatch_detail_id in
<foreach collection="bomDetailIds" item="bomDetailId" open="(" close=")" separator=",">
#{bomDetailId}
</foreach>
group by g.dispatch_detail_id
</select>
<select id="cuttingMaterialsBatch"
resultType="com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.BubbleFeeResult">
SELECT t1.id as dispatchDetailId,COALESCE(sum(r.report_price),0) cost
from pro_task_dispatch t
left join pro_task_dispatch_detail t1 on t.id=t1.dispatch_id and t1.deleted=0 and t1.tenant_id=2
left join pro_task_in_report r on r.dispatch_detail_id=t1.id and r.deleted=0 and r.tenant_id=2
where t1.is_outsourcing='N' and t.deleted=0 and t.dispatch_type='PRODUCTION' and t1.id in
<foreach collection="bomDetailIds" item="bomDetailId" open="(" close=")" separator=",">
#{bomDetailId}
</foreach>
group by t1.id
</select>
</mapper>