From 3c8e1658c168ff50b1f53af63e60b958068fcc7e Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Tue, 24 Mar 2026 09:00:44 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=AF=8F=E5=A4=A923:50=E5=88=86?= =?UTF-8?q?=E7=94=9F=E6=88=90=E7=AC=AC=E4=BA=8C=E5=A4=A9=E6=8C=87=E4=BB=A4?= =?UTF-8?q?=E5=BF=AB=E7=85=A7=202=E3=80=81=E6=AF=8F=E5=B0=8F=E6=97=B6?= =?UTF-8?q?=E6=AF=8F04=E3=80=8109=E3=80=81=E9=97=B4=E9=9A=945=E5=88=86=20-?= =?UTF-8?q?=2059=E6=9B=B4=E6=96=B0=E5=BF=AB=E7=85=A7+=E7=94=9F=E6=88=90?= =?UTF-8?q?=E7=9F=A9=E9=98=B5=E5=A4=87=E4=BB=BD+=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=BF=AB=E7=85=A7=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../directiveplan/api/CareDirectiveApi.java | 22 +++ .../com/nu/entity/CareDirectiveEntity.java | 6 + .../com/nu/entity/DirectiveOrderEntity.java | 38 ++++- .../DirectivePlanChangeStatusEntity.java | 40 ++++++ .../care/api/ICareDirectivePlanApi.java | 1 + .../care/api/IDirectivePlanDateApi.java | 7 + .../plan/care/entity/CareDirectivePlan.java | 3 + .../entity/DirectivePlanChangeStatus.java | 65 +++++++++ .../plan/care/entity/DirectivePlanDate.java | 110 +++++++++++++++ .../care/entity/DirectivePlanDateLog.java | 116 +++++++++++++++ .../plan/care/entity/DirectivePlanLog.java | 8 ++ .../care/job/DirectiveDateGenerateJob.java | 49 +++++++ .../plan/care/job/DirectiveDateUpdateJob.java | 106 ++++++++++++++ .../care/mapper/CareDirectivePlanMapper.java | 2 + .../DirectivePlanChangeStatusMapper.java | 22 +++ .../mapper/DirectivePlanDateLogMapper.java | 17 +++ .../care/mapper/DirectivePlanDateMapper.java | 17 +++ .../mapper/xml/CareDirectivePlanMapper.xml | 132 +++++++++++++++++- .../xml/DirectivePlanChangeStatusMapper.xml | 23 +++ .../mapper/xml/DirectivePlanDateLogMapper.xml | 5 + .../mapper/xml/DirectivePlanDateMapper.xml | 5 + .../IDirectivePlanChangeStatusService.java | 22 +++ .../service/IDirectivePlanDateLogService.java | 14 ++ .../service/IDirectivePlanDateService.java | 14 ++ .../service/IDirectivePlanLogService.java | 3 +- .../impl/CareDirectivePlanServiceImpl.java | 54 ++++++- .../DirectivePlanChangeStatusServiceImpl.java | 129 +++++++++++++++++ .../impl/DirectivePlanDateLogServiceImpl.java | 19 +++ .../impl/DirectivePlanDateServiceImpl.java | 25 ++++ .../impl/DirectivePlanLogServiceImpl.java | 5 +- 30 files changed, 1068 insertions(+), 11 deletions(-) create mode 100644 nursing-unit-common/src/main/java/com/nu/entity/DirectivePlanChangeStatusEntity.java create mode 100644 nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/care/api/IDirectivePlanDateApi.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanChangeStatus.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanDate.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanDateLog.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/job/DirectiveDateGenerateJob.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/job/DirectiveDateUpdateJob.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanChangeStatusMapper.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanDateLogMapper.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanDateMapper.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanChangeStatusMapper.xml create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanDateLogMapper.xml create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanDateMapper.xml create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanChangeStatusService.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanDateLogService.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanDateService.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanChangeStatusServiceImpl.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanDateLogServiceImpl.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanDateServiceImpl.java diff --git a/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveplan/api/CareDirectiveApi.java b/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveplan/api/CareDirectiveApi.java index 4be91f17..1a836619 100644 --- a/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveplan/api/CareDirectiveApi.java +++ b/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveplan/api/CareDirectiveApi.java @@ -3,6 +3,7 @@ package com.nu.modules.pad.directiveplan.api; import cn.hutool.core.date.DateUtil; import com.google.common.collect.Maps; import com.nu.entity.*; +import com.nu.modules.care.api.IDirectivePlanDateApi; import com.nu.modules.config.IDirectiveConfigApi; import com.nu.modules.care.api.ICareDirectivePlanApi; import com.nu.modules.invoicing.api.IInvoicingDirectivePlanApi; @@ -44,6 +45,8 @@ public class CareDirectiveApi { private IInvoicingDirectivePlanApi invoicingDirectivePlanApi; @Autowired private ILogisticsDirectivePlanApi logisticsDirectivePlanApi; + @Autowired + private IDirectivePlanDateApi directivePlanDateApi; /** * 获取护理类服务指令树-配置数据 @@ -479,4 +482,23 @@ public class CareDirectiveApi { result.put("ckList", ckList); return Result.ok(result); } + + /** + * PAD端编排护理流程-点击保存按钮 + * 更新日期快照表数据 分类标签会传进来多个 + * + * @param careDirectiveEntity + * @return + */ + @PostMapping(value = "/saveTable") + public Result saveTable(@RequestBody CareDirectiveEntity careDirectiveEntity) { + if (StringUtils.isBlank(careDirectiveEntity.getNuId())) { + return Result.error("未提供护理单元nuId"); + } + if (StringUtils.isBlank(careDirectiveEntity.getInstructionIds())) { + return Result.error("未提供分类标签"); + } + directivePlanDateApi.saveTable(careDirectiveEntity); + return Result.OK("保存成功"); + } } diff --git a/nursing-unit-common/src/main/java/com/nu/entity/CareDirectiveEntity.java b/nursing-unit-common/src/main/java/com/nu/entity/CareDirectiveEntity.java index ca1a1954..478cbf64 100644 --- a/nursing-unit-common/src/main/java/com/nu/entity/CareDirectiveEntity.java +++ b/nursing-unit-common/src/main/java/com/nu/entity/CareDirectiveEntity.java @@ -90,5 +90,11 @@ public class CareDirectiveEntity implements Serializable { * 查询哪些类型 */ private String queryInstructionIds; + /** + * 查询哪些类型 + */ + private String instructionIds; + + private List planChangeStatusList; } diff --git a/nursing-unit-common/src/main/java/com/nu/entity/DirectiveOrderEntity.java b/nursing-unit-common/src/main/java/com/nu/entity/DirectiveOrderEntity.java index e545c91c..f9a2bc94 100644 --- a/nursing-unit-common/src/main/java/com/nu/entity/DirectiveOrderEntity.java +++ b/nursing-unit-common/src/main/java/com/nu/entity/DirectiveOrderEntity.java @@ -58,6 +58,18 @@ public class DirectiveOrderEntity implements Serializable { private String employeeId; /**员工姓名*/ private String employeeName; + /**分类标签*/ + private String instructionId; + /**分类标签名称*/ + private String instructionName; + /**服务类别ID,nu_config_service_category.id*/ + private String categoryId; + /**服务类别名称*/ + private String categoryName; + /**服务类型ID,nu_config_service_type.id*/ + private String typeId; + /**服务类型名称*/ + private String typeName; /**服务指令ID,nu_config_service_directive.id*/ private String directiveId; /**服务指令名称*/ @@ -68,6 +80,17 @@ public class DirectiveOrderEntity implements Serializable { private String cycleType; /**周期值*/ private String cycleValue; + /** + * 操作日志,用于频次类型的计算 + */ + private Date optTime; + /** + * 执行次数,0不限次数 非0具体次数,用于频次类型计算 + */ + private Integer optCount; + private String izMulti; + private String immediateFile; + private String immediateFileFocus; /**服务指令图片大图*/ private String previewFile; /**服务指令图片小图*/ @@ -80,6 +103,12 @@ public class DirectiveOrderEntity implements Serializable { private String serviceDuration; /**服务说明*/ private String serviceContent; + /**定位*/ + private String positioning; + /**纵向定位*/ + private String positioningLong; + /**PAD端无线循环使用*/ + private String tagName; /**超时时长(分钟)*/ private String timeoutDuration; /**服务指令包ID*/ @@ -120,10 +149,14 @@ public class DirectiveOrderEntity implements Serializable { private String initiatorName; /**创建人*/ private String createEmp; + /**创建人*/ + private String createBy; /**创建日期*/ private Date createTime; /**更新人*/ private String updateEmp; + /**更新人*/ + private String updateBy; /**更新日期*/ private Date updateTime; /**是否删除 0未删除 1删除*/ @@ -144,6 +177,7 @@ public class DirectiveOrderEntity implements Serializable { private String manuallyPicPath; private String manuallyMp4Path; - private String immediateFile; - private String immediateFileFocus; + + /**所属部门*/ + private String sysOrgCode; } diff --git a/nursing-unit-common/src/main/java/com/nu/entity/DirectivePlanChangeStatusEntity.java b/nursing-unit-common/src/main/java/com/nu/entity/DirectivePlanChangeStatusEntity.java new file mode 100644 index 00000000..95291fd7 --- /dev/null +++ b/nursing-unit-common/src/main/java/com/nu/entity/DirectivePlanChangeStatusEntity.java @@ -0,0 +1,40 @@ +package com.nu.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 护理单元+分类标签-矩阵是否变更记录 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +@Data +public class DirectivePlanChangeStatusEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + private String id; + /**护理单元id*/ + private String nuId; + /**分类标签id*/ + private String instructionTagId; + /**是否有变动未处理 Y有变动未处理 N无需处理*/ + private String izChange; + /**修改时间*/ + private Date changeTime; + /**处理时间*/ + private Date handleTime; +} diff --git a/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/care/api/ICareDirectivePlanApi.java b/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/care/api/ICareDirectivePlanApi.java index 36ea77e5..df97a657 100644 --- a/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/care/api/ICareDirectivePlanApi.java +++ b/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/care/api/ICareDirectivePlanApi.java @@ -12,6 +12,7 @@ public interface ICareDirectivePlanApi { void editDirective(CareDirectiveEntity careDirectiveEntity); void deleteDirective(CareDirectiveEntity careDirectiveEntity); List queryFuture(CareDirectiveEntity dto); + List queryListByDateTime(CareDirectiveEntity dto); List queryImmediatelyOrderList(CareDirectiveEntity dto); diff --git a/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/care/api/IDirectivePlanDateApi.java b/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/care/api/IDirectivePlanDateApi.java new file mode 100644 index 00000000..8a9f73bd --- /dev/null +++ b/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/care/api/IDirectivePlanDateApi.java @@ -0,0 +1,7 @@ +package com.nu.modules.care.api; + +import com.nu.entity.CareDirectiveEntity; + +public interface IDirectivePlanDateApi { + void saveTable(CareDirectiveEntity careDirectiveEntity); +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/CareDirectivePlan.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/CareDirectivePlan.java index 4b6cbbc9..47fd0e0a 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/CareDirectivePlan.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/CareDirectivePlan.java @@ -74,6 +74,9 @@ public class CareDirectivePlan implements Serializable { */ private Integer optCount; + /**是否多个 Y是(指令集) N否*/ + private String izMulti; + @TableField(exist = false) private String packageId; diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanChangeStatus.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanChangeStatus.java new file mode 100644 index 00000000..af535877 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanChangeStatus.java @@ -0,0 +1,65 @@ +package com.nu.modules.biz.plan.care.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 护理单元+分类标签-矩阵是否变更记录 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +@Data +@TableName("nu_biz_directive_plan_change_status") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nu_biz_directive_plan_change_status对象", description="护理单元+分类标签-矩阵是否变更记录") +public class DirectivePlanChangeStatus implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /**护理单元id*/ + @Excel(name = "护理单元id", width = 15) + @ApiModelProperty(value = "护理单元id") + private java.lang.String nuId; + /**分类标签id*/ + @Excel(name = "分类标签id", width = 15) + @ApiModelProperty(value = "分类标签id") + private java.lang.String instructionTagId; + /**是否有变动未处理 Y有变动未处理 N无需处理*/ + @Excel(name = "是否有变动未处理 Y有变动未处理 N无需处理", width = 15) + @ApiModelProperty(value = "是否有变动未处理 Y有变动未处理 N无需处理") + private java.lang.String izChange; + /**修改时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date changeTime; + /**处理开始时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date handleStartTime; + /**处理完成时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date handleFinishTime; +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanDate.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanDate.java new file mode 100644 index 00000000..79b955d1 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanDate.java @@ -0,0 +1,110 @@ +package com.nu.modules.biz.plan.care.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 服务指令编排-日期-快照表 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +@Data +@TableName("nu_biz_directive_plan_date") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nu_biz_directive_plan_date对象", description="服务指令编排-日期-快照表") +public class DirectivePlanDate implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /**护理单元nuid nu_base_info.nu_id*/ + @Excel(name = "护理单元nuid nu_base_info.nu_id", width = 15) + @ApiModelProperty(value = "护理单元nuid nu_base_info.nu_id") + private java.lang.String nuId; + /**分类标签id nu_config_service_instruction_tag.id*/ + @Excel(name = "分类标签id nu_config_service_instruction_tag.id", width = 15) + @ApiModelProperty(value = "分类标签id nu_config_service_instruction_tag.id") + private java.lang.String instructionId; + /**服务指令id*/ + @Excel(name = "服务指令id", width = 15) + @ApiModelProperty(value = "服务指令id") + private java.lang.String directiveId; + /**开始日期*/ + @Excel(name = "开始日期", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "开始日期") + private java.util.Date startDate; + /**开始时间*/ + @Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "开始时间") + private java.util.Date startTime; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**周期类型ID*/ + @Excel(name = "周期类型ID", width = 15) + @ApiModelProperty(value = "周期类型ID") + private java.lang.String cycleTypeId; + /**周期值*/ + @Excel(name = "周期值", width = 15) + @ApiModelProperty(value = "周期值") + private java.lang.String cycleValue; + /**操作日期,用于频次类型的计算*/ + @Excel(name = "操作日期,用于频次类型的计算", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "操作日期,用于频次类型的计算") + private java.util.Date optTime; + /**执行次数,0不限次数 非0具体次数,用于频次类型计算 */ + @Excel(name = "执行次数,0不限次数 非0具体次数,用于频次类型计算 ", width = 15) + @ApiModelProperty(value = "执行次数,0不限次数 非0具体次数,用于频次类型计算 ") + private java.lang.Integer optCount; + /**是否多个 Y是(指令集) N否*/ + @Excel(name = "是否多个 Y是(指令集) N否", width = 15) + @ApiModelProperty(value = "是否多个 Y是(指令集) N否") + private java.lang.String izMulti; + /**横向定位*/ + @Excel(name = "横向定位", width = 15) + @ApiModelProperty(value = "横向定位") + private java.lang.String positioning; + /**纵向定位*/ + @Excel(name = "纵向定位", width = 15) + @ApiModelProperty(value = "纵向定位") + private java.lang.String positioningLong; + /**服务标签名称*/ + @Excel(name = "服务标签名称", width = 15) + @ApiModelProperty(value = "服务标签名称") + private java.lang.String tagName; +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanDateLog.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanDateLog.java new file mode 100644 index 00000000..33edc966 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanDateLog.java @@ -0,0 +1,116 @@ +package com.nu.modules.biz.plan.care.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 指令日期快照的备份 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +@Data +@TableName("nu_biz_directive_plan_date_log") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nu_biz_directive_plan_date_log对象", description="指令日期快照的备份") +public class DirectivePlanDateLog implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /**护理单元nuid nu_base_info.nu_id*/ + @Excel(name = "护理单元nuid nu_base_info.nu_id", width = 15) + @ApiModelProperty(value = "护理单元nuid nu_base_info.nu_id") + private java.lang.String nuId; + /**分类标签id nu_config_service_instruction_tag.id*/ + @Excel(name = "分类标签id nu_config_service_instruction_tag.id", width = 15) + @ApiModelProperty(value = "分类标签id nu_config_service_instruction_tag.id") + private java.lang.String instructionId; + /**服务指令id*/ + @Excel(name = "服务指令id", width = 15) + @ApiModelProperty(value = "服务指令id") + private java.lang.String directiveId; + /**开始日期*/ + @Excel(name = "开始日期", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "开始日期") + private java.util.Date startDate; + /**开始时间*/ + @Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "开始时间") + private java.util.Date startTime; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**周期类型ID*/ + @Excel(name = "周期类型ID", width = 15) + @ApiModelProperty(value = "周期类型ID") + private java.lang.String cycleTypeId; + /**周期值*/ + @Excel(name = "周期值", width = 15) + @ApiModelProperty(value = "周期值") + private java.lang.String cycleValue; + /**操作日期,用于频次类型的计算*/ + @Excel(name = "操作日期,用于频次类型的计算", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "操作日期,用于频次类型的计算") + private java.util.Date optTime; + /**执行次数,0不限次数 非0具体次数,用于频次类型计算 */ + @Excel(name = "执行次数,0不限次数 非0具体次数,用于频次类型计算 ", width = 15) + @ApiModelProperty(value = "执行次数,0不限次数 非0具体次数,用于频次类型计算 ") + private java.lang.Integer optCount; + /**是否多个 Y是(指令集) N否*/ + @Excel(name = "是否多个 Y是(指令集) N否", width = 15) + @ApiModelProperty(value = "是否多个 Y是(指令集) N否") + private java.lang.String izMulti; + /**横向定位*/ + @Excel(name = "横向定位", width = 15) + @ApiModelProperty(value = "横向定位") + private java.lang.String positioning; + /**纵向定位*/ + @Excel(name = "纵向定位", width = 15) + @ApiModelProperty(value = "纵向定位") + private java.lang.String positioningLong; + /**服务标签名称*/ + @Excel(name = "服务标签名称", width = 15) + @ApiModelProperty(value = "服务标签名称") + private java.lang.String tagName; + /**数据变更时间*/ + @Excel(name = "数据变更时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "数据变更时间") + private java.util.Date changeTime; +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanLog.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanLog.java index 57259e3e..9543a455 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanLog.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/entity/DirectivePlanLog.java @@ -98,4 +98,12 @@ public class DirectivePlanLog implements Serializable { /**数据变更人*/ @ApiModelProperty(value = "数据变更人") private java.lang.String changeBy; + /**处理时间*/ + @Excel(name = "处理时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "处理时间") + private java.util.Date handleTime; + /**是否多个 Y是(指令集) N否*/ + private String izMulti; } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/job/DirectiveDateGenerateJob.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/job/DirectiveDateGenerateJob.java new file mode 100644 index 00000000..46a0bddf --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/job/DirectiveDateGenerateJob.java @@ -0,0 +1,49 @@ +package com.nu.modules.biz.plan.care.job; + +import cn.hutool.core.bean.BeanUtil; +import com.nu.entity.CareDirectiveEntity; +import com.nu.entity.DirectiveOrderEntity; +import com.nu.modules.biz.plan.care.entity.DirectivePlanDate; +import com.nu.modules.biz.plan.care.service.IDirectivePlanDateService; +import com.nu.modules.care.api.ICareDirectivePlanApi; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.time.DateUtils; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * 指令快照生成第二天整天数据 + */ +@Slf4j +public class DirectiveDateGenerateJob implements Job { + @Autowired + private ICareDirectivePlanApi careDirectivePlanApi; + @Autowired + private IDirectivePlanDateService directivePlanDateService; + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + //获取到第二天00:00:00 + Date targetDate = DateUtils.truncate( + DateUtils.addDays(new Date(), 1), + Calendar.DAY_OF_MONTH + ); + + CareDirectiveEntity dto = new CareDirectiveEntity(); + dto.setQueryDate(targetDate); + List allDateSnapshootList = careDirectivePlanApi.queryListByDateTime(dto); + + List directivePlanDates = BeanUtil.copyToList(allDateSnapshootList, DirectivePlanDate.class); + directivePlanDates.stream().forEach(item -> { + item.setId(null); + }); + directivePlanDateService.saveBatch(directivePlanDates); + } + +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/job/DirectiveDateUpdateJob.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/job/DirectiveDateUpdateJob.java new file mode 100644 index 00000000..ca3b4208 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/job/DirectiveDateUpdateJob.java @@ -0,0 +1,106 @@ +package com.nu.modules.biz.plan.care.job; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.nu.entity.CareDirectiveEntity; +import com.nu.entity.DirectiveOrderEntity; +import com.nu.entity.DirectivePlanChangeStatusEntity; +import com.nu.modules.biz.plan.care.entity.DirectivePlanChangeStatus; +import com.nu.modules.biz.plan.care.service.IDirectivePlanChangeStatusService; +import com.nu.modules.care.api.ICareDirectivePlanApi; +import lombok.extern.slf4j.Slf4j; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Comparator; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 定时更新矩阵日期快照表、备份表 + */ +@Slf4j +public class DirectiveDateUpdateJob implements Job { + @Autowired + private IDirectivePlanChangeStatusService directivePlanChangeStatusService; + @Autowired + private ICareDirectivePlanApi careDirectivePlanApi; + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + //准备当前时间 用于记录处理数据的定时任务时间 + Date handleDateTime = new Date(); + + //1、计算出要处理的时间点 + //14:00:01 → 14:10:00 + //14:04:59 → 14:10:00 + //14:05:00 → 14:15:00 + //14:09:59 → 14:15:00 + //14:55:00 → 15:05:00 + //23:55:00 → 00:05:00 + Date targetDate = Date.from(calculateTargetTimeSimple().atZone(ZoneId.systemDefault()).toInstant()); + + //2、找到要处理的多个【nuId+分类标签ID】组合 + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("iz_change", "Y"); + List list = directivePlanChangeStatusService.list(qw); + + //3、从矩阵编排表查到targetDate时间点及之后数据(需要考虑跨天问题) 如果23:50执行就已经算的是第二天00:00:00的了 + CareDirectiveEntity dto = new CareDirectiveEntity(); + dto.setQueryDate(targetDate); + dto.setPlanChangeStatusList(BeanUtil.copyToList(list, DirectivePlanChangeStatusEntity.class)); + List allDateSnapshootList = careDirectivePlanApi.queryListByDateTime(dto); + + // 创建Map,key为nuId+instructionTagId组合,value为对应的列表 + Map> dateSnapshootMap = allDateSnapshootList.stream() + .filter(item -> item.getNuId() != null && item.getInstructionId() != null) + .collect(Collectors.groupingBy( + item -> item.getNuId() + "_" + item.getInstructionId(), + Collectors.collectingAndThen( + Collectors.toList(), + tempList -> { + tempList.sort(Comparator.comparing(DirectiveOrderEntity::getStartTime)); + return tempList; + } + ) + )); + + //异步把所有的nuId+分类标签备份一下 + directivePlanChangeStatusService.backUpPlanData(handleDateTime,list); + + //前面准备好了时间点 、要修改的数据 + list.forEach(item -> { + //定时任务处理时间 + item.setHandleStartTime(handleDateTime); + //异步并行处理 提高处理速度 每个异步处理的都是不同的nuId+instructionTagId组合 互不影响 + List dateSnapshootList = dateSnapshootMap.get(item.getNuId() + "_" + item.getInstructionTagId()); + directivePlanChangeStatusService.updateDirectiveDateSnapshoot(targetDate, item, dateSnapshootList); + }); + } + + private LocalDateTime calculateTargetTimeSimple() { + LocalDateTime currentTime = LocalDateTime.now(); + // 1. 获取当前分钟 + int currentMinute = currentTime.getMinute(); + + // 2. 计算目标分钟(使用正确的公式) + int targetMinuteRaw = ((currentMinute / 5) + 2) * 5; + + // 3. 处理进位 + int hourIncrement = targetMinuteRaw / 60; + int targetMinute = targetMinuteRaw % 60; + + // 4. 组装目标时间 + return currentTime + .plusHours(hourIncrement) + .withMinute(targetMinute) + .withSecond(0) + .withNano(0); + } +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/CareDirectivePlanMapper.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/CareDirectivePlanMapper.java index 5be60fb3..45bf86a7 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/CareDirectivePlanMapper.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/CareDirectivePlanMapper.java @@ -23,5 +23,7 @@ public interface CareDirectivePlanMapper extends BaseMapper { List queryFuture( @Param("dto") CareDirectiveEntity dto); + List queryListByDateTime( @Param("dto") CareDirectiveEntity dto); + int deleteDirectiveSet(@Param("dto") CareDirectiveEntity careDirectiveEntity); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanChangeStatusMapper.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanChangeStatusMapper.java new file mode 100644 index 00000000..94443076 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanChangeStatusMapper.java @@ -0,0 +1,22 @@ +package com.nu.modules.biz.plan.care.mapper; + +import java.util.Date; +import java.util.List; + +import com.nu.modules.biz.plan.care.entity.CareDirectivePlan; +import org.apache.ibatis.annotations.Param; +import com.nu.modules.biz.plan.care.entity.DirectivePlanChangeStatus; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 护理单元+分类标签-矩阵是否变更记录 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +public interface DirectivePlanChangeStatusMapper extends BaseMapper { + + int deleteOldSnapshoot(@Param("nuId") String nuId, @Param("instructionTagId") String instructionTagId, @Param("targetDate") Date targetDate); + + List selectDataByNuIdAndInstructionTagId(@Param("param") List list); +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanDateLogMapper.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanDateLogMapper.java new file mode 100644 index 00000000..8da77e33 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanDateLogMapper.java @@ -0,0 +1,17 @@ +package com.nu.modules.biz.plan.care.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import com.nu.modules.biz.plan.care.entity.DirectivePlanDateLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 指令日期快照的备份 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +public interface DirectivePlanDateLogMapper extends BaseMapper { + +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanDateMapper.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanDateMapper.java new file mode 100644 index 00000000..7b2ab62e --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/DirectivePlanDateMapper.java @@ -0,0 +1,17 @@ +package com.nu.modules.biz.plan.care.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import com.nu.modules.biz.plan.care.entity.DirectivePlanDate; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 服务指令编排-日期-快照表 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +public interface DirectivePlanDateMapper extends BaseMapper { + +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/CareDirectivePlanMapper.xml b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/CareDirectivePlanMapper.xml index 3884a6b7..b75d5228 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/CareDirectivePlanMapper.xml +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/CareDirectivePlanMapper.xml @@ -16,17 +16,31 @@ + + + + + + + + + + + + + + @@ -46,11 +60,14 @@ + + + @@ -155,7 +172,8 @@ ) - SELECT plan.id, plan.nu_id, @@ -339,4 +357,116 @@ ORDER BY p.start_time ASC + + + diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanChangeStatusMapper.xml b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanChangeStatusMapper.xml new file mode 100644 index 00000000..35d46db7 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanChangeStatusMapper.xml @@ -0,0 +1,23 @@ + + + + + + delete + from nu_biz_directive_plan_date + where nu_id = #{nuId} + and instruction_id = #{instructionTagId} + and DATE (start_time) = DATE (#{targetDate}) + and start_time >= #{targetDate} + + + + diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanDateLogMapper.xml b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanDateLogMapper.xml new file mode 100644 index 00000000..e3b43f37 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanDateLogMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanDateMapper.xml b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanDateMapper.xml new file mode 100644 index 00000000..c8a254d2 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/mapper/xml/DirectivePlanDateMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanChangeStatusService.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanChangeStatusService.java new file mode 100644 index 00000000..2c392faa --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanChangeStatusService.java @@ -0,0 +1,22 @@ +package com.nu.modules.biz.plan.care.service; + +import com.nu.entity.DirectiveOrderEntity; +import com.nu.modules.biz.plan.care.entity.DirectivePlanChangeStatus; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @Description: 护理单元+分类标签-矩阵是否变更记录 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +public interface IDirectivePlanChangeStatusService extends IService { + + void updateDirectiveDateSnapshoot(Date targetDate, DirectivePlanChangeStatus item, List dateSnapshootList); + + void backUpPlanData(Date handleDateTime,List list); +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanDateLogService.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanDateLogService.java new file mode 100644 index 00000000..b15ef8ac --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanDateLogService.java @@ -0,0 +1,14 @@ +package com.nu.modules.biz.plan.care.service; + +import com.nu.modules.biz.plan.care.entity.DirectivePlanDateLog; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 指令日期快照的备份 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +public interface IDirectivePlanDateLogService extends IService { + +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanDateService.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanDateService.java new file mode 100644 index 00000000..d0396b6d --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanDateService.java @@ -0,0 +1,14 @@ +package com.nu.modules.biz.plan.care.service; + +import com.nu.modules.biz.plan.care.entity.DirectivePlanDate; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 服务指令编排-日期-快照表 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +public interface IDirectivePlanDateService extends IService { + +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanLogService.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanLogService.java index 8e711f59..b4f62105 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanLogService.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/IDirectivePlanLogService.java @@ -5,6 +5,7 @@ import com.nu.modules.biz.plan.care.entity.DirectivePlanLog; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.common.system.vo.LoginUser; +import java.util.Date; import java.util.List; /** @@ -15,5 +16,5 @@ import java.util.List; */ public interface IDirectivePlanLogService extends IService { - void batchInsert(LoginUser sysUser, List list); + void batchInsert(Date now, LoginUser sysUser, List list); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/CareDirectivePlanServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/CareDirectivePlanServiceImpl.java index 23e7ca4f..59505672 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/CareDirectivePlanServiceImpl.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/CareDirectivePlanServiceImpl.java @@ -1,8 +1,11 @@ package com.nu.modules.biz.plan.care.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.nu.entity.*; import com.nu.modules.biz.datapool.service.ICareDataPoolService; +import com.nu.modules.biz.plan.care.entity.DirectivePlanChangeStatus; +import com.nu.modules.biz.plan.care.service.IDirectivePlanChangeStatusService; import com.nu.modules.biz.plan.care.service.IDirectivePlanLogService; import com.nu.modules.config.directivepackage.service.IDirectivePackageService; import com.nu.modules.config.directivepackage.service.impl.DirectivePackageServiceImpl; @@ -42,6 +45,8 @@ public class CareDirectivePlanServiceImpl extends ServiceImpl getPlanList(CareDirectiveEntity careDirectiveEntity) { @@ -133,6 +138,15 @@ public class CareDirectivePlanServiceImpl extends ServiceImpl uw = new UpdateWrapper<>(); + uw.eq("nu_id", careDirectiveEntity.getNuId()); + uw.eq("instruction_tag_id", careDirectiveEntity.getInstructionTagId()); + directivePlanChangeStatusService.saveOrUpdate(directivePlanChangeStatus, uw); + //查询护理单元+对应分类下全部数据进行存储(保存是异步 线程里查询的由于事务原因会少数据) QueryWrapper qw = new QueryWrapper<>(); qw.eq("nu_id", careDirectiveEntity.getNuId()); @@ -141,7 +155,7 @@ public class CareDirectivePlanServiceImpl extends ServiceImpl uw = new UpdateWrapper<>(); + uw.eq("nu_id", careDirectiveEntity.getNuId()); + uw.eq("instruction_tag_id", careDirectiveEntity.getInstructionTagId()); + directivePlanChangeStatusService.saveOrUpdate(directivePlanChangeStatus, uw); + //查询护理单元+对应分类下全部数据进行存储(保存是异步 线程里查询的由于事务原因会少数据) QueryWrapper qw = new QueryWrapper<>(); qw.eq("nu_id", careDirectiveEntity.getNuId()); @@ -169,7 +192,7 @@ public class CareDirectivePlanServiceImpl extends ServiceImpl uw = new UpdateWrapper<>(); + uw.eq("nu_id", careDirectiveEntity.getNuId()); + uw.eq("instruction_tag_id", careDirectiveEntity.getInstructionTagId()); + directivePlanChangeStatusService.saveOrUpdate(directivePlanChangeStatus, uw); + //查询护理单元+对应分类下全部数据进行存储(保存是异步 线程里查询的由于事务原因会少数据) QueryWrapper qw = new QueryWrapper<>(); qw.eq("nu_id", careDirectiveEntity.getNuId()); @@ -189,7 +221,7 @@ public class CareDirectivePlanServiceImpl extends ServiceImpl queryListByDateTime(CareDirectiveEntity dto) { + return baseMapper.queryListByDateTime(dto); + } + @Override public List queryImmediatelyOrderList(CareDirectiveEntity dto) { dto.setQueryType("instant"); @@ -213,6 +250,15 @@ public class CareDirectivePlanServiceImpl extends ServiceImpl uw = new UpdateWrapper<>(); + uw.eq("nu_id", careDirectiveEntity.getNuId()); + uw.eq("instruction_tag_id", careDirectiveEntity.getInstructionTagId()); + directivePlanChangeStatusService.saveOrUpdate(directivePlanChangeStatus, uw); + //查询护理单元+对应分类下全部数据进行存储(保存是异步 线程里查询的由于事务原因会少数据) QueryWrapper qw = new QueryWrapper<>(); qw.eq("nu_id", careDirectiveEntity.getNuId()); @@ -221,7 +267,7 @@ public class CareDirectivePlanServiceImpl extends ServiceImpl implements IDirectivePlanChangeStatusService { + + @Autowired + private IDirectivePlanDateService directivePlanDateService; + @Autowired + private IDirectivePlanDateLogService directivePlanDateLogService; + @Autowired + private IDirectivePlanLogService directivePlanLogService; + + @Async + @Override + public void updateDirectiveDateSnapshoot(Date targetDate, DirectivePlanChangeStatus planChangeStatusData, List dateSnapshootList) { + + String nuId = planChangeStatusData.getNuId();//护理单元 + String instructionTagId = planChangeStatusData.getInstructionTagId();//分类标签 + Date changeTime = planChangeStatusData.getChangeTime();//变更时间 + + //1、读快照单天的存到备份里 + QueryWrapper directivePlanDateQueryWrapper = new QueryWrapper<>(); + directivePlanDateQueryWrapper.eq("nu_id", nuId); + directivePlanDateQueryWrapper.eq("instruction_id", instructionTagId); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String targetDateStr = sdf.format(targetDate); + directivePlanDateQueryWrapper.apply("DATE(start_time) = {0}", targetDateStr); + List oldList = directivePlanDateService.list();//旧的数据 + + + //2、删除targetDate时间之后的 再把算好的dateSnapshootList存进去 + baseMapper.deleteOldSnapshoot(nuId, instructionTagId, targetDate); + //存新的日期快照 + //处理要存的数据 + List newDirectivePlanDateData = new ArrayList<>(); + dateSnapshootList.stream().forEach(item -> { + DirectivePlanDate data_ = new DirectivePlanDate(); + data_.setNuId(item.getNuId()); + data_.setInstructionId(item.getInstructionId()); + data_.setDirectiveId(item.getDirectiveId()); + data_.setStartDate(item.getStartTime()); + data_.setStartTime(item.getStartTime()); + data_.setCycleTypeId(item.getCycleTypeId()); + data_.setCycleValue(item.getCycleValue()); + data_.setOptTime(item.getOptTime()); + data_.setOptCount(item.getOptCount()); + data_.setIzMulti(item.getIzMulti()); + data_.setPositioning(item.getPositioning()); + data_.setPositioningLong(item.getPositioningLong()); + data_.setTagName(item.getTagName()); + newDirectivePlanDateData.add(data_); + }); + directivePlanDateService.saveBatch(newDirectivePlanDateData); + + //、存储日期快照备份表数据 + List directivePlanDateLogs = BeanUtil.copyToList(oldList, DirectivePlanDateLog.class); + directivePlanDateLogs.forEach(temp -> { + temp.setId(null); + temp.setChangeTime(changeTime); + }); + directivePlanDateLogService.saveBatch(directivePlanDateLogs); + + //、修改状态值 + DirectivePlanChangeStatus newData = baseMapper.selectById(planChangeStatusData.getId()); + if (newData.getChangeTime().equals(planChangeStatusData.getChangeTime())) { + //changeTime是数据有变更的时间 如果一致 说明没有新的变动 走到这里说明已经处理完了数据 直接把是否有变更更改为未变更状态 + planChangeStatusData.setIzChange("N"); + planChangeStatusData.setHandleStartTime(planChangeStatusData.getHandleStartTime());//定时任务开始处理时间 + planChangeStatusData.setHandleFinishTime(new Date());//定时任务处理完成时间 + baseMapper.updateById(planChangeStatusData); + } else { + //只做时间处理 + planChangeStatusData.setHandleStartTime(planChangeStatusData.getHandleStartTime());//定时任务开始处理时间 + planChangeStatusData.setHandleFinishTime(new Date());//定时任务处理完成时间 + baseMapper.updateById(planChangeStatusData); + } + + } + + @Async + @Override + public void backUpPlanData(Date handleDateTime,List list) { + Map changeStatusMap = list.stream() + .collect(Collectors.toMap( + item -> item.getNuId() + "_" + item.getInstructionTagId(), + item -> item, + (existing, replacement) -> replacement // 如果有重复key,保留后者 + )); + + List allData = baseMapper.selectDataByNuIdAndInstructionTagId(list); + + List planLogList = BeanUtil.copyToList(allData, DirectivePlanLog.class); + planLogList.stream().forEach(item -> { + item.setId(null); + item.setChangeBy("定时任务"); + item.setChangeTime(changeStatusMap.get(item.getNuId()+"_" + item.getInstructionTagId()).getChangeTime()); + item.setHandleTime(handleDateTime); + }); + directivePlanLogService.saveBatch(planLogList); + } +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanDateLogServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanDateLogServiceImpl.java new file mode 100644 index 00000000..9a3f1e37 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanDateLogServiceImpl.java @@ -0,0 +1,19 @@ +package com.nu.modules.biz.plan.care.service.impl; + +import com.nu.modules.biz.plan.care.entity.DirectivePlanDateLog; +import com.nu.modules.biz.plan.care.mapper.DirectivePlanDateLogMapper; +import com.nu.modules.biz.plan.care.service.IDirectivePlanDateLogService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 指令日期快照的备份 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +@Service +public class DirectivePlanDateLogServiceImpl extends ServiceImpl implements IDirectivePlanDateLogService { + +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanDateServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanDateServiceImpl.java new file mode 100644 index 00000000..6c7bc4d8 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanDateServiceImpl.java @@ -0,0 +1,25 @@ +package com.nu.modules.biz.plan.care.service.impl; + +import com.nu.entity.CareDirectiveEntity; +import com.nu.modules.biz.plan.care.entity.DirectivePlanDate; +import com.nu.modules.biz.plan.care.mapper.DirectivePlanDateMapper; +import com.nu.modules.biz.plan.care.service.IDirectivePlanDateService; +import com.nu.modules.care.api.IDirectivePlanDateApi; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 服务指令编排-日期-快照表 + * @Author: jeecg-boot + * @Date: 2026-03-20 + * @Version: V1.0 + */ +@Service +public class DirectivePlanDateServiceImpl extends ServiceImpl implements IDirectivePlanDateService, IDirectivePlanDateApi { + + @Override + public void saveTable(CareDirectiveEntity careDirectiveEntity) { + // + } +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanLogServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanLogServiceImpl.java index d575a3a0..3c45a8f6 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanLogServiceImpl.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/DirectivePlanLogServiceImpl.java @@ -25,12 +25,11 @@ public class DirectivePlanLogServiceImpl extends ServiceImpl list) { + public void batchInsert(Date now, LoginUser sysUser, List list) { List saveList = BeanUtil.copyToList(list, DirectivePlanLog.class); - Date changeTime = new Date(); saveList.forEach(item -> { item.setId(null); - item.setChangeTime(changeTime);//变更时间 + item.setChangeTime(now);//变更时间 item.setChangeBy(sysUser.getRealname());//变更人 }); saveBatch(saveList);