🎉 Initial commit
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
<?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="cn.iocoder.yudao.module.mes.dal.mysql.home.MesHomeStatisticsMapper">
|
||||
|
||||
<!-- 按状态统计工单数量 -->
|
||||
<select id="selectWorkOrderCountGroupByStatus" resultType="java.util.Map">
|
||||
SELECT status, COUNT(*) AS count
|
||||
FROM mes_pro_work_order
|
||||
WHERE deleted = 0
|
||||
GROUP BY status
|
||||
</select>
|
||||
|
||||
<!-- 统计报工产量合计 -->
|
||||
<select id="selectFeedbackSummary" resultType="java.util.Map">
|
||||
SELECT IFNULL(SUM(feedback_quantity), 0) AS feedbackQuantity,
|
||||
IFNULL(SUM(qualified_quantity), 0) AS qualifiedQuantity,
|
||||
IFNULL(SUM(unqualified_quantity), 0) AS unqualifiedQuantity
|
||||
FROM mes_pro_feedback
|
||||
WHERE deleted = 0
|
||||
AND status = ${@cn.iocoder.yudao.module.mes.enums.pro.MesProFeedbackStatusEnum@FINISHED.status}
|
||||
AND feedback_time >= #{beginTime}
|
||||
<if test="endTime != null">
|
||||
AND feedback_time < #{endTime}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 按设备状态统计设备台数 -->
|
||||
<select id="selectMachineryCountGroupByStatus" resultType="java.util.Map">
|
||||
SELECT status, COUNT(*) AS count
|
||||
FROM mes_dv_machinery
|
||||
WHERE deleted = 0
|
||||
GROUP BY status
|
||||
</select>
|
||||
|
||||
<!-- 统计未处置安灯记录数 -->
|
||||
<select id="selectAndonActiveCount" resultType="java.lang.Long">
|
||||
SELECT COUNT(*)
|
||||
FROM mes_pro_andon_record
|
||||
WHERE deleted = 0
|
||||
AND status = ${@cn.iocoder.yudao.module.mes.enums.pro.MesProAndonStatusEnum@ACTIVE.status}
|
||||
</select>
|
||||
|
||||
<!-- 统计未完成维修工单数(草稿 0、维修中 1、待验收 2) -->
|
||||
<select id="selectRepairActiveCount" resultType="java.lang.Long">
|
||||
SELECT COUNT(*)
|
||||
FROM mes_dv_repair
|
||||
WHERE deleted = 0
|
||||
AND status IN (${@cn.iocoder.yudao.module.mes.enums.dv.MesDvRepairStatusEnum@PREPARE.status},
|
||||
${@cn.iocoder.yudao.module.mes.enums.dv.MesDvRepairStatusEnum@CONFIRMED.status},
|
||||
${@cn.iocoder.yudao.module.mes.enums.dv.MesDvRepairStatusEnum@APPROVING.status})
|
||||
</select>
|
||||
|
||||
<!-- 按天聚合报工产量 -->
|
||||
<select id="selectDailyFeedbackTrend" resultType="java.util.Map">
|
||||
SELECT DATE_FORMAT(feedback_time, '%Y-%m-%d') AS date,
|
||||
IFNULL(SUM(feedback_quantity), 0) AS quantity,
|
||||
IFNULL(SUM(qualified_quantity), 0) AS qualifiedQuantity,
|
||||
IFNULL(SUM(unqualified_quantity), 0) AS unqualifiedQuantity
|
||||
FROM mes_pro_feedback
|
||||
WHERE deleted = 0
|
||||
AND status = ${@cn.iocoder.yudao.module.mes.enums.pro.MesProFeedbackStatusEnum@FINISHED.status}
|
||||
AND feedback_time >= #{beginTime}
|
||||
<if test="endTime != null">
|
||||
AND feedback_time < #{endTime}
|
||||
</if>
|
||||
GROUP BY DATE_FORMAT(feedback_time, '%Y-%m-%d')
|
||||
ORDER BY date
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,180 @@
|
||||
<?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="cn.iocoder.yudao.module.mes.dal.mysql.qc.pendinginspect.MesQcPendingInspectMapper">
|
||||
|
||||
<!--
|
||||
待检任务查询(UNION ALL 多来源),已实现的来源:
|
||||
1. 到货通知单(IQC):单据状态=PENDING_QC(2),行的 iqc_check_flag=1 且 iqc_id 为空
|
||||
2. 外协入库单(IQC):单据状态=CONFIRMED(1),行的 iqc_check_flag=1 且 iqc_id 为空
|
||||
3. 产品产出行(IPQC):产出行的 quality_status=PENDING(0),通过产出单头→报工关联
|
||||
4. 销售出库单(OQC):单据状态=CONFIRMED(1),行的 oqc_check_flag=1 且 oqc_id 为空
|
||||
5. 生产退料单(RQC):单据状态=CONFIRMED(1),行的 rqc_check_flag=1 且 rqc_id 为空 且 quality_status=0(待检)
|
||||
6. 销售退货单(RQC):单据状态=CONFIRMED(1),行的 rqc_check_flag=1 且 rqc_id 为空 且 quality_status=0(待检)
|
||||
-->
|
||||
<select id="selectQcPendingPage" resultType="cn.iocoder.yudao.module.mes.controller.admin.qc.pendinginspect.vo.MesQcPendingInspectRespVO">
|
||||
SELECT * FROM (
|
||||
<!-- 1. IQC 来源:到货通知单 -->
|
||||
SELECT
|
||||
n.id AS sourceDocId,
|
||||
${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@WM_ARRIVAL_NOTICE} AS sourceDocType,
|
||||
n.code AS sourceDocCode,
|
||||
l.id AS sourceLineId,
|
||||
n.arrival_date AS recordTime,
|
||||
${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IQC.type} AS qcType,
|
||||
l.item_id AS itemId,
|
||||
l.arrival_quantity AS quantity,
|
||||
n.vendor_id AS vendorId,
|
||||
NULL AS workOrderId,
|
||||
NULL AS workstationId,
|
||||
NULL AS taskId,
|
||||
NULL AS clientId
|
||||
FROM mes_wm_arrival_notice n
|
||||
JOIN mes_wm_arrival_notice_line l ON n.id = l.notice_id
|
||||
WHERE n.status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmArrivalNoticeStatusEnum@PENDING_QC.status}
|
||||
AND l.iqc_check_flag = 1
|
||||
AND l.iqc_id IS NULL
|
||||
AND n.deleted = 0
|
||||
AND l.deleted = 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
<!-- 2. IQC 来源:外协入库单 -->
|
||||
SELECT
|
||||
r.id AS sourceDocId,
|
||||
${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@WM_OUTSOURCE_RECPT} AS sourceDocType,
|
||||
r.code AS sourceDocCode,
|
||||
rl.id AS sourceLineId,
|
||||
r.receipt_date AS recordTime,
|
||||
${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IQC.type} AS qcType,
|
||||
rl.item_id AS itemId,
|
||||
rl.quantity AS quantity,
|
||||
r.vendor_id AS vendorId,
|
||||
NULL AS workOrderId,
|
||||
NULL AS workstationId,
|
||||
NULL AS taskId,
|
||||
NULL AS clientId
|
||||
FROM mes_wm_outsource_receipt r
|
||||
JOIN mes_wm_outsource_receipt_line rl ON r.id = rl.receipt_id
|
||||
WHERE r.status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmOutsourceReceiptStatusEnum@CONFIRMED.status}
|
||||
AND rl.iqc_check_flag = 1
|
||||
AND rl.iqc_id IS NULL
|
||||
AND r.deleted = 0
|
||||
AND rl.deleted = 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
<!-- 3. IPQC 来源:产品产出行(quality_status=PENDING) -->
|
||||
SELECT
|
||||
pf.id AS sourceDocId,
|
||||
${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@PRO_FEEDBACK} AS sourceDocType,
|
||||
pf.code AS sourceDocCode,
|
||||
ppl.id AS sourceLineId,
|
||||
pf.feedback_time AS recordTime,
|
||||
${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IPQC.type} AS qcType,
|
||||
ppl.item_id AS itemId,
|
||||
ppl.quantity AS quantity,
|
||||
NULL AS vendorId,
|
||||
pp.work_order_id AS workOrderId,
|
||||
pp.workstation_id AS workstationId,
|
||||
pp.task_id AS taskId,
|
||||
NULL AS clientId
|
||||
FROM mes_wm_product_produce_line ppl
|
||||
JOIN mes_wm_product_produce pp ON ppl.produce_id = pp.id
|
||||
JOIN mes_pro_feedback pf ON pp.feedback_id = pf.id
|
||||
WHERE ppl.quality_status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum@PENDING.status}
|
||||
AND ppl.deleted = 0
|
||||
AND pp.deleted = 0
|
||||
AND pf.deleted = 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
<!-- 4. OQC 来源:销售出库单行(oqc_check_flag=1 且 oqc_id IS NULL) -->
|
||||
SELECT
|
||||
s.id AS sourceDocId,
|
||||
${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@WM_PRODUCT_SALES} AS sourceDocType,
|
||||
s.code AS sourceDocCode,
|
||||
sl.id AS sourceLineId,
|
||||
s.sales_date AS recordTime,
|
||||
${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@OQC.type} AS qcType,
|
||||
sl.item_id AS itemId,
|
||||
sl.quantity AS quantity,
|
||||
NULL AS vendorId,
|
||||
NULL AS workOrderId,
|
||||
NULL AS workstationId,
|
||||
NULL AS taskId,
|
||||
s.client_id AS clientId
|
||||
FROM mes_wm_product_sales s
|
||||
JOIN mes_wm_product_sales_line sl ON s.id = sl.sales_id
|
||||
WHERE sl.oqc_check_flag = 1
|
||||
AND sl.oqc_id IS NULL
|
||||
AND s.status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmProductSalesStatusEnum@CONFIRMED.status}
|
||||
AND s.deleted = 0
|
||||
AND sl.deleted = 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
<!-- 5. RQC 来源:生产退料单行(状态=待检验,行的 rqc_check_flag=1 且 rqc_id IS NULL 且 quality_status=0) -->
|
||||
SELECT
|
||||
ri.id AS sourceDocId,
|
||||
${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@WM_RETURN_ISSUE} AS sourceDocType,
|
||||
ri.code AS sourceDocCode,
|
||||
ril.id AS sourceLineId,
|
||||
ri.return_date AS recordTime,
|
||||
${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@RQC.type} AS qcType,
|
||||
ril.item_id AS itemId,
|
||||
ril.quantity AS quantity,
|
||||
NULL AS vendorId,
|
||||
ri.work_order_id AS workOrderId,
|
||||
ri.workstation_id AS workstationId,
|
||||
NULL AS taskId,
|
||||
NULL AS clientId
|
||||
FROM mes_wm_return_issue ri
|
||||
JOIN mes_wm_return_issue_line ril ON ri.id = ril.issue_id
|
||||
WHERE ri.status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueStatusEnum@CONFIRMED.status}
|
||||
AND ril.rqc_check_flag = 1
|
||||
AND ril.rqc_id IS NULL
|
||||
AND ril.quality_status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum@PENDING.status}
|
||||
AND ri.deleted = 0
|
||||
AND ril.deleted = 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
<!-- 6. RQC 来源:销售退货单(待检验(CONFIRMED),行的 quality_status=0) -->
|
||||
SELECT
|
||||
r.id AS sourceDocId,
|
||||
${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@WM_RETURN_SALES} AS sourceDocType,
|
||||
r.code AS sourceDocCode,
|
||||
rl.id AS sourceLineId,
|
||||
r.return_date AS recordTime,
|
||||
${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@RQC.type} AS qcType,
|
||||
rl.item_id AS itemId,
|
||||
rl.quantity AS quantity,
|
||||
NULL AS vendorId,
|
||||
NULL AS workOrderId,
|
||||
NULL AS workstationId,
|
||||
NULL AS taskId,
|
||||
r.client_id AS clientId
|
||||
FROM mes_wm_return_sales r
|
||||
JOIN mes_wm_return_sales_line rl ON r.id = rl.return_id
|
||||
WHERE r.status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnSalesStatusEnum@CONFIRMED.status}
|
||||
AND rl.rqc_check_flag = 1
|
||||
AND rl.rqc_id IS NULL
|
||||
AND rl.quality_status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum@PENDING.status}
|
||||
AND r.deleted = 0
|
||||
AND rl.deleted = 0
|
||||
) t
|
||||
<where>
|
||||
<if test="sourceDocCode != null and sourceDocCode != ''">
|
||||
AND t.sourceDocCode LIKE CONCAT('%', #{sourceDocCode}, '%')
|
||||
</if>
|
||||
<if test="qcType != null">
|
||||
AND t.qcType = #{qcType}
|
||||
</if>
|
||||
<if test="itemId != null">
|
||||
AND t.itemId = #{itemId}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY t.recordTime DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,42 @@
|
||||
<?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="cn.iocoder.yudao.module.mes.dal.mysql.wm.batch.MesWmBatchMapper">
|
||||
|
||||
<resultMap id="BatchTraceResult" type="cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO">
|
||||
<id property="id" column="batch_id"/>
|
||||
<result property="code" column="batch_code"/>
|
||||
<result property="workOrderId" column="work_order_id"/>
|
||||
<result property="itemId" column="item_id"/>
|
||||
</resultMap>
|
||||
|
||||
<!--
|
||||
向前追溯:从某个原材料批次出发,查找它被哪些工单消耗后,产出了哪些成品批次
|
||||
SQL 路径:消耗明细(icd) → 消耗单(ic) → 报工记录(pf) → 生产入库单(pp) → 入库行(ppl)
|
||||
-->
|
||||
<select id="selectListByForward" parameterType="String" resultMap="BatchTraceResult">
|
||||
SELECT DISTINCT pf.work_order_id, pf.item_id, ppl.batch_id, ppl.batch_code
|
||||
FROM mes_wm_item_consume_detail icd
|
||||
LEFT JOIN mes_wm_item_consume ic ON icd.consume_id = ic.id AND ic.deleted = 0
|
||||
LEFT JOIN mes_pro_feedback pf ON pf.id = ic.feedback_id AND pf.deleted = 0
|
||||
LEFT JOIN mes_wm_product_produce pp ON pp.work_order_id = ic.work_order_id AND pp.deleted = 0
|
||||
LEFT JOIN mes_wm_product_produce_line ppl ON pp.id = ppl.produce_id AND ppl.deleted = 0
|
||||
WHERE icd.batch_code = #{batchCode}
|
||||
AND icd.deleted = 0
|
||||
</select>
|
||||
|
||||
<!--
|
||||
向后追溯:从某个成品批次出发,查找生产它时消耗了哪些原材料批次
|
||||
SQL 路径:入库明细(ppd) → 入库单(pp) → 消耗单(ic) → 消耗明细(icd)
|
||||
-->
|
||||
<select id="selectListByBackward" parameterType="String" resultMap="BatchTraceResult">
|
||||
SELECT DISTINCT ic.work_order_id, icd.item_id, icd.batch_id, icd.batch_code
|
||||
FROM mes_wm_product_produce_detail ppd
|
||||
LEFT JOIN mes_wm_product_produce pp ON ppd.produce_id = pp.id AND pp.deleted = 0
|
||||
LEFT JOIN mes_wm_item_consume ic ON pp.work_order_id = ic.work_order_id AND ic.deleted = 0
|
||||
LEFT JOIN mes_wm_item_consume_detail icd ON ic.id = icd.consume_id AND icd.deleted = 0
|
||||
WHERE ppd.batch_code = #{batchCode}
|
||||
AND ppd.deleted = 0
|
||||
AND icd.batch_code IS NOT NULL
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user