diff --git a/hxhq-modules/hxhq-integration/pom.xml b/hxhq-modules/hxhq-integration/pom.xml index f0d650f..9478f4d 100644 --- a/hxhq-modules/hxhq-integration/pom.xml +++ b/hxhq-modules/hxhq-integration/pom.xml @@ -90,11 +90,34 @@ 5.5.11 + + + + + + com.itextpdf - itext-asian - 5.2.0 + itext7-core + 7.2.5 + pom + + + + com.itextpdf + barcodes + 7.2.5 + + + + + com.itextpdf + font-asian + 7.2.5 + + + org.projectlombok lombok diff --git a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/Instrument.java b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/Instrument.java deleted file mode 100644 index e194648..0000000 --- a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/Instrument.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.hxhq.domain; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.time.LocalDate; -import java.time.LocalDateTime; - -/** - * @author zhangjing - * @date 2026/01/30 10:39 - * @description 仪器 - */ -@Data -@TableName("instrument") -public class Instrument { - /** - *仪器库存ID(主键,雪花ID) - **/ - @TableId(value = "instrument_id", type = IdType.ASSIGN_ID) - private String instrumentId; - - /** - * 名称 - **/ - @TableField(value = "name") - private String name; - - /** - * 编号 - **/ - @TableField(value = "sn") - private String sn; - - /** - * 型号 - **/ - @TableField(value = "model") - private String model; - - /** - * 所属部门 - **/ - @TableField(value = "department") - private String department; - - /** - * 下次校准日期 - **/ - @TableField(value = "calibration_date") - private LocalDateTime calibrationDate; - - /** - * 来源 - **/ - @TableField(value = "source") - private String source; - - /** - * 温层(存储条件) - **/ - @TableField(value = "storage_conditions") - private String storageConditions; - - /** - * 备注 - **/ - @TableField(value = "remark") - private String remark; - - /** - * 操作标识:1=新增,2=修改,3=删除 - **/ - @TableField(value = "operation_sign") - private Integer operationSign; -} diff --git a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/InstrumentChange.java b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/InstrumentChange.java new file mode 100644 index 0000000..253c61a --- /dev/null +++ b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/InstrumentChange.java @@ -0,0 +1,115 @@ +package com.hxhq.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * @author zhangjing + * @date 2026/01/30 10:39 + * @description 仪器设备变更记录表 + */ +@Data +@TableName("instrument_change") +public class InstrumentChange { + /** + * 仪器变更记录ID(主键,雪花ID) + **/ + @TableField(value = "instrument_change_id") + private String instrumentChangeId; + + /** + * 仪器名称 + **/ + @TableField(value = "name") + private String name; + + /** + * 仪器编号(序列号,唯一标识) + **/ + @TableField(value = "sn") + private String sn; + + /** + * 仪器型号 + **/ + @TableField(value = "model") + private String model; + + /** + * 所属部门(如:临床检验分析部) + **/ + @TableField(value = "department") + private String department; + + /** + * 下次校准日期 + **/ + @TableField(value = "calibration_date") + private LocalDateTime calibrationDate; + + /** + * 来源(生产厂家/供应商) + **/ + @TableField(value = "source") + private String source; + + /** + * 仪器状态: + 1=正常使用 + 2=禁止使用 + **/ + @TableField(value = "status") + private String status; + + /** + * 放置位置 + **/ + @TableField(value = "storage_location") + private String storageLocation; + + /** + * 备注 + **/ + @TableField(value = "remark") + private String remark; + + /** + * 数据创建(推送)时间 + **/ + @TableField(value = "create_time") + private LocalDateTime createTime; + + /** + * 操作标识:1=新增,2=修改 + **/ + @TableField(value = "operation_sign") + private Integer operationSign; + + /** + * 串口号 + **/ + @TableField(value = "serial_port") + private String serialPort; + + /** + * 波特率 + **/ + @TableField(value = "baud_rate") + private Integer baudRate; + + /** + * 数据位 + **/ + @TableField(value = "byte_size") + private Integer byteSize; + + /** + * 奇偶校验:N=无校验,O=奇校验,E=偶校验 + **/ + @TableField(value = "parity") + private String parity; +} diff --git a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/InstrumentPush.java b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/InstrumentPush.java index 4fb35a2..1bd29fe 100644 --- a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/InstrumentPush.java +++ b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/InstrumentPush.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -17,84 +18,101 @@ import java.time.LocalDateTime; @TableName("instrument_push") public class InstrumentPush { /** - *仪器推送ID(主键,雪花ID) + * 仪器变更记录ID(主键,雪花ID) **/ - @TableId(value = "instrument_push_id", type = IdType.ASSIGN_ID) + @TableField(value = "instrument_push_id") private String instrumentPushId; /** - * 名称 + * 仪器名称 **/ @TableField(value = "name") private String name; /** - * 编号 + * 仪器编号(序列号,唯一标识) **/ @TableField(value = "sn") private String sn; /** - * 试验编号 + * 仪器型号 **/ - @TableField(value = "trial_number") - private String trialNumber; + @TableField(value = "model") + private String model; /** - * 试验名称 + * 所属部门(如:临床检验分析部) **/ - @TableField(value = "trial_name") - private String trialName; + @TableField(value = "department") + private String department; /** - * 表单系统模板名 + * 下次校准日期 **/ - @TableField(value = "form_template_name") - private String formTemplateName; + @TableField(value = "calibration_date") + private LocalDate calibrationDate; /** - * 表单名 + * 来源(生产厂家/供应商) **/ - @TableField(value = "form_name") - private String formName; + @TableField(value = "source") + private String source; + /** + * 仪器状态: + 1=正常使用 + 2=禁止使用 + **/ + @TableField(value = "status") + private String status; /** - * 使用时间(可理解为主记录时间或开始时间) + * 放置位置 **/ - @TableField(value = "usage_time") - private LocalDateTime usageTime; + @TableField(value = "storage_location") + private String storageLocation; /** - * 使用时长 + * 备注 **/ - @TableField(value = "usage_duration") - private String usageDuration; + @TableField(value = "remark") + private String remark; /** - * 使用时长-单位 + * 数据创建(推送)时间 **/ - @TableField(value = "usage_duration_unit") - private String usageDurationUnit; + @TableField(value = "create_time") + private LocalDateTime createTime; /** - * 使用人 + * 操作标识:1=新增,2=修改 **/ - @TableField(value = "user_name") - private String userName; + @TableField(value = "operation_sign") + private Integer operationSign; /** - * 开始使用时间 + * 串口号 **/ - @TableField(value = "start_time") - private LocalDateTime startTime; + @TableField(value = "serial_port") + private String serialPort; /** - * 结束使用时间 + * 波特率 **/ - @TableField(value = "end_time") - private LocalDateTime endTime; + @TableField(value = "baud_rate") + private Integer baudRate; + /** + * 数据位 + **/ + @TableField(value = "byte_size") + private Integer byteSize; + /** + * 奇偶校验:N=无校验,O=奇校验,E=偶校验 + **/ + @TableField(value = "parity") + private String parity; } diff --git a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/ReagentStock.java b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/ReagentStock.java index 503b93e..71d016f 100644 --- a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/ReagentStock.java +++ b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/ReagentStock.java @@ -15,101 +15,151 @@ import java.time.LocalDateTime; @Data @TableName("reagent_stock") public class ReagentStock { - /** - *试剂库存ID(主键,雪花ID) - **/ - @TableId(value = "reagent_stock_id", type = IdType.ASSIGN_ID) - private String reagentStockId; + /** + * 试剂库存ID(主键) + **/ + @TableField(value = "reagent_stock_id") + private String reagentStockId; /** - *名称 + * 试剂名称 **/ + @TableField(value = "name") private String name; /** - *编号(唯一标识,如批次+序列) + * 试剂编号 **/ @TableField(value = "sn") private String sn; /** - *浓度/含量/纯度(数值) + * 库存数量-主(支持小数) + **/ + @TableField(value = "main_stock_count") + private BigDecimal mainStockCount; + + /** + * 库存单位-主 **/ - @TableField(value = "purity") - private BigDecimal purity; + @TableField(value = "main_stock_unit") + private String mainStockUnit; /** - *浓度/含量/纯度单位(如 mg/mL、%、mol/L) + * 库存数量-辅 **/ - private String purityUnit; + @TableField(value = "sub_stock_count") + private BigDecimal subStockCount; /** - *库存数量(支持小数) + * 库存单位-辅(如 mg、mL、g) **/ - private BigDecimal stockCount; + @TableField(value = "sub_stock_unit") + private String subStockUnit; /** - *库存单位(如 mg、mL、g) + * 换算比例 **/ - private String stockUnit; + @TableField(value = "conv_rate") + private BigDecimal convRate; /** - *规格(如 100mL/瓶) + * 规格(如 100mL/瓶) **/ + @TableField(value = "specs") private String specs; /** - *来源(供应商或制备方式) + * 生产厂家 **/ - private String source; + @TableField(value = "factory") + private String factory; /** - *所属部门 + * 所属部门(如:临床检验分析部) **/ + @TableField(value = "department") private String department; /** - *批号 + * 批号 **/ + @TableField(value = "batch_number") private String batchNumber; /** - *有效周期(数值,如 30) + * 有效周期: + 长期有效、 + 待定、 + 有效期、 + 失效期、 + 复测日期 **/ + @TableField(value = "validity_period") private String validityPeriod; /** - *有效周期单位(hour/day/month/year) + * 有效、失效、复测日期(日期格式:yyyy-MM-dd): + 1:长期有效、待定:没有效时间; + 2:有效周期:当天有效; + 3:失效期:当天无效 + 4:复测日期:当天有效; **/ - private String validityPeriodUnit; + @TableField(value = "validity_date") + private LocalDate validityDate; /** - *失效日期(精确到秒) - **/ - private LocalDateTime expiryDate; - - /** - *存储位置(如 A-01-冰箱) + * 存储位置(如 1126-2/室温A柜/A-3) **/ + @TableField(value = "storage_location") private String storageLocation; /** - *存储条件(如 -20℃避光) + * 存储条件(如 -20℃避光) **/ + @TableField(value = "storage_conditions") private String storageConditions; /** - *配置日期(仅日期) + * 配置日期(仅日期) **/ + @TableField(value = "configuration_date") private LocalDateTime configurationDate; /** - *创建时间 + * 数据创建(推送)时间 **/ - @TableField(fill = FieldFill.INSERT) + @TableField(value = "create_time") private LocalDateTime createTime; + /** + * 试剂管理分类 + **/ + @TableField(value = "reagent_manage_type") + private String reagentManageType; + + /** + * 大类 + **/ + @TableField(value = "main_category") + private String mainCategory; + + /** + * 亚类 + **/ + @TableField(value = "sub_category") + private String subCategory; + /** + * 分装编号 + **/ + @TableField(value = "package_no") + private String packageNo; + /** + * 物资系统-试剂主键id(唯一) + **/ + @TableField(value = "ext_id") + private String extId; } diff --git a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/ReagentStockPush.java b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/ReagentStockPush.java index 6cd1cdb..cfaec2b 100644 --- a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/ReagentStockPush.java +++ b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/domain/ReagentStockPush.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -15,144 +16,149 @@ import java.time.LocalDateTime; @TableName("reagent_stock_push") public class ReagentStockPush { /** - * 试剂库存推送ID(主键,雪花ID) + * 试剂库存ID(主键) **/ - @TableId(value = "reagent_stock_push_id", type = IdType.ASSIGN_ID) - private String reagentStockPushId; + @TableField(value = "reagent_stock_push_id") + private String reagentStockId; /** - * 名称 + * 试剂名称 **/ + @TableField(value = "name") private String name; /** - * 编号(唯一标识,如批次+序列) + * 试剂编号 **/ @TableField(value = "sn") private String sn; /** - * 浓度/含量/纯度(数值) + * 库存数量-主(支持小数) **/ - @TableField(value = "purity") - private BigDecimal purity; + @TableField(value = "main_stock_count") + private BigDecimal mainStockCount; /** - * 浓度/含量/纯度单位(如 mg/mL、%、mol/L) + * 库存单位-主 **/ - private String purityUnit; + @TableField(value = "main_stock_unit") + private String mainStockUnit; /** - * 库存数量(支持小数) + * 库存数量-辅 **/ - private BigDecimal stockCount; + @TableField(value = "sub_stock_count") + private BigDecimal subStockCount; /** - * 库存单位(如 mg、mL、g) + * 库存单位-辅(如 mg、mL、g) **/ - private String stockUnit; + @TableField(value = "sub_stock_unit") + private String subStockUnit; + + /** + * 换算比例 + **/ + @TableField(value = "conv_rate") + private BigDecimal convRate; /** * 规格(如 100mL/瓶) **/ + @TableField(value = "specs") private String specs; /** - * 来源(供应商或制备方式) + * 生产厂家 **/ - private String source; + @TableField(value = "factory") + private String factory; /** - * 所属部门 + * 所属部门(如:临床检验分析部) **/ + @TableField(value = "department") private String department; /** * 批号 **/ + @TableField(value = "batch_number") private String batchNumber; /** - * 有效周期(数值,如 30) + * 有效周期: + 长期有效、 + 待定、 + 有效期、 + 失效期、 + 复测日期 **/ + @TableField(value = "validity_period") private String validityPeriod; /** - * 有效周期单位(hour/day/month/year) - **/ - private String validityPeriodUnit; - - /** - * 失效日期(精确到秒) + * 有效、失效、复测日期(日期格式:yyyy-MM-dd): + 1:长期有效、待定:没有效时间; + 2:有效周期:当天有效; + 3:失效期:当天无效 + 4:复测日期:当天有效; **/ - private LocalDateTime expiryDate; + @TableField(value = "validity_date") + private LocalDate validityDate; /** - * 存储位置(如 A-01-冰箱) + * 存储位置(如 1126-2/室温A柜/A-3) **/ + @TableField(value = "storage_location") private String storageLocation; /** * 存储条件(如 -20℃避光) **/ + @TableField(value = "storage_conditions") private String storageConditions; /** * 配置日期(仅日期) **/ + @TableField(value = "configuration_date") private LocalDateTime configurationDate; /** - * 创建时间 + * 数据创建(推送)时间 **/ - @TableField(fill = FieldFill.INSERT) + @TableField(value = "create_time") private LocalDateTime createTime; /** - * 修改时间 - **/ - @TableField(fill = FieldFill.INSERT_UPDATE) - private LocalDateTime updateTime; - - /** - * 创建者(用户ID) - **/ - @TableField(fill = FieldFill.INSERT) - private String createBy; - - /** - * 修改者 - **/ - @TableField(fill = FieldFill.INSERT_UPDATE) - private String updateBy; - - - /** - * 逻辑删除标记(0-未删除,1-已删除) + * 试剂管理分类 **/ - private Integer isDeleted; + @TableField(value = "reagent_manage_type") + private String reagentManageType; /** - * 试验编号 + * 大类 **/ - @TableField(value = "trial_number") - private String trialNumber; + @TableField(value = "main_category") + private String mainCategory; /** - * 试验名称 + * 亚类 **/ - @TableField(value = "trial_name") - private String trialName; + @TableField(value = "sub_category") + private String subCategory; /** - * 表单系统模板名 + * 分装编号 **/ - @TableField(value = "form_template_name") - private String formTemplateName; + @TableField(value = "package_no") + private String packageNo; /** - * 表单名 + * 物资系统-试剂主键id(唯一) **/ - @TableField(value = "form_name") - private String formName; + @TableField(value = "ext_id") + private String extId; } diff --git a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/mapper/InstrumentMapper.java b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/mapper/InstrumentMapper.java index c5c7b4d..8897534 100644 --- a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/mapper/InstrumentMapper.java +++ b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/mapper/InstrumentMapper.java @@ -2,8 +2,7 @@ package com.hxhq.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.hxhq.domain.Instrument; -import com.hxhq.domain.ReagentStock; +import com.hxhq.domain.InstrumentChange; import java.util.List; @@ -12,9 +11,9 @@ import java.util.List; * * @author hxhq */ -public interface InstrumentMapper extends BaseMapper +public interface InstrumentMapper extends BaseMapper { - List notSync(); + List notSync(); } \ No newline at end of file diff --git a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/service/impl/InstrumentServiceImpl.java b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/service/impl/InstrumentServiceImpl.java index bb6606b..77e99ba 100644 --- a/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/service/impl/InstrumentServiceImpl.java +++ b/hxhq-modules/hxhq-integration/src/main/java/com/hxhq/service/impl/InstrumentServiceImpl.java @@ -2,7 +2,7 @@ package com.hxhq.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hxhq.common.EntityConstants; -import com.hxhq.domain.Instrument; +import com.hxhq.domain.InstrumentChange; import com.hxhq.domain.InstrumentPush; import com.hxhq.domain.SyncLog; import com.hxhq.domain.Yq; @@ -28,7 +28,7 @@ import java.util.stream.Collectors; * @description */ @Service -public class InstrumentServiceImpl extends ServiceImpl implements InstrumentService { +public class InstrumentServiceImpl extends ServiceImpl implements InstrumentService { @Resource YqService yqService; @@ -44,13 +44,13 @@ public class InstrumentServiceImpl extends ServiceImpl list = baseMapper.notSync(); + List list = baseMapper.notSync(); if (list == null || list.isEmpty()) { return ; } //仪器 List sjList = changeToYq(list); - //这里sjList 里 yq 里通过bh字段去更新已有数据,如果没有相同的就新增,该怎么处理。 + //这里sjList 里 yq 里通过bh字段去更新已有数据,如果没有相同的就新增。 performUpsertByBh(sjList); //日志 @@ -125,12 +125,12 @@ public class InstrumentServiceImpl extends ServiceImpl getLogList(List list) { + private List getLogList(List list) { List syncLogList = new ArrayList<>(); LocalDateTime now = LocalDateTime.now(); list.forEach(item ->{ SyncLog syncLog = new SyncLog(); - syncLog.setSourceRecordId(item.getInstrumentId()); + syncLog.setSourceRecordId(item.getInstrumentChangeId()); syncLog.setTargetSystem(EntityConstants.SYS_HXHQ); syncLog.setSourceType(EntityConstants.LOG_INSTRUMENT); syncLog.setCreatedAt(now); @@ -141,7 +141,7 @@ public class InstrumentServiceImpl extends ServiceImpl changeToYq(List list) { + private List changeToYq(List list) { List yqList = new ArrayList<>(); list.forEach(item ->{ Yq sj = new Yq(); @@ -154,8 +154,8 @@ public class InstrumentServiceImpl extends ServiceImpl - SELECT i.* FROM instrument i LEFT JOIN sync_log s