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/test/java/jnpf/limsService/support/LimsSxtQuyangJihuaRenwuServiceChecks.java |  161 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 161 insertions(+), 0 deletions(-)

diff --git a/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/support/LimsSxtQuyangJihuaRenwuServiceChecks.java b/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/support/LimsSxtQuyangJihuaRenwuServiceChecks.java
new file mode 100644
index 0000000..bf071be
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/support/LimsSxtQuyangJihuaRenwuServiceChecks.java
@@ -0,0 +1,161 @@
+package jnpf.limsService.support;
+
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+public class LimsSxtQuyangJihuaRenwuServiceChecks {
+
+    public static void main(String[] args) throws Exception {
+        String contract = read("jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/LimsSxtQuyangJihuaRenwuService.java");
+        require(contract, "wuhuaYishenpiJihua");
+        require(contract, "shengchengDaishengchengQingyandan");
+        require(contract, "quxiaoWeishengchengRenwuByJihua");
+        require(contract, "tihuanWeishengchengRenwuPeizhi");
+
+        String service = read("jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/LimsSxtQuyangJihuaRenwuServiceImpl.java");
+        require(service, "markBlockedPeizhiWuxiao");
+        require(service, "peizhi_wuxiao_zuduan");
+        require(service, "sxtRenwuKuaizhaoAutoSubmit");
+        require(service, "item.setRenwuId(renwu.getId())");
+        require(service, "\"jianyan_xiangmu\", xiangmu.getId()");
+        require(service, "璇烽獙閰嶇疆妫�楠岄」鐩湭缁存姢璐ㄩ噺鏍囧噯");
+        require(service, "xiangmuMap.get(peizhiItem.getXiangmuId())");
+        require(service, "wrapper.in(\"bianma\", xiangmuBianhaoSet)");
+        require(service, "anBianmaChaxunJieguo.get(item.getXiangmuBianhao())");
+        require(service, "xiangmuMap.put(item.getXiangmuId(), xiangmu)");
+        require(service, "璇烽獙閰嶇疆瀛愰」鏈淮鎶よ川閲忔爣鍑嗗瓙椤笽D锛�");
+        require(service, "璇烽獙閰嶇疆瀛愰」鏈淮鎶ゆ楠岄」鐩紪鐮侊細");
+        require(service, "璇烽獙閰嶇疆寮曠敤鐨勬楠岄」鐩笉瀛樺湪鎴栧凡鍒犻櫎");
+        require(service, "kuaizhao.setJianyanXiangmuId(xiangmu.getId())");
+        require(service, "zixiang.getQuyangdianId()");
+        require(service, "鍙栨牱璁″垝瀛愰」鏈繚瀛樺彇鏍风偣ID锛�");
+        require(service, "鍙栨牱鐐规牱鍝佺被鍨嬩笌璁″垝涓嶄竴鑷达細");
+        require(service, "鍙栨牱鐐规墍灞炶溅闂翠笌璁″垝涓嶄竴鑷达細");
+        require(service, "Objects.equals(zixiang.getSuoshuChejian(), quyangdian.getChejianMingchengName())");
+        require(service, "renwu.setSuoshuChejian(quyangdian.getChejianMingchengName())");
+        require(service, "if (hasText(quyangdian.getFuzeGangwei())) {");
+        require(service, "baocunRenyuanKuaizhao(renwu, \"quyang_fuze_gangwei\", null, quyangdian.getFuzeGangwei(), now);");
+        require(service, "peizhiKuaizhaoYizhi(kuaizhao, dangqian)");
+        require(service, "LimsSxtQuyangdianKuaizhaoModel dongjie = JSON.parseObject(");
+        require(service, "kuaizhao.getKuaizhaoShuju(), LimsSxtQuyangdianKuaizhaoModel.class);");
+        require(service, "private Object dangqianPeizhi(String leixing, String id, String tenantId)");
+        require(service, "quyangdianMapper.selectForTaskSnapshot(tenantId, id)");
+        reject(service, "if (\"quyangdian\".equals(leixing)) return quyangdianMapper.selectById(id);");
+        reject(service, "wrapper.in(\"f_id\", xiangmuIds)");
+        reject(service, "璇烽獙閰嶇疆妫�楠岄」鐩甀D宸插彉鍖�");
+        reject(service, "Objects.equals(zixiang.getSuoshuChejian(), quyangdian.getChejianMingcheng())");
+        reject(service, "zixiang.getQuyangdianBianhao(), zixiang.getSuoshuChejian()");
+        reject(service, "ConcurrentHashMap");
+        reject(service, "lims_sxt_quyang_jihua_task");
+
+        String pointMapper = read("jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsMapper/LimsSxtQuyangdianMapper.java");
+        require(pointMapper, "List<LimsSxtQuyangdianVO> selectByLeixingAndChejian(");
+        require(pointMapper, "LimsSxtQuyangdianKuaizhaoModel selectForTaskSnapshot(");
+        require(pointMapper, "@Param(\"quyangdianId\") String quyangdianId");
+        reject(pointMapper, "LimsSxtQuyangdianVO selectForTaskSnapshot(");
+
+        String pointSnapshot = read("jnpf-lims/jnpf-lims-entity/src/main/java/jnpf/limsModel/LimsSxtQuyangdianKuaizhaoModel.java");
+        require(pointSnapshot, "private String id;");
+        require(pointSnapshot, "private String tenantId;");
+        require(pointSnapshot, "private String quyangdianBianhao;");
+        require(pointSnapshot, "private String quyangDidian;");
+        require(pointSnapshot, "private String chejianMingcheng;");
+        require(pointSnapshot, "private String chejianMingchengName;");
+        require(pointSnapshot, "private String lururen;");
+        require(pointSnapshot, "private String leiXing;");
+        require(pointSnapshot, "private Date luruShijian;");
+        require(pointSnapshot, "private String bizEnabled;");
+        require(pointSnapshot, "private String fuzeGangwei;");
+        require(pointSnapshot, "private String bizSign;");
+        reject(pointSnapshot, "flowTaskId");
+        reject(pointSnapshot, "version");
+        reject(pointSnapshot, "creatorTime");
+        reject(pointSnapshot, "lastModifyTime");
+
+        String pointMapperXml = read("jnpf-lims/jnpf-lims-biz/src/main/resources/mapper/LimsSxtQuyangdianMapper.xml");
+        require(pointMapperXml, "<select id=\"selectByLeixingAndChejian\" resultMap=\"quyangdianVOMap\">");
+        require(pointMapperXml, "<resultMap id=\"quyangdianKuaizhaoMap\" type=\"jnpf.limsModel.LimsSxtQuyangdianKuaizhaoModel\">");
+        String pointSnapshotQuery = section(pointMapperXml, "<select id=\"selectForTaskSnapshot\"", "</select>");
+        require(pointSnapshotQuery, "resultMap=\"quyangdianKuaizhaoMap\"");
+        require(pointSnapshotQuery, "p.f_id");
+        require(pointSnapshotQuery, "p.chejian_mingcheng_name");
+        require(pointMapperXml, "p.f_id = #{quyangdianId}");
+        require(pointMapperXml, "INNER JOIN lims_sxt_chejian c");
+        reject(pointSnapshotQuery, "SELECT p.*");
+        reject(pointSnapshotQuery, "p.f_flow_id");
+        reject(pointSnapshotQuery, "p.f_version");
+        reject(pointSnapshotQuery, "p.f_creator_time");
+        reject(pointSnapshotQuery, "p.f_last_modify_time");
+        reject(pointMapperXml, "p.quyangdian_bianhao = #{quyangdianBianhao}");
+        reject(pointMapperXml, "c.mingcheng = #{suoshuChejian}");
+
+        String mapper = read("jnpf-lims/jnpf-lims-biz/src/main/resources/mapper/LimsSxtQuyangJihuaRenwuMapper.xml");
+        require(mapper, "lims_sxt_quyang_jihua_renwu");
+        require(mapper, "FOR UPDATE SKIP LOCKED");
+        require(mapper, "blocked_config_invalid");
+        require(mapper, "<resultMap id=\"BaseResultMap\" type=\"jnpf.limsEntity.LimsSxtQuyangJihuaRenwuEntity\">");
+        require(mapper, "<id column=\"f_id\" property=\"id\"/>");
+        require(mapper, "<result column=\"f_tenant_id\" property=\"fTenantId\"/>");
+        require(mapper, "<result column=\"jihua_riqi\" property=\"jihuaRiqi\"/>");
+        require(mapper, "<result column=\"qingyandan_zhuangtai_tongbu_shijian\" property=\"qingyandanZhuangtaiTongbuShijian\"/>");
+        requireOccurrences(mapper, "resultMap=\"BaseResultMap\"", 4);
+        reject(mapper, "resultType=\"jnpf.limsEntity.LimsSxtQuyangJihuaRenwuEntity\"");
+        requireMappedFields(mapper, read("jnpf-lims/jnpf-lims-entity/src/main/java/jnpf/limsEntity/LimsSxtQuyangJihuaRenwuEntity.java"));
+        reject(mapper, "lims_sxt_quyang_jihua_task");
+    }
+
+    private static String read(String path) throws Exception {
+        Path root = Paths.get(System.getProperty("user.dir"));
+        return new String(Files.readAllBytes(root.resolve(path)), StandardCharsets.UTF_8);
+    }
+
+    private static void require(String content, String expected) {
+        if (!content.contains(expected)) {
+            throw new AssertionError("missing: " + expected);
+        }
+    }
+
+    private static void reject(String content, String unexpected) {
+        if (content.contains(unexpected)) {
+            throw new AssertionError("unexpected: " + unexpected);
+        }
+    }
+
+    private static String section(String content, String start, String end) {
+        int startIndex = content.indexOf(start);
+        if (startIndex < 0) {
+            throw new AssertionError("missing: " + start);
+        }
+        int endIndex = content.indexOf(end, startIndex);
+        if (endIndex < 0) {
+            throw new AssertionError("missing: " + end);
+        }
+        return content.substring(startIndex, endIndex + end.length());
+    }
+
+    private static void requireOccurrences(String content, String expected, int count) {
+        int actual = 0;
+        int index = 0;
+        while ((index = content.indexOf(expected, index)) >= 0) {
+            actual++;
+            index += expected.length();
+        }
+        if (actual != count) {
+            throw new AssertionError("expected " + count + " occurrences of " + expected + ", got " + actual);
+        }
+    }
+
+    private static void requireMappedFields(String mapper, String entity) {
+        for (String sourceLine : entity.split("\\R")) {
+            String line = sourceLine.trim();
+            if (!line.startsWith("private ") || !line.endsWith(";")) {
+                continue;
+            }
+            String declaration = line.substring(0, line.length() - 1);
+            String field = declaration.substring(declaration.lastIndexOf(' ') + 1);
+            require(mapper, "property=\"" + field + "\"");
+        }
+    }
+}

--
Gitblit v1.8.0