成本模块
This commit is contained in:
523
klp-wms/src/main/resources/mapper/klp/CostCoilDailyMapper.xml
Normal file
523
klp-wms/src/main/resources/mapper/klp/CostCoilDailyMapper.xml
Normal file
@@ -0,0 +1,523 @@
|
||||
<?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.mapper.CostCoilDailyMapper">
|
||||
|
||||
<resultMap type="com.klp.domain.CostCoilDaily" id="CostCoilDailyResult">
|
||||
<result property="costId" column="cost_id"/>
|
||||
<result property="coilId" column="coil_id"/>
|
||||
<result property="currentCoilNo" column="current_coil_no"/>
|
||||
<result property="calcDate" column="calc_date"/>
|
||||
<result property="netWeight" column="net_weight"/>
|
||||
<result property="unitCost" column="unit_cost"/>
|
||||
<result property="dailyCost" column="daily_cost"/>
|
||||
<result property="storageDays" column="storage_days"/>
|
||||
<result property="totalCost" column="total_cost"/>
|
||||
<result property="warehouseId" column="warehouse_id"/>
|
||||
<result property="itemType" column="item_type"/>
|
||||
<result property="materialType" column="material_type"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="com.klp.domain.vo.CostCoilDailyVo" id="CostCoilDailyVoResult">
|
||||
<result property="costId" column="cost_id"/>
|
||||
<result property="coilId" column="coil_id"/>
|
||||
<result property="currentCoilNo" column="current_coil_no"/>
|
||||
<result property="calcDate" column="calc_date"/>
|
||||
<result property="netWeight" column="net_weight"/>
|
||||
<result property="unitCost" column="unit_cost"/>
|
||||
<result property="dailyCost" column="daily_cost"/>
|
||||
<result property="storageDays" column="storage_days"/>
|
||||
<result property="totalCost" column="total_cost"/>
|
||||
<result property="warehouseId" column="warehouse_id"/>
|
||||
<result property="warehouseName" column="warehouse_name"/>
|
||||
<result property="itemType" column="item_type"/>
|
||||
<result property="materialType" column="material_type"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 自定义查询,关联库区名称 -->
|
||||
<select id="selectVoPage" resultType="com.klp.domain.vo.CostCoilDailyVo">
|
||||
SELECT
|
||||
ccd.cost_id,
|
||||
ccd.coil_id,
|
||||
ccd.current_coil_no,
|
||||
ccd.calc_date,
|
||||
ccd.net_weight,
|
||||
ccd.unit_cost,
|
||||
ccd.daily_cost,
|
||||
ccd.storage_days,
|
||||
ccd.total_cost,
|
||||
ccd.warehouse_id,
|
||||
w.warehouse_name,
|
||||
ccd.item_type,
|
||||
ccd.material_type
|
||||
FROM cost_coil_daily ccd
|
||||
LEFT JOIN wms_warehouse w ON ccd.warehouse_id = w.warehouse_id AND w.del_flag = 0
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="selectVoList" resultType="com.klp.domain.vo.CostCoilDailyVo">
|
||||
SELECT
|
||||
ccd.cost_id,
|
||||
ccd.coil_id,
|
||||
ccd.current_coil_no,
|
||||
ccd.calc_date,
|
||||
ccd.net_weight,
|
||||
ccd.unit_cost,
|
||||
ccd.daily_cost,
|
||||
ccd.storage_days,
|
||||
ccd.total_cost,
|
||||
ccd.warehouse_id,
|
||||
w.warehouse_name,
|
||||
ccd.item_type,
|
||||
ccd.material_type
|
||||
FROM cost_coil_daily ccd
|
||||
LEFT JOIN wms_warehouse w ON ccd.warehouse_id = w.warehouse_id AND w.del_flag = 0
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="selectVoById" resultType="com.klp.domain.vo.CostCoilDailyVo">
|
||||
SELECT
|
||||
ccd.cost_id,
|
||||
ccd.coil_id,
|
||||
ccd.current_coil_no,
|
||||
ccd.calc_date,
|
||||
ccd.net_weight,
|
||||
ccd.unit_cost,
|
||||
ccd.daily_cost,
|
||||
ccd.storage_days,
|
||||
ccd.total_cost,
|
||||
ccd.warehouse_id,
|
||||
w.warehouse_name,
|
||||
ccd.item_type,
|
||||
ccd.material_type
|
||||
FROM cost_coil_daily ccd
|
||||
LEFT JOIN wms_warehouse w ON ccd.warehouse_id = w.warehouse_id AND w.del_flag = 0
|
||||
WHERE ccd.cost_id = #{costId}
|
||||
</select>
|
||||
|
||||
<!-- 查询成本统计汇总(基于当前 wms_material_coil 快照) -->
|
||||
<select id="selectCostSummary" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
COUNT(*) AS totalCoils,
|
||||
SUM(t.net_weight_ton) AS totalNetWeight,
|
||||
SUM(t.total_cost_amount) AS totalCost,
|
||||
AVG(t.storage_days) AS avgStorageDays,
|
||||
SUM(t.daily_cost_amount) AS totalDailyCost
|
||||
FROM (
|
||||
SELECT
|
||||
m.coil_id,
|
||||
IFNULL(m.net_weight, 0) / 1000 AS net_weight_ton,
|
||||
(DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1) AS storage_days,
|
||||
CASE
|
||||
WHEN cs.unit_cost IS NULL THEN 0
|
||||
ELSE (
|
||||
CASE
|
||||
WHEN IFNULL(m.gross_weight, 0) > 0 THEN m.gross_weight
|
||||
ELSE IFNULL(m.net_weight, 0)
|
||||
END
|
||||
) / 1000 * cs.unit_cost
|
||||
END AS daily_cost_amount,
|
||||
CASE
|
||||
WHEN cs.unit_cost IS NULL THEN 0
|
||||
ELSE (
|
||||
CASE
|
||||
WHEN IFNULL(m.gross_weight, 0) > 0 THEN m.gross_weight
|
||||
ELSE IFNULL(m.net_weight, 0)
|
||||
END
|
||||
) / 1000 * cs.unit_cost * (DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1)
|
||||
END AS total_cost_amount
|
||||
FROM wms_material_coil m
|
||||
LEFT JOIN cost_standard_config cs
|
||||
ON cs.status = 1
|
||||
AND DATE(m.create_time) >= cs.effective_date
|
||||
AND (cs.expire_date IS NULL OR DATE(m.create_time) <= cs.expire_date)
|
||||
WHERE m.data_type = 1
|
||||
AND m.del_flag = 0
|
||||
AND m.export_time IS NULL
|
||||
<if test="warehouseId != null">
|
||||
AND m.warehouse_id = #{warehouseId}
|
||||
</if>
|
||||
<if test="itemType != null and itemType != ''">
|
||||
AND m.item_type = #{itemType}
|
||||
</if>
|
||||
<if test="materialType != null and materialType != ''">
|
||||
AND m.material_type = #{materialType}
|
||||
</if>
|
||||
) t
|
||||
</select>
|
||||
|
||||
<!-- 按库区统计成本(基于当前 wms_material_coil 快照) -->
|
||||
<select id="selectCostByWarehouse" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
t.warehouse_id AS warehouseId,
|
||||
COALESCE(w.warehouse_name, '-') AS warehouseName,
|
||||
COUNT(*) AS coilCount,
|
||||
SUM(t.total_cost_amount) AS totalCost,
|
||||
AVG(t.storage_days) AS avgStorageDays,
|
||||
SUM(t.net_weight_ton) AS totalNetWeight
|
||||
FROM (
|
||||
SELECT
|
||||
m.coil_id,
|
||||
m.warehouse_id,
|
||||
IFNULL(m.net_weight, 0) / 1000 AS net_weight_ton,
|
||||
(DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1) AS storage_days,
|
||||
CASE
|
||||
WHEN cs.unit_cost IS NULL THEN 0
|
||||
ELSE (
|
||||
CASE
|
||||
WHEN IFNULL(m.gross_weight, 0) > 0 THEN m.gross_weight
|
||||
ELSE IFNULL(m.net_weight, 0)
|
||||
END
|
||||
) / 1000 * cs.unit_cost * (DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1)
|
||||
END AS total_cost_amount
|
||||
FROM wms_material_coil m
|
||||
LEFT JOIN cost_standard_config cs
|
||||
ON cs.status = 1
|
||||
AND DATE(m.create_time) >= cs.effective_date
|
||||
AND (cs.expire_date IS NULL OR DATE(m.create_time) <= cs.expire_date)
|
||||
WHERE m.data_type = 1
|
||||
AND m.del_flag = 0
|
||||
AND m.export_time IS NULL
|
||||
) t
|
||||
LEFT JOIN wms_warehouse w ON t.warehouse_id = w.warehouse_id
|
||||
GROUP BY t.warehouse_id, w.warehouse_name
|
||||
ORDER BY totalCost DESC
|
||||
</select>
|
||||
|
||||
<!-- 按物品类型统计成本(基于当前 wms_material_coil 快照) -->
|
||||
<select id="selectCostByItemType" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
t.item_type AS itemType,
|
||||
COUNT(*) AS coilCount,
|
||||
SUM(t.total_cost_amount) AS totalCost,
|
||||
AVG(t.storage_days) AS avgStorageDays,
|
||||
SUM(t.net_weight_ton) AS totalNetWeight
|
||||
FROM (
|
||||
SELECT
|
||||
m.coil_id,
|
||||
m.item_type,
|
||||
IFNULL(m.net_weight, 0) / 1000 AS net_weight_ton,
|
||||
(DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1) AS storage_days,
|
||||
CASE
|
||||
WHEN cs.unit_cost IS NULL THEN 0
|
||||
ELSE (
|
||||
CASE
|
||||
WHEN IFNULL(m.gross_weight, 0) > 0 THEN m.gross_weight
|
||||
ELSE IFNULL(m.net_weight, 0)
|
||||
END
|
||||
) / 1000 * cs.unit_cost * (DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1)
|
||||
END AS total_cost_amount
|
||||
FROM wms_material_coil m
|
||||
LEFT JOIN cost_standard_config cs
|
||||
ON cs.status = 1
|
||||
AND DATE(m.create_time) >= cs.effective_date
|
||||
AND (cs.expire_date IS NULL OR DATE(m.create_time) <= cs.expire_date)
|
||||
WHERE m.data_type = 1
|
||||
AND m.del_flag = 0
|
||||
AND m.export_time IS NULL
|
||||
) t
|
||||
GROUP BY t.item_type
|
||||
ORDER BY totalCost DESC
|
||||
</select>
|
||||
|
||||
<!-- 检查指定日期和钢卷的成本记录是否存在 -->
|
||||
<select id="countByCoilIdAndDate" resultType="int">
|
||||
SELECT COUNT(1)
|
||||
FROM cost_coil_daily
|
||||
WHERE coil_id = #{coilId}
|
||||
AND calc_date = #{calcDate}
|
||||
</select>
|
||||
|
||||
<!-- 按入场钢卷号统计成本 -->
|
||||
<select id="selectCostByEnterCoilNo" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
mc.enter_coil_no AS enterCoilNo,
|
||||
COUNT(DISTINCT mc.coil_id) AS coilCount,
|
||||
COUNT(DISTINCT CASE WHEN mc.export_time IS NULL THEN mc.coil_id END) AS unshippedCount,
|
||||
COUNT(DISTINCT CASE WHEN mc.export_time IS NOT NULL THEN mc.coil_id END) AS shippedCount,
|
||||
SUM(ccd.total_cost) AS totalCost,
|
||||
SUM(ccd.net_weight) AS totalNetWeight,
|
||||
AVG(ccd.storage_days) AS avgStorageDays,
|
||||
MAX(ccd.calc_date) AS lastCalcDate
|
||||
FROM cost_coil_daily ccd
|
||||
INNER JOIN wms_material_coil mc ON ccd.coil_id = mc.coil_id
|
||||
WHERE ccd.calc_date BETWEEN #{startDate} AND #{endDate}
|
||||
AND mc.data_type = 1
|
||||
AND mc.del_flag = 0
|
||||
<if test="enterCoilNo != null and enterCoilNo != ''">
|
||||
AND mc.enter_coil_no = #{enterCoilNo}
|
||||
</if>
|
||||
GROUP BY mc.enter_coil_no
|
||||
ORDER BY totalCost DESC
|
||||
</select>
|
||||
|
||||
<select id="selectStockpileByEnterCoilNo" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
t.enter_coil_no AS enterCoilNo,
|
||||
COUNT(*) AS coilCount,
|
||||
SUM(t.net_weight_ton) AS totalNetWeight,
|
||||
SUM(t.gross_weight_ton) AS totalGrossWeight,
|
||||
SUM(t.cost_amount) AS totalCost,
|
||||
AVG(t.storage_days) AS avgStorageDays,
|
||||
MAX(t.storage_days) AS maxStorageDays
|
||||
FROM (
|
||||
SELECT
|
||||
m.enter_coil_no,
|
||||
IFNULL(m.net_weight, 0) / 1000 AS net_weight_ton,
|
||||
IFNULL(m.gross_weight, 0) / 1000 AS gross_weight_ton,
|
||||
CASE
|
||||
WHEN cs.unit_cost IS NULL THEN 0
|
||||
ELSE (
|
||||
CASE
|
||||
WHEN IFNULL(m.gross_weight, 0) > 0 THEN m.gross_weight
|
||||
ELSE IFNULL(m.net_weight, 0)
|
||||
END
|
||||
) / 1000 * cs.unit_cost * (DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1)
|
||||
END AS cost_amount,
|
||||
(DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1) AS storage_days
|
||||
FROM wms_material_coil m
|
||||
LEFT JOIN cost_standard_config cs
|
||||
ON cs.status = 1
|
||||
AND DATE(m.create_time) >= cs.effective_date
|
||||
AND (cs.expire_date IS NULL OR DATE(m.create_time) <= cs.expire_date)
|
||||
WHERE m.data_type = 1
|
||||
AND m.del_flag = 0
|
||||
AND m.export_time IS NULL
|
||||
<if test="enterCoilNo != null and enterCoilNo != ''">
|
||||
AND m.enter_coil_no LIKE CONCAT(#{enterCoilNo}, '%')
|
||||
</if>
|
||||
) t
|
||||
GROUP BY t.enter_coil_no
|
||||
ORDER BY t.enter_coil_no DESC
|
||||
LIMIT #{offset}, #{pageSize}
|
||||
</select>
|
||||
|
||||
<!-- 囤积成本(按入场钢卷号聚合)列表总数 -->
|
||||
<select id="countStockpileByEnterCoilNo" resultType="long">
|
||||
SELECT
|
||||
COUNT(*) AS cnt
|
||||
FROM (
|
||||
SELECT m.enter_coil_no
|
||||
FROM wms_material_coil m
|
||||
WHERE m.data_type = 1
|
||||
AND m.del_flag = 0
|
||||
AND m.export_time IS NULL
|
||||
<if test="enterCoilNo != null and enterCoilNo != ''">
|
||||
AND m.enter_coil_no LIKE CONCAT(#{enterCoilNo}, '%')
|
||||
</if>
|
||||
GROUP BY m.enter_coil_no
|
||||
) t
|
||||
</select>
|
||||
|
||||
<!-- 囤积成本(按入场钢卷号聚合)汇总 -->
|
||||
<select id="selectStockpileSummaryByEnterCoilNo" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
SUM(t.net_weight_ton) AS totalNetWeight,
|
||||
SUM(t.gross_weight_ton) AS totalGrossWeight,
|
||||
SUM(t.cost_amount) AS totalCost,
|
||||
AVG(t.storage_days) AS avgStorageDays
|
||||
FROM (
|
||||
SELECT
|
||||
IFNULL(m.net_weight, 0) / 1000 AS net_weight_ton,
|
||||
IFNULL(m.gross_weight, 0) / 1000 AS gross_weight_ton,
|
||||
CASE
|
||||
WHEN cs.unit_cost IS NULL THEN 0
|
||||
ELSE (
|
||||
CASE
|
||||
WHEN IFNULL(m.gross_weight, 0) > 0 THEN m.gross_weight
|
||||
ELSE IFNULL(m.net_weight, 0)
|
||||
END
|
||||
) / 1000 * cs.unit_cost * (DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1)
|
||||
END AS cost_amount,
|
||||
(DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1) AS storage_days
|
||||
FROM wms_material_coil m
|
||||
LEFT JOIN cost_standard_config cs
|
||||
ON cs.status = 1
|
||||
AND DATE(m.create_time) >= cs.effective_date
|
||||
AND (cs.expire_date IS NULL OR DATE(m.create_time) <= cs.expire_date)
|
||||
WHERE m.data_type = 1
|
||||
AND m.del_flag = 0
|
||||
AND m.export_time IS NULL
|
||||
<if test="enterCoilNo != null and enterCoilNo != ''">
|
||||
AND m.enter_coil_no LIKE CONCAT(#{enterCoilNo}, '%')
|
||||
</if>
|
||||
) t
|
||||
</select>
|
||||
|
||||
<select id="selectOverviewFromMaterialCoil" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
COUNT(*) AS totalCoils,
|
||||
SUM(t.net_weight_ton) AS totalNetWeight,
|
||||
SUM(t.gross_weight_ton) AS totalGrossWeight,
|
||||
AVG(t.storage_days) AS avgStorageDays,
|
||||
SUM(t.cost_amount) AS totalCost
|
||||
FROM (
|
||||
SELECT
|
||||
IFNULL(m.net_weight, 0) / 1000 AS net_weight_ton,
|
||||
IFNULL(m.gross_weight, 0) / 1000 AS gross_weight_ton,
|
||||
(DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1) AS storage_days,
|
||||
CASE
|
||||
WHEN cs.unit_cost IS NULL THEN 0
|
||||
ELSE (
|
||||
CASE
|
||||
WHEN IFNULL(m.gross_weight, 0) > 0 THEN m.gross_weight
|
||||
ELSE IFNULL(m.net_weight, 0)
|
||||
END
|
||||
) / 1000 * cs.unit_cost * (DATEDIFF(CURDATE(), IFNULL(m.create_time, CURDATE())) + 1)
|
||||
END AS cost_amount
|
||||
FROM wms_material_coil m
|
||||
LEFT JOIN cost_standard_config cs
|
||||
ON cs.status = 1
|
||||
AND DATE(m.create_time) >= cs.effective_date
|
||||
AND (cs.expire_date IS NULL OR DATE(m.create_time) <= cs.expire_date)
|
||||
WHERE m.data_type = 1
|
||||
AND m.del_flag = 0
|
||||
AND m.export_time IS NULL
|
||||
) t
|
||||
</select>
|
||||
|
||||
<!-- 成本趋势(按日统计 cost_coil_daily) -->
|
||||
<select id="selectCostTrend" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
ccd.calc_date AS date,
|
||||
SUM(ccd.total_cost) AS totalCost,
|
||||
SUM(ccd.net_weight) AS totalNetWeight,
|
||||
SUM(ccd.daily_cost) AS totalDailyCost
|
||||
FROM cost_coil_daily ccd
|
||||
WHERE 1 = 1
|
||||
<if test="startDate != null">
|
||||
AND ccd.calc_date >= #{startDate}
|
||||
</if>
|
||||
<if test="endDate != null">
|
||||
AND ccd.calc_date <= #{endDate}
|
||||
</if>
|
||||
GROUP BY ccd.calc_date
|
||||
ORDER BY ccd.calc_date
|
||||
</select>
|
||||
|
||||
<!-- ==================== 成本检索(实时计算) ==================== -->
|
||||
<sql id="MaterialCoilCostBase">
|
||||
SELECT
|
||||
m.enter_coil_no,
|
||||
m.coil_id,
|
||||
m.current_coil_no,
|
||||
IFNULL(m.net_weight, 0) / 1000 AS net_weight_ton,
|
||||
IFNULL(m.gross_weight, 0) / 1000 AS gross_weight_ton,
|
||||
CASE
|
||||
WHEN IFNULL(m.gross_weight, 0) > 0 THEN 'gross'
|
||||
ELSE 'net'
|
||||
END AS weight_basis,
|
||||
CASE
|
||||
WHEN IFNULL(m.gross_weight, 0) > 0 THEN IFNULL(m.gross_weight, 0)
|
||||
ELSE IFNULL(m.net_weight, 0)
|
||||
END / 1000 AS charge_weight_ton,
|
||||
DATE(m.create_time) AS start_date,
|
||||
CASE
|
||||
WHEN m.export_time IS NOT NULL THEN DATE_SUB(DATE(m.export_time), INTERVAL 1 DAY)
|
||||
WHEN #{calcDate} IS NOT NULL THEN #{calcDate}
|
||||
ELSE CURDATE()
|
||||
END AS raw_end_date,
|
||||
CASE
|
||||
WHEN m.export_time IS NULL THEN 0
|
||||
ELSE 1
|
||||
END AS is_shipped,
|
||||
IFNULL(cs.unit_cost, 0) AS unit_cost,
|
||||
m.warehouse_id,
|
||||
COALESCE(w.warehouse_name, '-') AS warehouse_name
|
||||
FROM wms_material_coil m
|
||||
LEFT JOIN cost_standard_config cs
|
||||
ON cs.status = 1
|
||||
AND DATE(m.create_time) >= cs.effective_date
|
||||
AND (cs.expire_date IS NULL OR DATE(m.create_time) <= cs.expire_date)
|
||||
LEFT JOIN wms_warehouse w ON w.warehouse_id = m.warehouse_id AND w.del_flag = 0
|
||||
WHERE m.data_type = 1
|
||||
AND m.del_flag = 0
|
||||
AND m.enter_coil_no IS NOT NULL
|
||||
<if test="enterCoilNo != null and enterCoilNo != ''">
|
||||
AND m.enter_coil_no LIKE CONCAT(#{enterCoilNo}, '%')
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<sql id="MaterialCoilCostCalc">
|
||||
SELECT
|
||||
base.*,
|
||||
CASE
|
||||
WHEN base.raw_end_date < base.start_date THEN base.start_date
|
||||
ELSE base.raw_end_date
|
||||
END AS end_date,
|
||||
CASE
|
||||
WHEN DATEDIFF(
|
||||
CASE
|
||||
WHEN base.raw_end_date < base.start_date THEN base.start_date
|
||||
ELSE base.raw_end_date
|
||||
END,
|
||||
base.start_date
|
||||
) < 0 THEN 1
|
||||
ELSE DATEDIFF(
|
||||
CASE
|
||||
WHEN base.raw_end_date < base.start_date THEN base.start_date
|
||||
ELSE base.raw_end_date
|
||||
END,
|
||||
base.start_date
|
||||
) + 1
|
||||
END AS storage_days
|
||||
FROM (
|
||||
<include refid="MaterialCoilCostBase"/>
|
||||
) base
|
||||
</sql>
|
||||
|
||||
<select id="selectMaterialCostSummary" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
COUNT(*) AS totalCoils,
|
||||
IFNULL(SUM(calc_data.net_weight_ton), 0) AS totalNetWeight,
|
||||
IFNULL(SUM(calc_data.gross_weight_ton), 0) AS totalGrossWeight,
|
||||
IFNULL(SUM(calc_data.charge_weight_ton * calc_data.unit_cost * calc_data.storage_days), 0) AS totalCost,
|
||||
IFNULL(AVG(calc_data.storage_days), 0) AS avgStorageDays,
|
||||
IFNULL(SUM(CASE WHEN calc_data.is_shipped = 1 THEN 1 ELSE 0 END), 0) AS shippedCount,
|
||||
IFNULL(SUM(CASE WHEN calc_data.is_shipped = 0 THEN 1 ELSE 0 END), 0) AS unshippedCount
|
||||
FROM (
|
||||
<include refid="MaterialCoilCostCalc"/>
|
||||
) calc_data
|
||||
</select>
|
||||
|
||||
<select id="countMaterialCostCards" resultType="long">
|
||||
SELECT COUNT(1)
|
||||
FROM (
|
||||
<include refid="MaterialCoilCostCalc"/>
|
||||
) calc_data
|
||||
</select>
|
||||
|
||||
<select id="selectMaterialCostCards" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
calc_data.enter_coil_no AS enterCoilNo,
|
||||
calc_data.coil_id AS coilId,
|
||||
calc_data.current_coil_no AS currentCoilNo,
|
||||
calc_data.net_weight_ton AS netWeightTon,
|
||||
calc_data.gross_weight_ton AS grossWeightTon,
|
||||
calc_data.weight_basis AS weightBasis,
|
||||
calc_data.storage_days AS storageDays,
|
||||
ROUND(calc_data.unit_cost, 2) AS unitCost,
|
||||
ROUND(calc_data.charge_weight_ton * calc_data.unit_cost, 2) AS dailyCost,
|
||||
ROUND(calc_data.charge_weight_ton * calc_data.unit_cost * calc_data.storage_days, 2) AS totalCost,
|
||||
calc_data.is_shipped AS isShipped,
|
||||
calc_data.start_date AS startDate,
|
||||
calc_data.end_date AS endDate,
|
||||
calc_data.warehouse_id AS warehouseId,
|
||||
calc_data.warehouse_name AS warehouseName
|
||||
FROM (
|
||||
<include refid="MaterialCoilCostCalc"/>
|
||||
) calc_data
|
||||
ORDER BY calc_data.start_date DESC, calc_data.current_coil_no DESC
|
||||
LIMIT #{offset}, #{pageSize}
|
||||
</select>
|
||||
|
||||
<!-- 删除指定日期的成本记录 -->
|
||||
<delete id="deleteByCalcDate">
|
||||
DELETE FROM cost_coil_daily
|
||||
WHERE calc_date = #{calcDate}
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
<?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.mapper.CostStandardConfigMapper">
|
||||
|
||||
<resultMap type="com.klp.domain.CostStandardConfig" id="CostStandardConfigResult">
|
||||
<result property="configId" column="config_id"/>
|
||||
<result property="unitCost" column="unit_cost"/>
|
||||
<result property="effectiveDate" column="effective_date"/>
|
||||
<result property="expireDate" column="expire_date"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="com.klp.domain.vo.CostStandardConfigVo" id="CostStandardConfigVoResult">
|
||||
<result property="configId" column="config_id"/>
|
||||
<result property="unitCost" column="unit_cost"/>
|
||||
<result property="effectiveDate" column="effective_date"/>
|
||||
<result property="expireDate" column="expire_date"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 查询指定日期的有效成本标准 -->
|
||||
<select id="selectEffectiveByDate" resultMap="CostStandardConfigVoResult">
|
||||
SELECT *
|
||||
FROM cost_standard_config
|
||||
WHERE del_flag = 0
|
||||
AND status = 1
|
||||
AND effective_date <= #{date}
|
||||
AND (expire_date IS NULL OR expire_date >= #{date})
|
||||
ORDER BY effective_date DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 查询当前有效的成本标准 -->
|
||||
<select id="selectCurrentEffective" resultMap="CostStandardConfigVoResult">
|
||||
SELECT *
|
||||
FROM cost_standard_config
|
||||
WHERE del_flag = 0
|
||||
AND status = 1
|
||||
AND effective_date <= CURDATE()
|
||||
AND (expire_date IS NULL OR expire_date >= CURDATE())
|
||||
ORDER BY effective_date DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user