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<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 + "\"");
|
}
|
}
|
}
|