128 lines
5.7 KiB
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 < 0.8 THEN '0.5-0.8mm'
|
|
WHEN EXIT_THICK < 1.0 THEN '0.8-1.0mm'
|
|
WHEN EXIT_THICK < 1.2 THEN '1.0-1.2mm'
|
|
WHEN EXIT_THICK < 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 < 1000 THEN '800-1000mm'
|
|
WHEN EXIT_WIDTH < 1200 THEN '1000-1200mm'
|
|
WHEN EXIT_WIDTH < 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>
|
|
|