<?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.aps.core.mapper.ApsGasPipingRouteStatMapper">
|
|
<resultMap type="com.aps.core.domain.ApsGasPipingRouteStat" id="ApsGasPipingRouteStatResult">
|
<result property="id" column="id" />
|
<result property="workOrderNo" column="work_order_no" />
|
<result property="roadProcessNumber" column="road_process_number" />
|
<result property="currentProcessNumber" column="current_process_number" />
|
<result property="productionQuantity" column="production_quantity" />
|
<result property="standardTime" column="standard_time" />
|
<result property="processTotalTime" column="process_total_time" />
|
<result property="processPlanStartDay" column="process_plan_start_day" />
|
<result property="designTimes" column="design_times" />
|
<result property="delFlag" column="del_flag" />
|
<result property="createBy" column="create_by" />
|
<result property="processName" column="process_name" />
|
<result property="createTime" column="create_time" />
|
<result property="itemNumber" column="item_number" />
|
<result property="standardDosage" column="standard_dosage" />
|
<result property="processTotalDosage" column="process_total_dosage" />
|
<result property="designCapacity" column="design_capacity" />
|
<result property="major" column="major" />
|
<result property="planStartYear" column="plan_start_year" />
|
<result property="planStartMonth" column="plan_start_month" />
|
<result property="planStartDay" column="plan_start_day" />
|
<result property="processPlanEndDay" column="process_plan_end_day" />
|
<result property="orderPlanEndDay" column="order_plan_end_day" />
|
<result property="warning" column="warning" />
|
<result property="plant" column="plant" />
|
<result property="workshop" column="workshop" />
|
<result property="batchNumber" column="batch_number" />
|
</resultMap>
|
|
<sql id="selectApsGasPipingRouteStatVo">
|
select id, work_order_no, road_process_number, current_process_number,
|
production_quantity, standard_time, process_total_time,
|
process_plan_start_day, design_times, del_flag, create_by,
|
process_name, create_time, item_number, standard_dosage,
|
process_total_dosage, design_capacity, major, plan_start_year,
|
plan_start_month, plan_start_day, process_plan_end_day, order_plan_end_day,
|
warning, plant, workshop, batch_number
|
from aps_gas_piping_route_stat
|
</sql>
|
|
<select id="selectApsGasPipingRouteStatList" parameterType="com.aps.core.domain.ApsGasPipingRouteStat" resultMap="ApsGasPipingRouteStatResult">
|
<include refid="selectApsGasPipingRouteStatVo"/>
|
<where>
|
<if test="workOrderNo != null and workOrderNo != ''"> and work_order_no = #{workOrderNo}</if>
|
<if test="roadProcessNumber != null "> and road_process_number = #{roadProcessNumber}</if>
|
<if test="currentProcessNumber != null "> and current_process_number = #{currentProcessNumber}</if>
|
<if test="productionQuantity != null "> and production_quantity = #{productionQuantity}</if>
|
<if test="standardTime != null "> and standard_time = #{standardTime}</if>
|
<if test="processTotalTime != null "> and process_total_time = #{processTotalTime}</if>
|
<if test="processPlanStartDay != null "> and process_plan_start_day = #{processPlanStartDay}</if>
|
<if test="designTimes != null "> and design_times = #{designTimes}</if>
|
<if test="processName != null and processName != ''"> and process_name = #{processName}</if>
|
<if test="itemNumber != null and itemNumber != ''"> and item_number = #{itemNumber}</if>
|
<if test="standardDosage != null "> and standard_dosage = #{standardDosage}</if>
|
<if test="processTotalDosage != null "> and process_total_dosage = #{processTotalDosage}</if>
|
<if test="designCapacity != null "> and design_capacity = #{designCapacity}</if>
|
<if test="major != null and major != ''">
|
<if test="major == 'piping'">
|
and process_name in (select process_name from aps_standard_process where major='管路')
|
</if>
|
<if test="major == 'gas'">
|
and process_name in (select process_name from aps_standard_process where major='气柜')
|
</if>
|
<if test="major != 'piping' and major != 'gas'">
|
and major = #{major}
|
</if>
|
</if>
|
<if test="planStartYear != null and planStartYear != ''"> and plan_start_year = #{planStartYear}</if>
|
<if test="planStartMonth != null and planStartMonth != ''"> and plan_start_month = #{planStartMonth}</if>
|
<if test="planStartDay != null and planStartDay != ''"> and plan_start_day = #{planStartDay}</if>
|
<if test="processPlanEndDay != null "> and process_plan_end_day = #{processPlanEndDay}</if>
|
<if test="orderPlanEndDay != null "> and order_plan_end_day = #{orderPlanEndDay}</if>
|
<if test="warning != null "> and warning = #{warning}</if>
|
<if test="plant != null and plant != ''"> and plant = #{plant}</if>
|
<if test="workshop != null and workshop != ''"> and workshop = #{workshop}</if>
|
<if test="batchNumber != null and batchNumber != ''"> and batch_number = #{batchNumber}</if>
|
</where>
|
</select>
|
|
<select id="selectApsGasPipingRouteStatById" parameterType="String" resultMap="ApsGasPipingRouteStatResult">
|
<include refid="selectApsGasPipingRouteStatVo"/>
|
where id = #{id}
|
</select>
|
|
<insert id="insertApsGasPipingRouteStat" parameterType="com.aps.core.domain.ApsGasPipingRouteStat">
|
insert into aps_gas_piping_route_stat
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<if test="id != null">id,</if>
|
<if test="workOrderNo != null">work_order_no,</if>
|
<if test="roadProcessNumber != null">road_process_number,</if>
|
<if test="currentProcessNumber != null">current_process_number,</if>
|
<if test="productionQuantity != null">production_quantity,</if>
|
<if test="standardTime != null">standard_time,</if>
|
<if test="processTotalTime != null">process_total_time,</if>
|
<if test="processPlanStartDay != null">process_plan_start_day,</if>
|
<if test="designTimes != null">design_times,</if>
|
<if test="delFlag != null">del_flag,</if>
|
<if test="createBy != null">create_by,</if>
|
<if test="processName != null">process_name,</if>
|
<if test="createTime != null">create_time,</if>
|
<if test="itemNumber != null">item_number,</if>
|
<if test="standardDosage != null">standard_dosage,</if>
|
<if test="processTotalDosage != null">process_total_dosage,</if>
|
<if test="designCapacity != null">design_capacity,</if>
|
<if test="major != null">major,</if>
|
<if test="planStartYear != null">plan_start_year,</if>
|
<if test="planStartMonth != null">plan_start_month,</if>
|
<if test="planStartDay != null">plan_start_day,</if>
|
<if test="processPlanEndDay != null">process_plan_end_day,</if>
|
<if test="orderPlanEndDay != null">order_plan_end_day,</if>
|
<if test="warning != null">warning,</if>
|
<if test="plant != null">plant,</if>
|
<if test="workshop != null">workshop,</if>
|
<if test="batchNumber != null">batch_number,</if>
|
</trim>
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<if test="id != null">#{id},</if>
|
<if test="workOrderNo != null">#{workOrderNo},</if>
|
<if test="roadProcessNumber != null">#{roadProcessNumber},</if>
|
<if test="currentProcessNumber != null">#{currentProcessNumber},</if>
|
<if test="productionQuantity != null">#{productionQuantity},</if>
|
<if test="standardTime != null">#{standardTime},</if>
|
<if test="processTotalTime != null">#{processTotalTime},</if>
|
<if test="processPlanStartDay != null">#{processPlanStartDay},</if>
|
<if test="designTimes != null">#{designTimes},</if>
|
<if test="delFlag != null">#{delFlag},</if>
|
<if test="createBy != null">#{createBy},</if>
|
<if test="processName != null">#{processName},</if>
|
<if test="createTime != null">#{createTime},</if>
|
<if test="itemNumber != null">#{itemNumber},</if>
|
<if test="standardDosage != null">#{standardDosage},</if>
|
<if test="processTotalDosage != null">#{processTotalDosage},</if>
|
<if test="designCapacity != null">#{designCapacity},</if>
|
<if test="major != null">#{major},</if>
|
<if test="planStartYear != null">#{planStartYear},</if>
|
<if test="planStartMonth != null">#{planStartMonth},</if>
|
<if test="planStartDay != null">#{planStartDay},</if>
|
<if test="processPlanEndDay != null">#{processPlanEndDay},</if>
|
<if test="orderPlanEndDay != null">#{orderPlanEndDay},</if>
|
<if test="warning != null">#{warning},</if>
|
<if test="plant != null">#{plant},</if>
|
<if test="workshop != null">#{workshop},</if>
|
<if test="batchNumber != null">#{batchNumber},</if>
|
</trim>
|
</insert>
|
|
<update id="updateApsGasPipingRouteStat" parameterType="com.aps.core.domain.ApsGasPipingRouteStat">
|
update aps_gas_piping_route_stat
|
<trim prefix="SET" suffixOverrides=",">
|
<if test="workOrderNo != null">work_order_no = #{workOrderNo},</if>
|
<if test="roadProcessNumber != null">road_process_number = #{roadProcessNumber},</if>
|
<if test="currentProcessNumber != null">current_process_number = #{currentProcessNumber},</if>
|
<if test="productionQuantity != null">production_quantity = #{productionQuantity},</if>
|
<if test="standardTime != null">standard_time = #{standardTime},</if>
|
<if test="processTotalTime != null">process_total_time = #{processTotalTime},</if>
|
<if test="processPlanStartDay != null">process_plan_start_day = #{processPlanStartDay},</if>
|
<if test="designTimes != null">design_times = #{designTimes},</if>
|
<if test="delFlag != null">del_flag = #{delFlag},</if>
|
<if test="createBy != null">create_by = #{createBy},</if>
|
<if test="processName != null">process_name = #{processName},</if>
|
<if test="createTime != null">create_time = #{createTime},</if>
|
<if test="itemNumber != null">item_number = #{itemNumber},</if>
|
<if test="standardDosage != null">standard_dosage = #{standardDosage},</if>
|
<if test="processTotalDosage != null">process_total_dosage = #{processTotalDosage},</if>
|
<if test="designCapacity != null">design_capacity = #{designCapacity},</if>
|
<if test="major != null">major = #{major},</if>
|
<if test="planStartYear != null">plan_start_year = #{planStartYear},</if>
|
<if test="planStartMonth != null">plan_start_month = #{planStartMonth},</if>
|
<if test="planStartDay != null">plan_start_day = #{planStartDay},</if>
|
<if test="processPlanEndDay != null">process_plan_end_day = #{processPlanEndDay},</if>
|
<if test="orderPlanEndDay != null">order_plan_end_day = #{orderPlanEndDay},</if>
|
<if test="warning != null">warning = #{warning},</if>
|
<if test="plant != null">plant = #{plant},</if>
|
<if test="workshop != null">workshop = #{workshop},</if>
|
<if test="batchNumber != null">batch_number = #{batchNumber},</if>
|
</trim>
|
where id = #{id}
|
</update>
|
|
<delete id="deleteApsGasPipingRouteStatById" parameterType="String">
|
delete from aps_gas_piping_route_stat where id = #{id}
|
</delete>
|
|
<delete id="deleteApsGasPipingRouteStatByIds" parameterType="String">
|
delete from aps_gas_piping_route_stat where id in
|
<foreach item="id" collection="array" open="(" separator="," close=")">
|
#{id}
|
</foreach>
|
</delete>
|
|
<delete id="deleteApsGasPipingRouteStatByBatchNum" parameterType="String">
|
delete from aps_gas_piping_route_stat where batch_number != #{batchNumber}
|
</delete>
|
|
<insert id="insertApsGasPipingRouteStatBatch" parameterType="java.util.List">
|
insert into aps_gas_piping_route_stat (
|
id, work_order_no, road_process_number, current_process_number,
|
production_quantity, standard_time, process_total_time,
|
process_plan_start_day, design_times, del_flag, create_by,
|
process_name, create_time, item_number, standard_dosage,
|
process_total_dosage, design_capacity, major, plan_start_year,
|
plan_start_month, plan_start_day, process_plan_end_day, order_plan_end_day,
|
warning, plant, workshop, batch_number
|
) values
|
<foreach item="item" index="index" collection="list" separator=",">
|
(
|
#{item.id}, #{item.workOrderNo}, #{item.roadProcessNumber}, #{item.currentProcessNumber},
|
#{item.productionQuantity}, #{item.standardTime}, #{item.processTotalTime},
|
#{item.processPlanStartDay}, #{item.designTimes}, #{item.delFlag}, #{item.createBy},
|
#{item.processName}, #{item.createTime}, #{item.itemNumber}, #{item.standardDosage},
|
#{item.processTotalDosage}, #{item.designCapacity}, #{item.major}, #{item.planStartYear},
|
#{item.planStartMonth}, #{item.planStartDay}, #{item.processPlanEndDay}, #{item.orderPlanEndDay},
|
#{item.warning}, #{item.plant}, #{item.workshop}, #{item.batchNumber}
|
)
|
</foreach>
|
</insert>
|
|
<delete id="deleteAll">
|
delete from aps_gas_piping_route_stat
|
</delete>
|
|
<select id="queryTempStat" resultMap="ApsGasPipingRouteStatResult" >
|
select row_number() over (partition by rt.work_order_no order by rt.process_number desc ) as num,
|
rt.work_order_no,
|
rt.process_name,
|
cast(rt.process_number as numeric(18, 2)) as road_process_number,
|
cast(rt.process_number as numeric(18, 2)) as route_process_number,
|
cast(pl.process_number as numeric(18, 2)) as current_process_number,
|
pl.production_quantity,
|
rt.standard_time,
|
cast( (rt.standard_time * pl.production_quantity) as numeric(18, 4) ) as process_total_time,
|
rt.process_plan_start_day,
|
rt.process_plan_end_day,
|
pl.plan_end_day as order_plan_end_day,
|
rt.item_no as item_number,
|
pl.plan_type as major,
|
false as warning,
|
pl.plant
|
from aps_gas_piping_plan as pl
|
left join aps_process_route as rt on pl.document_number = rt.work_order_no
|
where pl.document_number is not null and rt.work_order_no is not null and pl.plan_end_day is not null
|
order by rt.work_order_no asc, rt.process_number desc
|
</select>
|
|
<!-- 联合查询手工气体预测数据相关信息 -->
|
<select id="selectPredictionRouteData" resultType="java.util.Map">
|
SELECT
|
p.id as prediction_id,
|
p.material_code,
|
p.factory,
|
p.predict_quantity,
|
p.predict_date,
|
h.route_id,
|
l.route_name as process_name,
|
l.route_num as process_number,
|
l.standard_time,
|
string_agg(DISTINCT m.domain, ';') as domain,
|
string_agg(DISTINCT s.work_shop, ';') as workshop
|
FROM aps_gas_pipeline_prediction p
|
JOIN aps_standard_process_route_header h ON p.material_code = h.item_code AND p.factory = h.org_code
|
JOIN aps_standard_process_route_line l ON h.route_id = l.route_id
|
LEFT JOIN aps_material_product_group_management m ON p.material_code = m.material_code AND p.factory = m.factory
|
LEFT JOIN aps_standard_process s ON l.route_name = s.process_name
|
GROUP BY p.id, p.material_code, p.factory, p.predict_quantity, p.predict_date, h.route_id, l.route_name, l.route_num, l.standard_time
|
ORDER BY p.material_code, l.route_num
|
</select>
|
|
<!-- 联合查询手工气体工单数据相关信息 -->
|
<select id="selectMoRouteData" resultType="java.util.Map">
|
SELECT
|
mo.id as mo_id,
|
mo.mo as work_order_no,
|
mo.material_code,
|
mo.factory,
|
mo.quantity,
|
mo.plan_end,
|
r.process_name,
|
r.process_number,
|
r.standard_time,
|
string_agg(DISTINCT m.domain, ';') as domain,
|
string_agg(DISTINCT s.work_shop, ';') as workshop
|
FROM aps_gas_pipeline_mo mo
|
JOIN aps_process_route r ON mo.mo = r.work_order_no
|
LEFT JOIN aps_material_product_group_management m ON mo.material_code = m.material_code AND mo.factory = m.factory
|
LEFT JOIN aps_standard_process s ON r.process_name = s.process_name
|
GROUP BY mo.id, mo.mo, mo.material_code, mo.factory, mo.quantity, mo.plan_end, r.process_name, r.process_number, r.standard_time
|
ORDER BY mo.mo, r.process_number
|
</select>
|
|
<!-- 聚合查询统计数据 - 按工序名称和时间聚合 -->
|
<select id="selectAggregatedStatData" parameterType="java.util.Map" resultType="java.util.Map">
|
SELECT
|
process_name AS "processName",
|
plan_start_year AS "year",
|
plan_start_month AS "month",
|
<choose>
|
<when test="timeGranularity != null and timeGranularity == 'day'">
|
plan_start_day AS "day"
|
</when>
|
<otherwise>
|
'01' AS "day"
|
</otherwise>
|
</choose>,
|
plant AS "plant",
|
major AS "major",
|
workshop AS "workshop",
|
SUM(process_total_time) AS "totalProcessTime"
|
FROM aps_gas_piping_route_stat
|
<where>
|
<if test="yearStart != null and monthStart != null">
|
(plan_start_year > #{yearStart} OR
|
(plan_start_year = #{yearStart} AND plan_start_month >= #{monthStart}))
|
AND
|
(plan_start_year < #{yearEnd} OR
|
(plan_start_year = #{yearEnd} AND plan_start_month <= #{monthEnd}))
|
</if>
|
<if test="plant != null and plant != ''">
|
AND plant = #{plant}
|
</if>
|
<if test="major != null and major != ''">
|
AND major = #{major}
|
</if>
|
<if test="workshop != null and workshop != ''">
|
AND workshop = #{workshop}
|
</if>
|
</where>
|
GROUP BY
|
process_name,
|
plan_start_year,
|
plan_start_month
|
<if test="timeGranularity != null and timeGranularity == 'day'">
|
, plan_start_day
|
</if>,
|
plant,
|
major,
|
workshop
|
ORDER BY
|
process_name,
|
plan_start_year,
|
plan_start_month
|
<if test="timeGranularity != null and timeGranularity == 'day'">
|
, plan_start_day
|
</if>
|
</select>
|
|
<!-- 查询原始统计数据(不进行聚合)- 用于在Service层自行处理聚合逻辑 -->
|
<select id="selectRawStatData" parameterType="java.util.Map" resultType="java.util.Map">
|
SELECT
|
process_name AS "processName",
|
process_plan_start_day AS "processPlanStartDay",
|
plant AS "plant",
|
major AS "major",
|
workshop AS "workshop",
|
process_total_time AS "processTotalTime"
|
FROM aps_gas_piping_route_stat
|
<where>
|
<if test="yearStart != null and monthStart != null">
|
(EXTRACT(YEAR FROM process_plan_start_day) > #{yearStart} OR
|
(EXTRACT(YEAR FROM process_plan_start_day) = #{yearStart} AND EXTRACT(MONTH FROM process_plan_start_day) >= #{monthStart}))
|
AND
|
(EXTRACT(YEAR FROM process_plan_start_day) < #{yearEnd} OR
|
(EXTRACT(YEAR FROM process_plan_start_day) = #{yearEnd} AND EXTRACT(MONTH FROM process_plan_start_day) <= #{monthEnd}))
|
</if>
|
<if test="plants != null and plants.size() > 0">
|
AND plant IN
|
<foreach collection="plants" item="item" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
</if>
|
<if test="plant != null and plant != ''">
|
AND plant = #{plant}
|
</if>
|
<if test="majors != null and majors.size() > 0">
|
AND major IN
|
<foreach collection="majors" item="item" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
</if>
|
<if test="major != null and major != ''">
|
AND major = #{major}
|
</if>
|
<if test="workshops != null and workshops.size() > 0">
|
AND workshop IN
|
<foreach collection="workshops" item="item" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
</if>
|
<if test="workshop != null and workshop != ''">
|
AND workshop = #{workshop}
|
</if>
|
</where>
|
ORDER BY
|
process_name,
|
process_plan_start_day
|
</select>
|
|
<!-- 查询所有手工气体工单数据 -->
|
<select id="selectAllMoData" resultType="java.util.Map">
|
SELECT
|
id,
|
mo,
|
factory,
|
material_code,
|
plan_end,
|
quantity
|
FROM aps_gas_pipeline_mo
|
</select>
|
|
<!-- 查询基础统计数据(不包含时间限制),用于获取所有可能的工序名和车间 -->
|
<select id="selectBaseStatData" parameterType="java.util.Map" resultType="java.util.Map">
|
SELECT DISTINCT
|
process_name AS "processName",
|
plant AS "plant",
|
major AS "major",
|
workshop AS "workshop"
|
FROM aps_gas_piping_route_stat
|
<where>
|
<if test="plants != null and plants.size() > 0">
|
AND plant IN
|
<foreach collection="plants" item="item" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
</if>
|
<if test="plant != null and plant != ''">
|
AND plant = #{plant}
|
</if>
|
<if test="majors != null and majors.size() > 0">
|
AND major IN
|
<foreach collection="majors" item="item" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
</if>
|
<if test="major != null and major != ''">
|
AND major = #{major}
|
</if>
|
<if test="workshops != null and workshops.size() > 0">
|
AND workshop IN
|
<foreach collection="workshops" item="item" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
</if>
|
<if test="workshop != null and workshop != ''">
|
AND workshop = #{workshop}
|
</if>
|
</where>
|
</select>
|
|
</mapper>
|