From a949acbc3bc00b29b7f0aa776f846dc31698ef5f Mon Sep 17 00:00:00 2001 From: liuyun Date: Wed, 14 Oct 2026 21:23:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(c1):=20elder=20=E5=BB=BA=E6=A1=A3=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E5=AD=97=E6=AE=B5=E8=BD=AC=20Date=20=E8=90=BD?= =?UTF-8?q?=E5=BA=93=EF=BC=88=E4=BF=AE=E5=A4=8D=2050000=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- src/elder/elder.service.spec.ts | 32 ++++++++++++++++++++++++++++++-- src/elder/elder.service.ts | 14 +++++++++++++- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/elder/elder.service.spec.ts b/src/elder/elder.service.spec.ts index dcc1e20..b33cac7 100644 --- a/src/elder/elder.service.spec.ts +++ b/src/elder/elder.service.spec.ts @@ -132,7 +132,7 @@ describe('ElderService', () => { }); }); - it('create 待遇有效期覆盖今天 → treatStatus = active,且出生日期由身份证带出', async () => { + it('create 待遇有效期覆盖今天 → treatStatus = active,且出生日期由身份证带出为 Date', async () => { const { service, elderCreate } = makeService(); await runWithRequestContext(ctx, () => @@ -140,7 +140,35 @@ describe('ElderService', () => { ); expect(elderCreate).toHaveBeenCalledWith({ - data: expect.objectContaining({ treatStatus: 'active', birthDate: '1990-01-01' }), + data: expect.objectContaining({ treatStatus: 'active', birthDate: expect.any(Date) }), + }); + }); + + it('合法建档(含日期字段)成功创建,日期字段转为 Date', async () => { + const { service, elderCreate } = makeService(); + + await runWithRequestContext(ctx, () => + service.createElder({ + ...baseDto, + benefitStart: '2025-01-01', + benefitEnd: '2025-12-31', + assessDate: '2025-01-15', + insurVerifyDate: '2025-01-10', + hospStart: '2025-02-01', + hospEnd: '2025-02-05', + }), + ); + + expect(elderCreate).toHaveBeenCalledWith({ + data: expect.objectContaining({ + birthDate: expect.any(Date), + benefitStart: expect.any(Date), + benefitEnd: expect.any(Date), + assessDate: expect.any(Date), + insurVerifyDate: expect.any(Date), + hospStart: expect.any(Date), + hospEnd: expect.any(Date), + }), }); }); diff --git a/src/elder/elder.service.ts b/src/elder/elder.service.ts index d992ae2..39804ea 100644 --- a/src/elder/elder.service.ts +++ b/src/elder/elder.service.ts @@ -52,6 +52,12 @@ function resolveInitialStatus(benefitStart?: string, benefitEnd?: string): strin return 'waiting_period'; } +/** YYYY-MM-DD → 本地零点 Date(供 Prisma DateTime @db.Date 列写入);空值返回 undefined。 */ +function toDateOnly(v?: string): Date | undefined { + if (!v) return undefined; + return new Date(`${v}T00:00:00`); +} + /** * 老人档案(elder)业务服务。elder 是租户级软删模型,读写经 Prisma 扩展自动注入 * tenantCode / deletedAt 过滤;创建时 tenantCode/createdBy 由 BaseCrudService 注入。 @@ -101,9 +107,15 @@ export class ElderService extends BaseCrudService { return super.create({ ...dto, idCardNo, - birthDate, + birthDate: toDateOnly(birthDate), treatStatus, statusSource: 'manual', + benefitStart: toDateOnly(dto.benefitStart), + benefitEnd: toDateOnly(dto.benefitEnd), + assessDate: toDateOnly(dto.assessDate), + insurVerifyDate: toDateOnly(dto.insurVerifyDate), + hospStart: toDateOnly(dto.hospStart), + hospEnd: toDateOnly(dto.hospEnd), }); }