From bd3a79da1597a57ba855a3cda3fe33d13205c1b9 Mon Sep 17 00:00:00 2001 From: chuanxingchao Date: Thu, 12 Jun 2025 17:58:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A02013,=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provtest/domain/DrugInvoiceApplyInfo.java | 3 +- .../domain/DrugSelfInspectionApplyInfo.java | 3 +- .../provtest/domain/ImportedDrugBaseInfo.java | 3 +- .../domain/WarehouseStockApplyInfo.java | 3 +- .../provtest/entity/DynamicFieldsEntity.java | 9 ++ .../handle/AbstractEventDataHandler.java | 17 ++- .../handle/business/SubType2013Handler.java | 105 +++++++++++++++++- .../handle/business/SubType2015Handler.java | 2 +- 8 files changed, 136 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/alihealth/d2d/provtest/domain/DrugInvoiceApplyInfo.java b/src/main/java/com/alihealth/d2d/provtest/domain/DrugInvoiceApplyInfo.java index 125b1b6..3214048 100644 --- a/src/main/java/com/alihealth/d2d/provtest/domain/DrugInvoiceApplyInfo.java +++ b/src/main/java/com/alihealth/d2d/provtest/domain/DrugInvoiceApplyInfo.java @@ -5,6 +5,7 @@ import lombok.Builder; import lombok.Data; import javax.persistence.Column; +import java.math.BigDecimal; import java.util.Date; /** * 发货单信息数据子集(DrugInvoiceApplyInfo)表实体类 @@ -85,7 +86,7 @@ public class DrugInvoiceApplyInfo { private String zjgg; //包装转换比 @Column(name = "bzzhb") - private Double bzzhb; + private BigDecimal bzzhb; //包装转换比单位 @Column(name = "bzzhbdw") private String bzzhbdw; diff --git a/src/main/java/com/alihealth/d2d/provtest/domain/DrugSelfInspectionApplyInfo.java b/src/main/java/com/alihealth/d2d/provtest/domain/DrugSelfInspectionApplyInfo.java index 7f240f3..0b9b3b4 100644 --- a/src/main/java/com/alihealth/d2d/provtest/domain/DrugSelfInspectionApplyInfo.java +++ b/src/main/java/com/alihealth/d2d/provtest/domain/DrugSelfInspectionApplyInfo.java @@ -5,6 +5,7 @@ import lombok.Builder; import lombok.Data; import javax.persistence.Column; +import java.math.BigDecimal; import java.util.Date; /** * 药品自检信息数据子集(DrugSelfInspectionApplyInfo)表实体类 @@ -55,7 +56,7 @@ public class DrugSelfInspectionApplyInfo { private String bzgg; //包装转换比 @Column(name = "bzzhb") - private Double bzzhb; + private BigDecimal bzzhb; //药品有效期 @Column(name = "ypyxq") private Integer ypyxq; diff --git a/src/main/java/com/alihealth/d2d/provtest/domain/ImportedDrugBaseInfo.java b/src/main/java/com/alihealth/d2d/provtest/domain/ImportedDrugBaseInfo.java index 850ca68..04eedc9 100644 --- a/src/main/java/com/alihealth/d2d/provtest/domain/ImportedDrugBaseInfo.java +++ b/src/main/java/com/alihealth/d2d/provtest/domain/ImportedDrugBaseInfo.java @@ -5,6 +5,7 @@ import lombok.Builder; import lombok.Data; import javax.persistence.Column; +import java.math.BigDecimal; import java.util.Date; /** * 进口药品基本信息数据子集(ImportedDrugBaseInfo)表实体类 @@ -49,7 +50,7 @@ public class ImportedDrugBaseInfo { private String bzgg; //包装转换比 @Column(name = "bzzhb") - private Double bzzhb; + private BigDecimal bzzhb; //包装转换比单位 @Column(name = "bzzhbdw") private String bzzhbdw; diff --git a/src/main/java/com/alihealth/d2d/provtest/domain/WarehouseStockApplyInfo.java b/src/main/java/com/alihealth/d2d/provtest/domain/WarehouseStockApplyInfo.java index e0b3504..3ce92ca 100644 --- a/src/main/java/com/alihealth/d2d/provtest/domain/WarehouseStockApplyInfo.java +++ b/src/main/java/com/alihealth/d2d/provtest/domain/WarehouseStockApplyInfo.java @@ -5,6 +5,7 @@ import lombok.Builder; import lombok.Data; import javax.persistence.Column; +import java.math.BigDecimal; import java.util.Date; /** * 库存上报基本信息数据子集(可选)(WarehouseStockApplyInfo)表实体类 @@ -73,7 +74,7 @@ public class WarehouseStockApplyInfo { private String zjgg; //包装转换比 @Column(name = "bzzhb") - private Double bzzhb; + private BigDecimal bzzhb; //包装转换比单位 @Column(name = "bzzhbdw") private String bzzhbdw; diff --git a/src/main/java/com/alihealth/d2d/provtest/entity/DynamicFieldsEntity.java b/src/main/java/com/alihealth/d2d/provtest/entity/DynamicFieldsEntity.java index dd6a38e..c13ba4f 100644 --- a/src/main/java/com/alihealth/d2d/provtest/entity/DynamicFieldsEntity.java +++ b/src/main/java/com/alihealth/d2d/provtest/entity/DynamicFieldsEntity.java @@ -3,6 +3,7 @@ package com.alihealth.d2d.provtest.entity; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.JsonNode; +import java.math.BigDecimal; import java.util.Collections; import java.util.Date; import java.util.LinkedHashMap; @@ -72,4 +73,12 @@ public class DynamicFieldsEntity { // 实现日期转换逻辑 return null; } + public BigDecimal getBigDecimal(String name) { + try { + return new BigDecimal(getString(name)); + } catch (Exception e) { + return null; + } + } + } diff --git a/src/main/java/com/alihealth/d2d/provtest/service/handle/AbstractEventDataHandler.java b/src/main/java/com/alihealth/d2d/provtest/service/handle/AbstractEventDataHandler.java index 879ea23..f1bdf0d 100644 --- a/src/main/java/com/alihealth/d2d/provtest/service/handle/AbstractEventDataHandler.java +++ b/src/main/java/com/alihealth/d2d/provtest/service/handle/AbstractEventDataHandler.java @@ -16,12 +16,14 @@ import java.util.List; * @author Jason * @date 2025年06月05日 11:11:15 */ -public abstract class AbstractEventDataHandler implements EventDataHandler { +public abstract class AbstractEventDataHandler implements EventDataHandler { protected final Logger log = LoggerFactory.getLogger(getClass()); protected abstract Class getEntityClass(); + protected abstract IService getService(); + protected abstract T convertToEntity(EventBody eventBody, ItemDetail item, InstanceDetail detail); @Override @@ -30,13 +32,22 @@ public abstract class AbstractEventDataHandler implements EventDataHandler { for (EventBody eventBody : eventS.getVttsEvent().getEventBodyList()) { for (ItemDetail item : eventBody.getItemList()) { - for (InstanceDetail instance : item.getInstanceList()) { + if (item.getInstanceList() != null) { + for (InstanceDetail instance : item.getInstanceList()) { + try { + entities.add(convertToEntity(eventBody, item, instance)); + } catch (Exception e) { + log.error("转换实体失败", e); + } + } + } else { try { - entities.add(convertToEntity(eventBody, item, instance)); + entities.add(convertToEntity(eventBody, item, null)); } catch (Exception e) { log.error("转换实体失败", e); } } + } } diff --git a/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2013Handler.java b/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2013Handler.java index 6cc765e..aa97cd1 100644 --- a/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2013Handler.java +++ b/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2013Handler.java @@ -1,11 +1,114 @@ package com.alihealth.d2d.provtest.service.handle.business; +import com.alihealth.d2d.provtest.domain.DrugImportApplyInfo; +import com.alihealth.d2d.provtest.domain.DrugSelfInspectionApplyInfo; +import com.alihealth.d2d.provtest.entity.EventBasic; +import com.alihealth.d2d.provtest.entity.EventBody; +import com.alihealth.d2d.provtest.entity.InstanceDetail; +import com.alihealth.d2d.provtest.entity.ItemDetail; +import com.alihealth.d2d.provtest.service.IDrugImportApplyInfoService; +import com.alihealth.d2d.provtest.service.IDrugSelfInspectionApplyInfoService; +import com.alihealth.d2d.provtest.service.handle.AbstractEventDataHandler; +import com.alihealth.d2d.provtest.service.handle.EventSubType; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + /** * @author Jason * @date 2025年06月05日 11:37:52 */ +@EventSubType("2013") @Service -public class SubType2013Handler { +public class SubType2013Handler extends AbstractEventDataHandler { + + @Autowired + private IDrugSelfInspectionApplyInfoService service; + + @Override + protected Class getEntityClass() { + return DrugSelfInspectionApplyInfo.class; + } + + @Override + protected IService getService() { + return service; + } + + @Override + protected DrugSelfInspectionApplyInfo convertToEntity(EventBody eventBody, ItemDetail item, InstanceDetail instance) { + EventBasic evtBasic = eventBody.getEvtBasic(); + //时间格式 + SimpleDateFormat formatterDatetime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //日期格式 + SimpleDateFormat formatterDate = new SimpleDateFormat("yyyyMMdd"); + try { + return DrugSelfInspectionApplyInfo.builder() + .eventId(eventBody.getEventID()) + .recTime(formatterDatetime.parse(eventBody.getRecTime())) + + .ypjybgsbh(evtBasic.getString("YPJYBGSBH")) + .ymjyrq(formatterDate.parse(evtBasic.getString("YMJYRQ"))) + .ypjybgsmj(evtBasic.getString("YPJYBGSMJ")) + + .gjypbsm(item.getString("GJYPBSM")) + .gjjbywbs(item.getString("GJJBYWBS")) + .yptymc(item.getString("YPTYMC")) + .ypywmc(item.getString("YPYWMC")) + .jkypzwym(item.getString("JKYPZWYM")) + .jkyppjh(item.getString("JKYPPJH")) + .jkyppjyxq(formatterDate.parse(item.getString("JKYPPJYXQ"))) + .ypspmc(item.getString("YPSPMC")) + .ypbwm(item.getString("YPBWM")) + .jx(item.getString("JX")) + .zjgg(item.getString("ZJGG")) + .bzgg(item.getString("BZGG")) + .bzzhb(item.getBigDecimal("BZZHB")) + .ypyxq(item.getInt("YPYXQ")) + .ypyxqdw(item.getString("YPYXQDW")) + .yppzwh(item.getString("YPPZWH")) + .yppzwhyxq(formatterDate.parse(item.getString("YPPZWHYXQ"))) + .jkypzczh(item.getString("JKYPZCZH")) + .jkypzczyxq(formatterDate.parse(item.getString("JKYPZCZYXQ"))) + .ypzcfl(item.getString("YPZCFL")) + .gjjbywbs(item.getString("GJJBYWBS")) + .tsypglfl(item.getString("TSYPGLFL")) + .cfybs(item.getString("CFYBS")) + .jnypssxkcyrmc(item.getString("JNYPSSXKCYRMC")) + .tyshxydmjnypssxkcyr(item.getString("TYSHXYDMJNYPSSXKCYR")) + .jwypssxkcyrmczw(item.getString("JWYPSSXKCYRMCZW")) + .jwypssxkcyrmcyw(item.getString("JWYPSSXKCYRMCYW")) + .jwypssxkcyrdm(item.getString("JWYPSSXKCYRDM")) + .jnypscqymc(item.getString("JNYPSCQYMC")) + .tyshxydmjnypscqy(item.getString("TYSHXYDMJNYPSCQY")) + .jwypscqymczw(item.getString("JWYPSCQYMCZW")) + .jwypscqymcyw(item.getString("JWYPSCQYMCYW")) + .jwypscqydm(item.getString("JWYPSCQYDM")) + .fbzcmc(item.getString("FBZCMC")) + .tyshxydmfbzc(item.getString("TYSHXYDMFBZC")) + .ypscrq(formatterDate.parse(item.getString("YPSCRQ"))) +// .ypyxqjzrq(formatterDate.parse(item.getString("YPYXQJZRQ"))) //值为暂无不保存 + .ypscph(item.getString("YPSCPH")) + .bgrq(formatterDate.parse(item.getString("BGRQ"))) + .gzrq(formatterDatetime.parse(item.getString("GZRQ"))) + .build(); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + @Override + public String getSubType() { + return "2013"; + } + + @Override + public void handleBase(String xml, String eventId) { + + } } diff --git a/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2015Handler.java b/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2015Handler.java index 996968e..b8df7ce 100644 --- a/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2015Handler.java +++ b/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2015Handler.java @@ -73,7 +73,7 @@ public class SubType2015Handler extends AbstractEventDataHandler