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
-