From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-lims/jnpf-lims-biz/src/main/resources/mapper/LimsWendingxingFenxiMapper.xml | 294 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 294 insertions(+), 0 deletions(-)
diff --git a/jnpf-lims/jnpf-lims-biz/src/main/resources/mapper/LimsWendingxingFenxiMapper.xml b/jnpf-lims/jnpf-lims-biz/src/main/resources/mapper/LimsWendingxingFenxiMapper.xml
new file mode 100644
index 0000000..300cd2c
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-biz/src/main/resources/mapper/LimsWendingxingFenxiMapper.xml
@@ -0,0 +1,294 @@
+<?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="jnpf.limsMapper.LimsWendingxingFenxiMapper">
+
+ <resultMap id="optionMap" type="jnpf.limsEntity.LimsWendingxingFenxiOptionVo">
+ <id property="key" column="key"/>
+ <result property="id" column="id"/>
+ <result property="code" column="code"/>
+ <result property="name" column="name"/>
+ <result property="guige" column="guige"/>
+ <result property="shujuLeixing" column="shuju_leixing"/>
+ <result property="unit" column="unit"/>
+ <result property="jihuaId" column="jihua_id"/>
+ <result property="jihuaBianhao" column="jihua_bianhao"/>
+ <result property="fanganMingcheng" column="fangan_mingcheng"/>
+ <result property="pihao" column="pihao"/>
+ </resultMap>
+
+ <resultMap id="rowMap" type="jnpf.limsEntity.LimsWendingxingFenxiRowVo">
+ <result property="yangpinMingcheng" column="yangpin_mingcheng"/>
+ <result property="jihuaId" column="jihua_id"/>
+ <result property="jihuaBianhao" column="jihua_bianhao"/>
+ <result property="pihao" column="pihao"/>
+ <result property="jieguoLuruRiqi" column="jieguo_luru_riqi"/>
+ <result property="zhouqi" column="zhouqi"/>
+ <result property="zhouqiDanwei" column="zhouqi_danwei"/>
+ <result property="xiangmuId" column="xiangmu_id"/>
+ <result property="xiangmuBianma" column="xiangmu_bianma"/>
+ <result property="xiangmuMingcheng" column="xiangmu_mingcheng"/>
+ <result property="rawResult" column="raw_result"/>
+ <result property="shangxian" column="shangxian"/>
+ <result property="xiaxian" column="xiaxian"/>
+ <result property="unit" column="unit"/>
+ <result property="shujuLeixing" column="shuju_leixing"/>
+ <result property="biaozhunId" column="biaozhun_id"/>
+ <result property="jianyanJielun" column="jianyan_jielun"/>
+ <result property="yichangDiaochaLeixing" column="yichang_diaocha_leixing"/>
+ </resultMap>
+
+ <resultMap id="completenessMap" type="jnpf.limsEntity.LimsWendingxingFenxiCompletenessRecordVo">
+ <result property="expectedKey" column="expected_key"/>
+ <result property="jianyanZhuangtai" column="jianyan_zhuangtai"/>
+ <result property="rawResult" column="raw_result"/>
+ <result property="xiangmuId" column="xiangmu_id"/>
+ <result property="zhouqi" column="zhouqi"/>
+ <result property="zhouqiDanwei" column="zhouqi_danwei"/>
+ </resultMap>
+
+ <sql id="approvedPlanWhere">
+ p.f_tenant_id = #{tenantId}
+ AND p.f_flow_state = 2
+ AND COALESCE(p.f_delete_mark, 0) <> 1
+ </sql>
+
+ <sql id="softDeleteYangpin">
+ COALESCE(yp.f_delete_mark, 0) <> 1
+ </sql>
+
+ <select id="selectCategories" resultMap="optionMap">
+ SELECT DISTINCT ql.fenlei_bianma AS id,
+ ql.fenlei_bianma AS key,
+ ql.fenlei_bianma AS code,
+ ql.fenlei_mingcheng AS name
+ FROM lims_wendingxing_kaoca_jihua p
+ INNER JOIN yangpin_guanli yp
+ ON yp.f_id = p.yangpin_id AND yp.f_tenant_id = p.f_tenant_id
+ INNER JOIN qingyan_leixing ql
+ ON yp.leixin = ql.fenlei_bianma AND ql.f_tenant_id = p.f_tenant_id
+ WHERE <include refid="approvedPlanWhere"/>
+ AND <include refid="softDeleteYangpin"/>
+ AND COALESCE(ql.f_delete_mark, 0) <> 1
+ AND ql.biz_enabled = 'enabled'
+ ORDER BY code, name
+ </select>
+
+ <select id="selectProducts" resultMap="optionMap">
+ SELECT DISTINCT yp.f_id AS id,
+ yp.f_id AS key,
+ yp.bianma AS code,
+ yp.mingcheng AS name,
+ yp.guige AS guige
+ FROM lims_wendingxing_kaoca_jihua p
+ INNER JOIN yangpin_guanli yp
+ ON yp.f_id = p.yangpin_id AND yp.f_tenant_id = p.f_tenant_id
+ INNER JOIN qingyan_leixing ql
+ ON yp.leixin = ql.fenlei_bianma AND ql.f_tenant_id = p.f_tenant_id
+ WHERE <include refid="approvedPlanWhere"/>
+ AND <include refid="softDeleteYangpin"/>
+ AND COALESCE(ql.f_delete_mark, 0) <> 1
+ AND ql.biz_enabled = 'enabled'
+ AND ql.fenlei_bianma = #{fenleiBianma}
+ ORDER BY code, name, id
+ </select>
+
+ <select id="selectItems" resultMap="optionMap">
+ SELECT DISTINCT z.f_id AS id,
+ z.f_id AS key,
+ z.jianyan_xiangmu_bianma AS code,
+ z.jianyan_xiangmu_mingcheng AS name,
+ z.shuju_leixing AS shuju_leixing,
+ z.jianyan_danwei AS unit
+ FROM lims_wendingxing_kaoca_jihua p
+ INNER JOIN yangpin_guanli yp
+ ON yp.f_id = p.yangpin_id AND yp.f_tenant_id = p.f_tenant_id
+ INNER JOIN qingyan_leixing ql
+ ON yp.leixin = ql.fenlei_bianma AND ql.f_tenant_id = p.f_tenant_id
+ INNER JOIN lims_wendingxing_kaoca_jiangyan_xiangmu kx
+ ON kx.kaoca_id = p.kaoca_id AND kx.f_tenant_id = p.f_tenant_id
+ INNER JOIN zhiliang_biaozhun_guanli_zixiang z
+ ON z.f_id = kx.zhiliang_biaozhun_guanli_zixiang_id
+ AND z.f_tenant_id = p.f_tenant_id
+ WHERE <include refid="approvedPlanWhere"/>
+ AND <include refid="softDeleteYangpin"/>
+ AND COALESCE(ql.f_delete_mark, 0) <> 1
+ AND COALESCE(kx.f_delete_mark, 0) <> 1
+ AND COALESCE(z.f_delete_mark, 0) <> 1
+ AND TRIM(z.shuju_leixing) = '鏁板��'
+ AND ql.biz_enabled = 'enabled'
+ AND ql.fenlei_bianma = #{fenleiBianma}
+ AND p.yangpin_id = #{yangpinId}
+ ORDER BY name, code, id
+ </select>
+
+ <select id="selectPlans" resultMap="optionMap">
+ SELECT DISTINCT p.f_id AS id,
+ p.f_id AS key,
+ p.bianhao AS code,
+ p.bianhao AS name
+ FROM lims_wendingxing_kaoca_jihua p
+ INNER JOIN lims_wendingxing_kaoca_jiangyan_xiangmu kx
+ ON kx.kaoca_id = p.kaoca_id AND kx.f_tenant_id = p.f_tenant_id
+ WHERE <include refid="approvedPlanWhere"/>
+ AND COALESCE(kx.f_delete_mark, 0) <> 1
+ AND p.yangpin_id = #{yangpinId}
+ <if test="xiangmuIds != null and xiangmuIds.size() > 0">
+ AND kx.zhiliang_biaozhun_guanli_zixiang_id IN
+ <foreach collection="xiangmuIds" item="id" open="(" separator="," close=")">#{id}</foreach>
+ </if>
+ ORDER BY code, id
+ </select>
+
+ <select id="selectBatches" resultMap="optionMap">
+ SELECT DISTINCT p.f_id || '::' || py.pihao AS id,
+ p.f_id || '::' || py.pihao AS key,
+ p.f_id AS jihua_id,
+ p.bianhao AS jihua_bianhao,
+ p.wendingxing_fangan_mingcheng AS fangan_mingcheng,
+ py.pihao AS pihao,
+ py.pihao AS name
+ FROM lims_wendingxing_kaoca_jihua p
+ INNER JOIN lims_wendingxing_kaoca_jihua_yangpin py
+ ON py.kaoca_jihua_id = p.f_id AND py.f_tenant_id = p.f_tenant_id
+ INNER JOIN lims_wendingxing_kaoca_jiangyan_xiangmu kx
+ ON kx.kaoca_id = p.kaoca_id AND kx.f_tenant_id = p.f_tenant_id
+ WHERE <include refid="approvedPlanWhere"/>
+ AND COALESCE(py.f_delete_mark, 0) <> 1
+ AND COALESCE(kx.f_delete_mark, 0) <> 1
+ AND p.yangpin_id = #{yangpinId}
+ <if test="xiangmuIds != null and xiangmuIds.size() > 0">
+ AND kx.zhiliang_biaozhun_guanli_zixiang_id IN
+ <foreach collection="xiangmuIds" item="id" open="(" separator="," close=")">#{id}</foreach>
+ </if>
+ <if test="jihuaIds != null and jihuaIds.size() > 0">
+ AND p.f_id IN
+ <foreach collection="jihuaIds" item="id" open="(" separator="," close=")">#{id}</foreach>
+ </if>
+ ORDER BY jihua_bianhao, jihua_id, pihao
+ </select>
+
+ <select id="selectRows" resultMap="rowMap">
+ SELECT COALESCE(NULLIF(q.chanpin_mingcheng, ''), p.yangpin_mingcheng) AS yangpin_mingcheng,
+ p.f_id AS jihua_id,
+ p.bianhao AS jihua_bianhao,
+ COALESCE(NULLIF(q.pihao, ''), c.pihao) AS pihao,
+ COALESCE(jx.jieguo_luru_riqi, jx.wancheng_riqi) AS jieguo_luru_riqi,
+ COALESCE(NULLIF(q.zhouqi, ''), c.zhouqi::text) AS zhouqi,
+ COALESCE(NULLIF(q.zhouqi_danwei, ''), c.zhouqi_danwei) AS zhouqi_danwei,
+ z.f_id AS xiangmu_id,
+ COALESCE(NULLIF(jx.jianyan_xiangmu_bianma, ''), z.jianyan_xiangmu_bianma) AS xiangmu_bianma,
+ COALESCE(NULLIF(jx.jianyan_xiangmu_mingcheng, ''), z.jianyan_xiangmu_mingcheng) AS xiangmu_mingcheng,
+ jx.jianyan_jieguo AS raw_result,
+ z.biaozhun_shangxian AS shangxian,
+ z.biaozhun_xiaxian AS xiaxian,
+ COALESCE(NULLIF(TRIM(jxm.moren_danwei), ''), '/') AS unit,
+ COALESCE(NULLIF(jx.shuju_leixing, ''), z.shuju_leixing) AS shuju_leixing,
+ z.f_foreign_id AS biaozhun_id,
+ jx.jianyan_jielun AS jianyan_jielun,
+ jx.yichang_diaocha_leixing AS yichang_diaocha_leixing
+ FROM lims_wendingxing_kaoca_jihua p
+ INNER JOIN lims_qingyandan q
+ ON q.wendingxing_jilu_id = p.f_id AND q.f_tenant_id = p.f_tenant_id
+ INNER JOIN lims_wendingxing_kaoca_jihua_zhouqi c
+ ON q.wendingxing_zhouqi_id = c.f_id AND c.f_tenant_id = p.f_tenant_id
+ INNER JOIN lims_jianyan_xiang jx
+ ON jx.qingyandan_id = q.f_id AND jx.f_tenant_id = p.f_tenant_id
+ INNER JOIN zhiliang_biaozhun_guanli_zixiang z
+ ON jx.f_foreign_id = z.f_id AND z.f_tenant_id = p.f_tenant_id
+ LEFT JOIN jianyan_xiangmu_guanli jxm
+ ON jxm.bianma = z.jianyan_xiangmu_bianma
+ AND jxm.f_tenant_id = p.f_tenant_id
+ AND COALESCE(jxm.f_delete_mark, 0) <> 1
+ WHERE <include refid="approvedPlanWhere"/>
+ AND COALESCE(q.f_delete_mark, 0) <> 1
+ AND COALESCE(c.f_delete_mark, 0) <> 1
+ AND COALESCE(jx.f_delete_mark, 0) <> 1
+ AND COALESCE(z.f_delete_mark, 0) <> 1
+ AND q.qingyan_fenlei = 'wendingxing'
+ AND jx.jianyan_zhuangtai = 'audited'
+ AND p.yangpin_id = #{param.yangpinId}
+ AND z.f_id IN
+ <foreach collection="param.xiangmuIds" item="id" open="(" separator="," close=")">#{id}</foreach>
+ <if test="param.jihuaIds != null and param.jihuaIds.size() > 0">
+ AND p.f_id IN
+ <foreach collection="param.jihuaIds" item="id" open="(" separator="," close=")">#{id}</foreach>
+ </if>
+ <if test="param.pihaoKeys != null and param.pihaoKeys.size() > 0">
+ AND
+ <foreach collection="param.pihaoKeys" item="batch" open="(" separator=" OR " close=")">
+ (p.f_id = #{batch.jihuaId} AND COALESCE(NULLIF(q.pihao, ''), c.pihao) = #{batch.pihao})
+ </foreach>
+ </if>
+ ORDER BY xiangmu_mingcheng, xiangmu_bianma, p.bianhao, p.f_id,
+ pihao, c.zhouqi, c.zhouqi_danwei, jieguo_luru_riqi, jx.f_id
+ </select>
+
+ <select id="selectCompleteness" resultMap="completenessMap">
+ WITH mapped AS (
+ SELECT p.f_id AS jihua_id,
+ string_agg(DISTINCT kx.zhiliang_biaozhun_guanli_zixiang_id, ',') AS item_ids
+ FROM lims_wendingxing_kaoca_jihua p
+ INNER JOIN lims_wendingxing_kaoca_jiangyan_xiangmu kx
+ ON kx.kaoca_id = p.kaoca_id AND kx.f_tenant_id = p.f_tenant_id
+ WHERE p.f_tenant_id = #{tenantId}
+ AND p.f_flow_state = 2
+ AND COALESCE(p.f_delete_mark, 0) <> 1
+ AND COALESCE(kx.f_delete_mark, 0) <> 1
+ GROUP BY p.f_id
+ ), expected AS (
+ SELECT p.f_id AS jihua_id,
+ c.f_id AS zhouqi_id,
+ COALESCE(NULLIF(c.pihao, ''), py.pihao) AS pihao,
+ c.zhouqi::text AS zhouqi,
+ c.zhouqi_danwei AS zhouqi_danwei,
+ TRIM(BOTH '"' FROM item.item_id) AS xiangmu_id
+ FROM lims_wendingxing_kaoca_jihua p
+ INNER JOIN lims_wendingxing_kaoca_jihua_zhouqi c
+ ON c.kaoca_jihua_id = p.f_id AND c.f_tenant_id = p.f_tenant_id
+ INNER JOIN lims_wendingxing_kaoca_jihua_yangpin py
+ ON py.kaoca_jihua_id = p.f_id AND py.f_tenant_id = p.f_tenant_id
+ INNER JOIN mapped ON mapped.jihua_id = p.f_id
+ CROSS JOIN LATERAL regexp_split_to_table(
+ COALESCE(NULLIF(TRIM(BOTH '[] ' FROM c.jiancha_xiangmu_ids), ''), mapped.item_ids),
+ '\s*,\s*'
+ ) AS item(item_id)
+ WHERE <include refid="approvedPlanWhere"/>
+ AND COALESCE(c.f_delete_mark, 0) <> 1
+ AND COALESCE(py.f_delete_mark, 0) <> 1
+ AND (NULLIF(c.pihao, '') IS NULL OR c.pihao = py.pihao)
+ AND p.yangpin_id = #{param.yangpinId}
+ AND TRIM(BOTH '"' FROM item.item_id) IN
+ <foreach collection="param.xiangmuIds" item="id" open="(" separator="," close=")">#{id}</foreach>
+ <if test="param.jihuaIds != null and param.jihuaIds.size() > 0">
+ AND p.f_id IN
+ <foreach collection="param.jihuaIds" item="id" open="(" separator="," close=")">#{id}</foreach>
+ </if>
+ <if test="param.pihaoKeys != null and param.pihaoKeys.size() > 0">
+ AND
+ <foreach collection="param.pihaoKeys" item="batch" open="(" separator=" OR " close=")">
+ (p.f_id = #{batch.jihuaId} AND COALESCE(NULLIF(c.pihao, ''), py.pihao) = #{batch.pihao})
+ </foreach>
+ </if>
+ )
+ SELECT e.jihua_id || '::' || e.zhouqi_id || '::' || COALESCE(e.pihao, '') || '::' || e.xiangmu_id AS expected_key,
+ jx.jianyan_zhuangtai AS jianyan_zhuangtai,
+ jx.jianyan_jieguo AS raw_result,
+ e.xiangmu_id AS xiangmu_id,
+ e.zhouqi AS zhouqi,
+ e.zhouqi_danwei AS zhouqi_danwei
+ FROM expected e
+ LEFT JOIN lims_qingyandan q
+ ON q.wendingxing_jilu_id = e.jihua_id
+ AND q.wendingxing_zhouqi_id = e.zhouqi_id
+ AND q.f_tenant_id = #{tenantId}
+ AND COALESCE(NULLIF(q.pihao, ''), e.pihao) = e.pihao
+ AND q.qingyan_fenlei = 'wendingxing'
+ AND COALESCE(q.f_delete_mark, 0) <> 1
+ LEFT JOIN lims_jianyan_xiang jx
+ ON jx.qingyandan_id = q.f_id
+ AND jx.f_foreign_id = e.xiangmu_id
+ AND jx.f_tenant_id = #{tenantId}
+ AND COALESCE(jx.f_delete_mark, 0) <> 1
+ ORDER BY expected_key, jianyan_zhuangtai
+ </select>
+</mapper>
--
Gitblit v1.8.0