<?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>
|