From 2cc94ee2870999a229865052cfac72d6383deb9b Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Tue, 18 Aug 2026 14:58:17 +0800 Subject: [PATCH] =?UTF-8?q?2026-08-18=20Lab=EF=BC=9A=20=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=8E=BB=E6=8E=89=E2=80=9C=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E2=80=9D=EF=BC=8C=E6=96=B0=E5=A2=9E=E2=80=9C?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E4=BA=BA=E2=80=9D=E5=92=8C=E2=80=9C=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E6=97=A5=E6=9C=9F=E2=80=9D=EF=BC=9B=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=BA=8F=E5=88=97=E5=8F=B7=E8=8E=B7=E5=8F=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/base/dao/TransNoControlDao.java | 8 ++++ .../Impl/TransNoControlServiceImpl.java | 43 +++++++++++++++---- .../lab/service/impl/LabServiceImpl.java | 2 + .../mapper/base/TransNoControlDao.xml | 8 ++++ src/main/resources/mapper/lab/LabMapper.xml | 24 +++++++++++ 5 files changed, 77 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/spring/modules/base/dao/TransNoControlDao.java b/src/main/java/com/spring/modules/base/dao/TransNoControlDao.java index ca28cbf8..3339e081 100644 --- a/src/main/java/com/spring/modules/base/dao/TransNoControlDao.java +++ b/src/main/java/com/spring/modules/base/dao/TransNoControlDao.java @@ -48,4 +48,12 @@ public interface TransNoControlDao { * 自增下一个流水号(用于扩展生成方式) */ void increaseNextNumber(@Param("site") String site, @Param("no") String no); + + /** + * 更新日期流水号状态(日期片段 + 下一个流水号) + */ + void updateDateSerialState(@Param("site") String site, + @Param("no") String no, + @Param("datePart") String datePart, + @Param("nextNumber") Long nextNumber); } diff --git a/src/main/java/com/spring/modules/base/service/Impl/TransNoControlServiceImpl.java b/src/main/java/com/spring/modules/base/service/Impl/TransNoControlServiceImpl.java index bd64aeda..e3511a39 100644 --- a/src/main/java/com/spring/modules/base/service/Impl/TransNoControlServiceImpl.java +++ b/src/main/java/com/spring/modules/base/service/Impl/TransNoControlServiceImpl.java @@ -49,6 +49,10 @@ public class TransNoControlServiceImpl implements TransNoControlService { return legacyTransNo(site, no); } + if (METHOD_DATE_SERIAL.equals(generateMethod)) { + return generateDateSerialWithReset(rule); + } + String transNo = generateByRule(rule, generateMethod); transNoControlDao.increaseNextNumber(site, no); return transNo; @@ -67,17 +71,40 @@ public class TransNoControlServiceImpl implements TransNoControlService { if (METHOD_SERIAL.equals(generateMethod)) { return prefix + formatSeqNo(seqNo, length); } - if (METHOD_DATE_SERIAL.equals(generateMethod)) { - String datePart = formatDatePart(rule.getDateFormat()); - int seqLength = length - datePart.length(); - if (seqLength <= 0) { - throw new RuntimeException("编码长度配置异常:Length 必须大于日期长度(TransNoControl.Length/date_format)"); - } - return prefix + datePart + formatSeqNo(seqNo, seqLength); - } throw new RuntimeException("编码生成方式配置异常:仅支持[常规/流水号/年月日+流水号]"); } + private String generateDateSerialWithReset(TransNoControlRuleData rule) { + String prefix = StringUtils.trimToEmpty(rule.getTransNo()); + if (StringUtils.isBlank(prefix)) { + throw new RuntimeException("编码前缀未配置,请维护 TransNoControl.TransNo!site=" + rule.getSite() + ", transType=" + rule.getTransType()); + } + Integer length = rule.getLength(); + if (length == null || length <= 0) { + throw new RuntimeException("编码长度未配置,请维护 TransNoControl.Length!site=" + rule.getSite() + ", transType=" + rule.getTransType()); + } + + String currentDatePart = formatDatePart(rule.getDateFormat()); + int seqLength = length - currentDatePart.length(); + if (seqLength <= 0) { + throw new RuntimeException("编码长度配置异常:Length 必须大于日期长度(TransNoControl.Length/date_format)"); + } + + long seqNo = resolveDateSerialSeqNo(rule, currentDatePart); + String transNo = prefix + currentDatePart + formatSeqNo(seqNo, seqLength); + transNoControlDao.updateDateSerialState(rule.getSite(), rule.getTransType(), currentDatePart, seqNo + 1L); + return transNo; + } + + private long resolveDateSerialSeqNo(TransNoControlRuleData rule, String currentDatePart) { + String storedDatePart = StringUtils.trimToEmpty(rule.getDatePart()); + if (!StringUtils.equals(storedDatePart, currentDatePart)) { + // 日期变化时,流水号从001重新开始 + return 1L; + } + return getCurrentSeqNo(rule.getNextNumber()); + } + private String normalizeMethod(String method) { return StringUtils.replace(StringUtils.trimToEmpty(method), "+", "+"); } diff --git a/src/main/java/com/spring/modules/lab/service/impl/LabServiceImpl.java b/src/main/java/com/spring/modules/lab/service/impl/LabServiceImpl.java index 364cc114..8c1c6286 100644 --- a/src/main/java/com/spring/modules/lab/service/impl/LabServiceImpl.java +++ b/src/main/java/com/spring/modules/lab/service/impl/LabServiceImpl.java @@ -103,6 +103,8 @@ public class LabServiceImpl extends ServiceImpl implements public PageUtils queryPage(Map params) { params.put("referenceNo", trimToNull((String) params.get("referenceNo"))); params.put("applicant", trimToNull((String) params.get("applicant"))); + params.put("applicationStartDate", trimToNull((String) params.get("applicationStartDate"))); + params.put("applicationEndDate", trimToNull((String) params.get("applicationEndDate"))); params.put("currentApprover", trimToNull((String) params.get("currentApprover"))); params.put("tester", trimToNull((String) params.get("tester"))); params.put("testerLike", buildTesterLikeParam((String) params.get("tester"))); diff --git a/src/main/resources/mapper/base/TransNoControlDao.xml b/src/main/resources/mapper/base/TransNoControlDao.xml index 19096fc6..abc07483 100644 --- a/src/main/resources/mapper/base/TransNoControlDao.xml +++ b/src/main/resources/mapper/base/TransNoControlDao.xml @@ -72,4 +72,12 @@ where Site = #{site} and TransType = #{no} + + + update TransNoControl + set date_part = #{datePart}, + NextNumber = #{nextNumber} + where Site = #{site} + and TransType = #{no} + \ No newline at end of file diff --git a/src/main/resources/mapper/lab/LabMapper.xml b/src/main/resources/mapper/lab/LabMapper.xml index 76e938fb..c6db09b1 100644 --- a/src/main/resources/mapper/lab/LabMapper.xml +++ b/src/main/resources/mapper/lab/LabMapper.xml @@ -148,6 +148,14 @@ and a.applicant like #{params.applicant} + + and a.application_date is not null + and cast(a.application_date as date) = ]]> cast(#{params.applicationStartDate} as date) + + + and a.application_date is not null + and cast(a.application_date as date) cast(#{params.applicationEndDate} as date) + and (';' + isnull(replace(a.tester, ',', ';'), '') + ';') like ('%;' + #{params.testerLike} + ';%') @@ -194,6 +202,14 @@ and a.applicant like #{params.applicant} + + and a.application_date is not null + and cast(a.application_date as date) = ]]> cast(#{params.applicationStartDate} as date) + + + and a.application_date is not null + and cast(a.application_date as date) cast(#{params.applicationEndDate} as date) + and (';' + isnull(replace(a.tester, ',', ';'), '') + ';') like ('%;' + #{params.testerLike} + ';%') @@ -282,6 +298,14 @@ and a.applicant like #{params.applicant} + + and a.application_date is not null + and cast(a.application_date as date) = ]]> cast(#{params.applicationStartDate} as date) + + + and a.application_date is not null + and cast(a.application_date as date) cast(#{params.applicationEndDate} as date) + and (';' + isnull(replace(a.tester, ',', ';'), '') + ';') like ('%;' + #{params.testerLike} + ';%')