348 lines
11 KiB
XML
348 lines
11 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.zg.project.wisdom.mapper.RkStatisticsMapper">
|
|
<!-- 当前入库类型统计 -->
|
|
<select id="statCurrentInByOperationType"
|
|
resultType="com.zg.project.wisdom.domain.vo.StockStatisticGroupVO">
|
|
|
|
SELECT
|
|
ri.operation_type AS groupValue,
|
|
sit.type_name AS groupName,
|
|
|
|
IFNULL(SUM(ri.real_qty * ri.ht_dj), 0) AS totalAmount,
|
|
COUNT(DISTINCT ri.pcode) AS locationCount,
|
|
IFNULL(SUM(ri.real_qty), 0) AS totalQuantity,
|
|
COUNT(DISTINCT ri.xm_no) AS projectCount
|
|
|
|
FROM rk_info ri
|
|
LEFT JOIN stock_in_type sit
|
|
ON sit.type_code = ri.operation_type
|
|
AND sit.status = 1
|
|
|
|
WHERE ri.exec_status = 1
|
|
AND ri.is_chuku = 0
|
|
AND ri.is_delete = 0
|
|
|
|
GROUP BY ri.operation_type, sit.type_name
|
|
|
|
</select>
|
|
|
|
<!-- 当前物资类型统计 -->
|
|
<select id="statCurrentByMaterialType"
|
|
resultType="com.zg.project.wisdom.domain.vo.StockStatisticGroupVO">
|
|
|
|
SELECT
|
|
ri.wl_type AS groupValue,
|
|
mt.type_name AS groupName,
|
|
|
|
IFNULL(SUM(ri.real_qty * ri.ht_dj), 0) AS totalAmount,
|
|
COUNT(DISTINCT ri.pcode) AS locationCount,
|
|
IFNULL(SUM(ri.real_qty), 0) AS totalQuantity,
|
|
COUNT(DISTINCT ri.xm_no) AS projectCount
|
|
|
|
FROM rk_info ri
|
|
LEFT JOIN material_type mt
|
|
ON mt.type_code = ri.wl_type
|
|
AND mt.status = 1
|
|
|
|
WHERE ri.exec_status = 1
|
|
AND ri.is_chuku = 0
|
|
AND ri.is_delete = 0
|
|
|
|
GROUP BY ri.wl_type, mt.type_name
|
|
|
|
</select>
|
|
|
|
|
|
<!-- 入库类型统计(时间) -->
|
|
<select id="statInByOperationType"
|
|
resultType="com.zg.project.wisdom.domain.vo.StockStatisticGroupVO">
|
|
|
|
SELECT
|
|
ri.operation_type AS groupValue,
|
|
sit.type_name AS groupName,
|
|
|
|
IFNULL(SUM(ri.real_qty * ri.ht_dj), 0) AS totalAmount,
|
|
COUNT(DISTINCT ri.pcode) AS locationCount,
|
|
IFNULL(SUM(ri.real_qty), 0) AS totalQuantity,
|
|
COUNT(DISTINCT ri.xm_no) AS projectCount
|
|
|
|
FROM rk_info ri
|
|
LEFT JOIN stock_in_type sit
|
|
ON sit.type_code = ri.operation_type
|
|
AND sit.status = 1
|
|
|
|
WHERE ri.exec_status = 1
|
|
AND ri.is_chuku = 0
|
|
AND ri.is_delete = 0
|
|
|
|
<if test="startDate != null">
|
|
AND ri.operation_time <![CDATA[>=]]> #{startDate}
|
|
</if>
|
|
|
|
<if test="endDate != null">
|
|
AND ri.operation_time <![CDATA[<=]]> #{endDate}
|
|
</if>
|
|
|
|
GROUP BY ri.operation_type, sit.type_name
|
|
|
|
</select>
|
|
|
|
<!-- 出库类型统计(时间) -->
|
|
<select id="statOutByOperationType"
|
|
resultType="com.zg.project.wisdom.domain.vo.StockStatisticGroupVO">
|
|
|
|
SELECT
|
|
rr.operation_type AS groupValue,
|
|
|
|
sot.type_name AS groupName,
|
|
|
|
IFNULL(SUM(rr.real_qty * rr.ht_dj), 0) AS totalAmount,
|
|
|
|
COUNT(DISTINCT rr.pcode) AS locationCount,
|
|
|
|
IFNULL(SUM(rr.real_qty), 0) AS totalQuantity,
|
|
|
|
COUNT(DISTINCT rr.xm_no) AS projectCount
|
|
|
|
FROM rk_record rr
|
|
|
|
LEFT JOIN stock_out_type sot
|
|
ON sot.type_code = rr.operation_type
|
|
AND sot.is_delete = '0'
|
|
|
|
WHERE rr.exec_status = '1'
|
|
AND rr.biz_type = '1' <!-- 出库 -->
|
|
AND rr.is_delete = '0'
|
|
|
|
<if test="startDate != null">
|
|
AND rr.operation_time <![CDATA[>=]]> #{startDate}
|
|
</if>
|
|
|
|
<if test="endDate != null">
|
|
AND rr.operation_time <![CDATA[<=]]> #{endDate}
|
|
</if>
|
|
|
|
GROUP BY rr.operation_type, sot.type_name
|
|
|
|
</select>
|
|
|
|
<select id="statHomeKpi"
|
|
resultType="com.zg.project.wisdom.domain.vo.HomeKpiVO">
|
|
|
|
SELECT
|
|
/* ===== 月入库 ===== */
|
|
COUNT(CASE WHEN rr.biz_type = '0'
|
|
AND DATE_FORMAT(rr.operation_time,'%Y-%m') = DATE_FORMAT(CURDATE(),'%Y-%m')
|
|
THEN 1 END) AS monthInCount,
|
|
|
|
COUNT(DISTINCT CASE WHEN rr.biz_type = '0'
|
|
AND DATE_FORMAT(rr.operation_time,'%Y-%m') = DATE_FORMAT(CURDATE(),'%Y-%m')
|
|
THEN rr.xm_no END) AS monthInProjectCount,
|
|
|
|
IFNULL(SUM(CASE WHEN rr.biz_type = '0'
|
|
AND DATE_FORMAT(rr.operation_time,'%Y-%m') = DATE_FORMAT(CURDATE(),'%Y-%m')
|
|
THEN rr.real_qty * rr.ht_dj END),0) AS monthInAmount,
|
|
|
|
/* ===== 月出库 ===== */
|
|
COUNT(CASE WHEN rr.biz_type = '1'
|
|
AND DATE_FORMAT(rr.operation_time,'%Y-%m') = DATE_FORMAT(CURDATE(),'%Y-%m')
|
|
THEN 1 END) AS monthOutCount,
|
|
|
|
COUNT(DISTINCT CASE WHEN rr.biz_type = '1'
|
|
AND DATE_FORMAT(rr.operation_time,'%Y-%m') = DATE_FORMAT(CURDATE(),'%Y-%m')
|
|
THEN rr.xm_no END) AS monthOutProjectCount,
|
|
|
|
IFNULL(SUM(CASE WHEN rr.biz_type = '1'
|
|
AND DATE_FORMAT(rr.operation_time,'%Y-%m') = DATE_FORMAT(CURDATE(),'%Y-%m')
|
|
THEN rr.real_qty * rr.ht_dj END),0) AS monthOutAmount
|
|
|
|
FROM rk_record rr
|
|
WHERE rr.exec_status = '1'
|
|
AND rr.is_delete = '0'
|
|
|
|
</select>
|
|
|
|
<select id="selectStockAgeStat" resultType="com.zg.project.wisdom.domain.vo.StockAgeStatVO">
|
|
<![CDATA[
|
|
SELECT '10-20天' AS name, COUNT(*) AS value
|
|
FROM rk_info ri
|
|
WHERE ri.is_delete = '0'
|
|
AND ri.is_chuku = '0'
|
|
AND ri.operation_time IS NOT NULL
|
|
AND TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) > 10
|
|
AND TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) <= 20
|
|
|
|
UNION ALL
|
|
SELECT '20-30天' AS name, COUNT(*) AS value
|
|
FROM rk_info ri
|
|
WHERE ri.is_delete = '0'
|
|
AND ri.is_chuku = '0'
|
|
AND ri.operation_time IS NOT NULL
|
|
AND TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) > 20
|
|
AND TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) <= 30
|
|
|
|
UNION ALL
|
|
SELECT '30天以上' AS name, COUNT(*) AS value
|
|
FROM rk_info ri
|
|
WHERE ri.is_delete = '0'
|
|
AND ri.is_chuku = '0'
|
|
AND ri.operation_time IS NOT NULL
|
|
AND TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) > 30
|
|
|
|
UNION ALL
|
|
SELECT '30-60天' AS name, COUNT(*) AS value
|
|
FROM rk_info ri
|
|
WHERE ri.is_delete = '0'
|
|
AND ri.is_chuku = '0'
|
|
AND ri.operation_time IS NOT NULL
|
|
AND TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) > 30
|
|
AND TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) <= 60
|
|
UNION ALL
|
|
SELECT '60天以上' AS name, COUNT(*) AS value
|
|
FROM rk_info ri
|
|
WHERE ri.is_delete = '0'
|
|
AND ri.is_chuku = '0'
|
|
AND ri.operation_time IS NOT NULL
|
|
AND TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) > 60
|
|
]]>
|
|
</select>
|
|
<select id="selectTodoStat" resultType="com.zg.project.wisdom.domain.vo.TodoStatVO">
|
|
<![CDATA[
|
|
SELECT
|
|
'应到未到[部分未到]' AS type,
|
|
COUNT(DISTINCT g.xm_no) AS projectCnt,
|
|
ROUND(
|
|
COALESCE(
|
|
SUM(GREATEST(g.jh_qty - g.real_qty, 0)),
|
|
0
|
|
),
|
|
3
|
|
) AS totalQty,
|
|
ROUND(
|
|
COALESCE(
|
|
SUM(GREATEST(g.jh_qty - g.real_qty, 0) * g.ht_dj),
|
|
0
|
|
),
|
|
3
|
|
) AS totalAmt
|
|
FROM gys_jh g
|
|
WHERE g.is_delete = '0'
|
|
AND g.status = '2'
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
'应到未到[全部未到]' AS type,
|
|
COUNT(DISTINCT g.xm_no) AS projectCnt,
|
|
ROUND(
|
|
COALESCE(
|
|
SUM(g.jh_qty),
|
|
0
|
|
),
|
|
3
|
|
) AS totalQty,
|
|
ROUND(
|
|
COALESCE(
|
|
SUM(g.jh_qty * g.ht_dj),
|
|
0
|
|
),
|
|
3
|
|
) AS totalAmt
|
|
FROM gys_jh g
|
|
WHERE g.is_delete = '0'
|
|
AND g.status = '0'
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
'应出未出[全部未出]' AS type,
|
|
COUNT(DISTINCT g.xm_no) AS projectCnt,
|
|
ROUND(
|
|
COALESCE(
|
|
SUM(g.real_qty),
|
|
0
|
|
),
|
|
3
|
|
) AS totalQty,
|
|
ROUND(
|
|
COALESCE(
|
|
SUM(g.real_qty * g.ht_dj),
|
|
0
|
|
),
|
|
3
|
|
) AS totalAmt
|
|
FROM gys_jh g
|
|
WHERE g.is_delete = '0'
|
|
AND g.status = '1';
|
|
|
|
]]>
|
|
</select>
|
|
<select id="selectWarehouseSlotStat"
|
|
resultType="com.zg.project.wisdom.domain.vo.WarehouseSlotStatVO">
|
|
<![CDATA[
|
|
SELECT
|
|
p.warehouse_code AS cangkuCode,
|
|
p.warehouse_name AS cangkuName,
|
|
|
|
COUNT(DISTINCT p.pcode) AS totalSlot,
|
|
|
|
COUNT(DISTINCT CASE WHEN r.id IS NOT NULL THEN p.pcode END) AS usedSlot,
|
|
|
|
COUNT(DISTINCT p.pcode)
|
|
- COUNT(DISTINCT CASE WHEN r.id IS NOT NULL THEN p.pcode END) AS unusedSlot
|
|
|
|
FROM pcde_detail p
|
|
LEFT JOIN rk_info r
|
|
ON r.pcode = p.pcode
|
|
AND r.cangku = p.warehouse_code
|
|
AND r.is_delete = '0'
|
|
AND r.is_chuku = '0'
|
|
|
|
WHERE p.is_delete = '0'
|
|
AND p.warehouse_name IS NOT NULL
|
|
AND TRIM(p.warehouse_name) <> ''
|
|
|
|
GROUP BY p.warehouse_code, p.warehouse_name
|
|
ORDER BY p.warehouse_code
|
|
]]>
|
|
</select>
|
|
<select id="selectStockAgeExport30"
|
|
resultType="com.zg.project.wisdom.domain.vo.StockAgeExportVO">
|
|
<![CDATA[
|
|
SELECT
|
|
CASE
|
|
WHEN TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) >= 60 THEN '>60天'
|
|
ELSE '>30天'
|
|
END AS stockAgeGroup,
|
|
|
|
ri.id AS id,
|
|
ri.xm_no AS projectNo,
|
|
ri.xm_ms AS projectDesc,
|
|
ri.operation_time AS inTime,
|
|
|
|
TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) AS stockAgeDays,
|
|
|
|
ri.ht_dj AS unitPrice,
|
|
ri.real_qty AS qty,
|
|
ROUND(COALESCE(ri.ht_dj, 0) * COALESCE(ri.real_qty, 0), 3) AS lineAmount,
|
|
|
|
ri.pcode AS slotCode,
|
|
ri.tray_code AS trayCode,
|
|
ri.bill_no AS billNo
|
|
|
|
FROM rk_info ri
|
|
WHERE ri.is_delete = '0'
|
|
AND ri.is_chuku = '0'
|
|
AND ri.operation_time IS NOT NULL
|
|
AND TIMESTAMPDIFF(DAY, ri.operation_time, NOW()) >= 30
|
|
|
|
ORDER BY
|
|
stockAgeGroup DESC,
|
|
stockAgeDays DESC,
|
|
ri.operation_time ASC
|
|
]]>
|
|
</select>
|
|
</mapper>
|