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, "请验配置子项未维护质量标准子项ID:"); 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, "请验配置检验项目ID已变化"); 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 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, ""); 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, ""); require(mapper, ""); require(mapper, ""); require(mapper, ""); require(mapper, ""); 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 + "\""); } } }