Files
klp-oa/klp-pocket/src/main/resources/mapper/pocket/Klptcm1PdoExcoilMapper.xml

128 lines
5.7 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="com.klp.pocket.mapper.Klptcm1PdoExcoilMapper">
<!-- 生产统计汇总 -->
<resultMap id="ProductionStatisticsResultMap" type="com.klp.pocket.domain.vo.ProductionStatisticsVo">
<result column="coilCount" property="coilCount" jdbcType="BIGINT"/>
<result column="avgWidth" property="avgWidth" jdbcType="DECIMAL"/>
<result column="avgThick" property="avgThick" jdbcType="DECIMAL"/>
<result column="totalEntryWeight" property="totalEntryWeight" jdbcType="DECIMAL"/>
<result column="totalExitWeight" property="totalExitWeight" jdbcType="DECIMAL"/>
<result column="yieldRate" property="yieldRate" jdbcType="DECIMAL"/>
</resultMap>
<select id="selectProductionStatistics" resultMap="ProductionStatisticsResultMap">
SELECT
COUNT(*) AS coilCount,
ROUND(AVG(EXIT_WIDTH), 2) AS avgWidth,
ROUND(AVG(EXIT_THICK), 2) AS avgThick,
ROUND(SUM(ENTRY_WEIGHT), 2) AS totalEntryWeight,
ROUND(SUM(EXIT_WEIGHT), 2) AS totalExitWeight,
ROUND(SUM(EXIT_WEIGHT) / SUM(ENTRY_WEIGHT) * 100, 2) AS yieldRate
FROM klptcm1_pdo_excoil
WHERE DATE(INSDATE) BETWEEN #{startDate} AND #{endDate}
</select>
<!-- 班组产量统计 -->
<resultMap id="CrewProductionResultMap" type="com.klp.pocket.domain.vo.CrewProductionVo">
<result column="crew" property="crew" jdbcType="VARCHAR"/>
<result column="shift" property="shift" jdbcType="VARCHAR"/>
<result column="coilCount" property="coilCount" jdbcType="BIGINT"/>
<result column="totalWeight" property="totalWeight" jdbcType="DECIMAL"/>
<result column="avgThick" property="avgThick" jdbcType="DECIMAL"/>
<result column="avgWidth" property="avgWidth" jdbcType="DECIMAL"/>
</resultMap>
<select id="selectCrewProduction" resultMap="CrewProductionResultMap">
SELECT
CREW AS crew,
SHIFT AS shift,
COUNT(*) AS coilCount,
ROUND(SUM(EXIT_WEIGHT), 2) AS totalWeight,
ROUND(AVG(EXIT_THICK), 2) AS avgThick,
ROUND(AVG(EXIT_WIDTH), 2) AS avgWidth
FROM klptcm1_pdo_excoil
WHERE DATE(INSDATE) BETWEEN #{startDate} AND #{endDate}
GROUP BY CREW, SHIFT
ORDER BY totalWeight DESC
</select>
<!-- 厚度分布统计 -->
<resultMap id="SpecDistributionResultMap" type="com.klp.pocket.domain.vo.SpecDistributionVo">
<result column="category" property="category" jdbcType="VARCHAR"/>
<result column="count" property="count" jdbcType="BIGINT"/>
</resultMap>
<select id="selectThicknessDistribution" resultMap="SpecDistributionResultMap">
SELECT
CASE
WHEN EXIT_THICK &lt; 0.8 THEN '0.5-0.8mm'
WHEN EXIT_THICK &lt; 1.0 THEN '0.8-1.0mm'
WHEN EXIT_THICK &lt; 1.2 THEN '1.0-1.2mm'
WHEN EXIT_THICK &lt; 1.5 THEN '1.2-1.5mm'
ELSE '1.5mm以上'
END AS category,
COUNT(*) AS count
FROM klptcm1_pdo_excoil
WHERE DATE(INSDATE) BETWEEN #{startDate} AND #{endDate}
GROUP BY category
ORDER BY category
</select>
<!-- 宽度分布统计 -->
<select id="selectWidthDistribution" resultMap="SpecDistributionResultMap">
SELECT
CASE
WHEN EXIT_WIDTH &lt; 1000 THEN '800-1000mm'
WHEN EXIT_WIDTH &lt; 1200 THEN '1000-1200mm'
WHEN EXIT_WIDTH &lt; 1400 THEN '1200-1400mm'
ELSE '1400mm以上'
END AS category,
COUNT(*) AS count
FROM klptcm1_pdo_excoil
WHERE DATE(INSDATE) BETWEEN #{startDate} AND #{endDate}
GROUP BY category
ORDER BY category
</select>
<!-- 班组绩效统计 -->
<resultMap id="TeamPerformanceResultMap" type="com.klp.pocket.domain.vo.TeamPerformanceVo">
<result column="crew" property="crew" jdbcType="VARCHAR"/>
<result column="shift" property="shift" jdbcType="VARCHAR"/>
<result column="teamName" property="teamName" jdbcType="VARCHAR"/>
<result column="output" property="output" jdbcType="DECIMAL"/>
<result column="yieldRate" property="yieldRate" jdbcType="DECIMAL"/>
<result column="passRate" property="passRate" jdbcType="DECIMAL"/>
<result column="avgThickQuality" property="avgThickQuality" jdbcType="DECIMAL"/>
<result column="avgShapeQuality" property="avgShapeQuality" jdbcType="DECIMAL"/>
<result column="efficiency" property="efficiency" jdbcType="BIGINT"/>
<result column="score" property="score" jdbcType="DECIMAL"/>
</resultMap>
<select id="selectTeamPerformance" resultMap="TeamPerformanceResultMap">
SELECT
CREW AS crew,
SHIFT AS shift,
CONCAT(CREW, '-', SHIFT) AS teamName,
ROUND(SUM(EXIT_WEIGHT), 2) AS output,
ROUND(SUM(EXIT_WEIGHT) / SUM(ENTRY_WEIGHT) * 100, 2) AS yieldRate,
ROUND(AVG(THICK_QUALITY), 2) AS passRate,
ROUND(AVG(THICK_QUALITY), 2) AS avgThickQuality,
ROUND(AVG(SHAPE_QUALITY), 2) AS avgShapeQuality,
COUNT(*) AS efficiency,
ROUND(
(SUM(EXIT_WEIGHT) / SUM(ENTRY_WEIGHT) * 30) +
(AVG(THICK_QUALITY) * 0.4) +
(AVG(SHAPE_QUALITY) * 0.3),
2
) AS score
FROM klptcm1_pdo_excoil
WHERE DATE(INSDATE) BETWEEN #{startDate} AND #{endDate}
GROUP BY CREW, SHIFT
ORDER BY score DESC
</select>
</mapper>