package jnpf.limsService.support; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import jnpf.limsEntity.LimsSxtKanbanItemVo; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDate; import java.time.ZoneId; import java.util.Date; import java.util.TimeZone; public class LimsSxtKanbanApiChecks { public static void main(String[] args) throws Exception { Path root = Paths.get("").toAbsolutePath().normalize(); String service = read(root, "jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/LimsSxtKanbanService.java"); require(service, "listKanbanRows", "kanban rows contract missing"); require(service, "listKanbanItems", "kanban items contract missing"); require(service, "quxiaoWeilaiRenwu", "future Renwu cancellation contract missing"); String controller = read(root, "jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/limsController/LimsSxtKanbanController.java"); require(controller, "@GetMapping(\"/options\")", "kanban options endpoint missing"); String implementation = read(root, "jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/LimsSxtKanbanServiceImpl.java"); require(implementation, "kanbanMapper.selectRows", "kanban rows must use point master data"); String mapper = read(root, "jnpf-lims/jnpf-lims-biz/src/main/resources/mapper/LimsSxtKanbanMapper.xml"); String sampleTypeQuery = selectBlock(mapper, "selectSampleTypes"); require(sampleTypeQuery, "FROM yangpin_guanli y", "sample types must start from sample master data"); require(sampleTypeQuery, "INNER JOIN qingyan_leixing ql", "sample types must resolve the inspection category"); require(sampleTypeQuery, "y.biz_enabled = 'enabled'", "disabled samples must be excluded"); require(sampleTypeQuery, "ql.fenlei_mingcheng = '水系统'", "sample types must be limited to water system samples"); reject(sampleTypeQuery, "activePointJoins", "sample types must not depend on sampling point configuration"); require(mapper, "FROM lims_sxt_quyangdian p", "kanban rows must start from sampling points"); require(mapper, "p.biz_enabled = 'enabled'", "disabled points must be excluded"); require(mapper, "p.f_delete_mark IS NULL OR p.f_delete_mark <> 1", "deleted points must be excluded"); reject(mapper, "lims_sxt_quyang_jihua_renwu", "kanban master rows must not depend on Renwu"); verifyCalendarDateSerialization(); } private static String read(Path root, String relativePath) throws Exception { return new String(Files.readAllBytes(root.resolve(relativePath))); } private static String selectBlock(String mapper, String id) { int start = mapper.indexOf("