From de104ebfe0634327d870161f2a9a5de3b93e1a45 Mon Sep 17 00:00:00 2001 From: daichao <1438977546@qq.com> Date: Tue, 24 Jun 2025 15:59:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E6=8E=A5=E6=94=B62017=20=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=B1=BB=E5=9E=8B=E6=97=B6=E8=BF=9B=E8=A1=8C=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E5=A4=84=E7=90=86=EF=BC=8C=E7=AD=9B=E9=80=89=E5=87=BA?= =?UTF-8?q?=E5=A4=9A=E6=AC=A1=E6=89=AB=E7=A0=81=E7=9A=84=E8=8D=AF=E5=93=81?= =?UTF-8?q?=E8=BF=BD=E6=BA=AF=E7=A0=81=E5=B9=B6=E5=81=9A=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../d2d/provtest/ProvTestClient.java | 6 +- .../MultySacnCodeRecordController.java | 20 ++++++ .../provtest/domain/MultySacnCodeRecord.java | 58 +++++++++++++++ .../d2d/provtest/generator/CodeGenerator.java | 7 +- .../mapper/MultySacnCodeRecordMapper.java | 16 +++++ .../service/IMultySacnCodeRecordService.java | 16 +++++ .../service/handle/EventData2017Handler.java | 70 +++++++++++++++++++ .../handle/business/SubType2017Handler.java | 4 +- .../impl/MultySacnCodeRecordServiceImpl.java | 20 ++++++ .../mapper/MultySacnCodeRecordMapper.xml | 5 ++ 10 files changed, 212 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/alihealth/d2d/provtest/controller/MultySacnCodeRecordController.java create mode 100644 src/main/java/com/alihealth/d2d/provtest/domain/MultySacnCodeRecord.java create mode 100644 src/main/java/com/alihealth/d2d/provtest/mapper/MultySacnCodeRecordMapper.java create mode 100644 src/main/java/com/alihealth/d2d/provtest/service/IMultySacnCodeRecordService.java create mode 100644 src/main/java/com/alihealth/d2d/provtest/service/handle/EventData2017Handler.java create mode 100644 src/main/java/com/alihealth/d2d/provtest/service/impl/MultySacnCodeRecordServiceImpl.java create mode 100644 src/main/resources/mapper/MultySacnCodeRecordMapper.xml diff --git a/src/main/java/com/alihealth/d2d/provtest/ProvTestClient.java b/src/main/java/com/alihealth/d2d/provtest/ProvTestClient.java index 7be4011..80c7fb6 100644 --- a/src/main/java/com/alihealth/d2d/provtest/ProvTestClient.java +++ b/src/main/java/com/alihealth/d2d/provtest/ProvTestClient.java @@ -55,13 +55,13 @@ public class ProvTestClient { private static final String algorithm = "RSA"; - private static final String XML_DIRECTORY = "C:\\Users\\ThinkPad\\Desktop\\pfx证书\\数据报文示例\\"; -// private static final String XML_DIRECTORY = "C:\\Users\\ThinkPad\\Desktop\\真实接收到的数据集\\"; +// private static final String XML_DIRECTORY = "C:\\Users\\ThinkPad\\Desktop\\pfx证书\\数据报文示例\\"; + private static final String XML_DIRECTORY = "C:\\Users\\ThinkPad\\Desktop\\真实接收到的数据集\\"; public static void main(String[] args) throws Exception { //数据文件内容主业务类型 10:基础信息数据 20:应用信息数据 //subType数据文件内容子业务类型 详见:数据类型字典表 基本信息(1011-1019、9001-9002) 应用信息(2011-2020、2051-2053) - testProv("2011"); + testProv("2017"); } public static void testProv(String subType) throws Exception { diff --git a/src/main/java/com/alihealth/d2d/provtest/controller/MultySacnCodeRecordController.java b/src/main/java/com/alihealth/d2d/provtest/controller/MultySacnCodeRecordController.java new file mode 100644 index 0000000..cc8edf4 --- /dev/null +++ b/src/main/java/com/alihealth/d2d/provtest/controller/MultySacnCodeRecordController.java @@ -0,0 +1,20 @@ +package com.alihealth.d2d.provtest.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; + +/** + *

+ * 药品追溯码多次扫码记录 前端控制器 + *

+ * + * @author Jason + * @since 2025-06-24 + */ +@Controller +@RequestMapping("/multy-sacn-code-record") +public class MultySacnCodeRecordController { + +} diff --git a/src/main/java/com/alihealth/d2d/provtest/domain/MultySacnCodeRecord.java b/src/main/java/com/alihealth/d2d/provtest/domain/MultySacnCodeRecord.java new file mode 100644 index 0000000..30a05f7 --- /dev/null +++ b/src/main/java/com/alihealth/d2d/provtest/domain/MultySacnCodeRecord.java @@ -0,0 +1,58 @@ +package com.alihealth.d2d.provtest.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 药品追溯码多次扫码记录 + *

+ * + * @author Jason + * @since 2025-06-24 + */ +@Getter +@Setter +@TableName("multy_sacn_code_record") +public class MultySacnCodeRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 药品追溯码 + */ + private String ypzsm; + + /** + * 数据处理标识:1-已处理,0-未处理 + */ + private Integer handleFlag; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 是否删除(0-否 1-是) + */ + private Integer isDeleted; + + +} diff --git a/src/main/java/com/alihealth/d2d/provtest/generator/CodeGenerator.java b/src/main/java/com/alihealth/d2d/provtest/generator/CodeGenerator.java index 2cbee9a..6460f7a 100644 --- a/src/main/java/com/alihealth/d2d/provtest/generator/CodeGenerator.java +++ b/src/main/java/com/alihealth/d2d/provtest/generator/CodeGenerator.java @@ -1,10 +1,7 @@ package com.alihealth.d2d.provtest.generator; -import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.FastAutoGenerator; -import com.baomidou.mybatisplus.generator.config.*; -import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import java.nio.file.Paths; @@ -16,8 +13,8 @@ import java.nio.file.Paths; public class CodeGenerator { public static void main(String[] args) { - String tables="drug_delivery_note_apply_info";// 生成多个指定表,逗号分隔 - FastAutoGenerator.create("jdbc:mysql://47.109.202.121:3306/supervisionx_trace_data", "root", "TCCT3.1415926") + String tables="multy_sacn_code_record";// 生成多个指定表,逗号分隔 + FastAutoGenerator.create("jdbc:mysql://192.168.200.45:3306/supervisionx_trace_data", "supervision", "vtHe%$zvtHeQP") .globalConfig(builder -> builder .author("Jason") .outputDir(Paths.get(System.getProperty("user.dir")) + "/src/main/java") diff --git a/src/main/java/com/alihealth/d2d/provtest/mapper/MultySacnCodeRecordMapper.java b/src/main/java/com/alihealth/d2d/provtest/mapper/MultySacnCodeRecordMapper.java new file mode 100644 index 0000000..2ab110e --- /dev/null +++ b/src/main/java/com/alihealth/d2d/provtest/mapper/MultySacnCodeRecordMapper.java @@ -0,0 +1,16 @@ +package com.alihealth.d2d.provtest.mapper; + +import com.alihealth.d2d.provtest.domain.MultySacnCodeRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 药品追溯码多次扫码记录 Mapper 接口 + *

+ * + * @author Jason + * @since 2025-06-24 + */ +public interface MultySacnCodeRecordMapper extends BaseMapper { + +} diff --git a/src/main/java/com/alihealth/d2d/provtest/service/IMultySacnCodeRecordService.java b/src/main/java/com/alihealth/d2d/provtest/service/IMultySacnCodeRecordService.java new file mode 100644 index 0000000..1ce7b2e --- /dev/null +++ b/src/main/java/com/alihealth/d2d/provtest/service/IMultySacnCodeRecordService.java @@ -0,0 +1,16 @@ +package com.alihealth.d2d.provtest.service; + +import com.alihealth.d2d.provtest.domain.MultySacnCodeRecord; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 药品追溯码多次扫码记录 服务类 + *

+ * + * @author Jason + * @since 2025-06-24 + */ +public interface IMultySacnCodeRecordService extends IService { + +} diff --git a/src/main/java/com/alihealth/d2d/provtest/service/handle/EventData2017Handler.java b/src/main/java/com/alihealth/d2d/provtest/service/handle/EventData2017Handler.java new file mode 100644 index 0000000..a0de00a --- /dev/null +++ b/src/main/java/com/alihealth/d2d/provtest/service/handle/EventData2017Handler.java @@ -0,0 +1,70 @@ +package com.alihealth.d2d.provtest.service.handle; + +import com.alihealth.d2d.provtest.domain.DrugRetailAndUseApplyInfo; +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.entity.VTTSEventS; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public abstract class EventData2017Handler implements EventDataHandler { + + protected final Logger log = LoggerFactory.getLogger(getClass()); + + protected abstract Class getEntityClass(); + + protected abstract IService getService(); + + protected abstract DrugRetailAndUseApplyInfo convertToEntity(EventBody eventBody, ItemDetail item, InstanceDetail detail, String eventId); + + @Override + public void handle(VTTSEventS eventS, String eventId) { + List entities = new ArrayList<>(); + + for (EventBody eventBody : eventS.getVttsEvent().getEventBodyList()) { + if (eventBody.getItemList() != null) { + for (ItemDetail item : eventBody.getItemList()) { + if (item.getInstanceList() != null) { + for (InstanceDetail instance : item.getInstanceList()) { + try { + entities.add(convertToEntity(eventBody, item, instance, eventId)); + } catch (Exception e) { + log.error("转换实体失败", e); + } + } + } else { + try { + entities.add(convertToEntity(eventBody, item, null, eventId)); + } catch (Exception e) { + log.error("转换实体失败", e); + } + } + + } + } else { + try { + entities.add(convertToEntity(eventBody, null, null, eventId)); + } catch (Exception e) { + log.error("转换实体失败", e); + } + } + } + + if (!entities.isEmpty()) { + //对2017 药品使用与销售数据集进行单独处理,如果出现重复的药品追溯码ypzsm,需要做记录 + List ypzsmList = entities.stream().map(entity -> entity.getYpzsm()).collect(Collectors.toList()); + List existedList = getService().getBaseMapper().selectList(new QueryWrapper().lambda() + .in(DrugRetailAndUseApplyInfo::getYpzsm, ypzsmList) + ); + + getService().saveBatch(entities); + } + } +} diff --git a/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2017Handler.java b/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2017Handler.java index c4d793b..d1535bd 100644 --- a/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2017Handler.java +++ b/src/main/java/com/alihealth/d2d/provtest/service/handle/business/SubType2017Handler.java @@ -6,7 +6,7 @@ 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.IDrugRetailAndUseApplyInfoService; -import com.alihealth.d2d.provtest.service.handle.AbstractEventDataHandler; +import com.alihealth.d2d.provtest.service.handle.EventData2017Handler; import com.alihealth.d2d.provtest.service.handle.EventSubType; import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.beans.factory.annotation.Autowired; @@ -17,7 +17,7 @@ import java.text.SimpleDateFormat; @Service @EventSubType("2017") -public class SubType2017Handler extends AbstractEventDataHandler { +public class SubType2017Handler extends EventData2017Handler { @Autowired private IDrugRetailAndUseApplyInfoService service; diff --git a/src/main/java/com/alihealth/d2d/provtest/service/impl/MultySacnCodeRecordServiceImpl.java b/src/main/java/com/alihealth/d2d/provtest/service/impl/MultySacnCodeRecordServiceImpl.java new file mode 100644 index 0000000..3908dbd --- /dev/null +++ b/src/main/java/com/alihealth/d2d/provtest/service/impl/MultySacnCodeRecordServiceImpl.java @@ -0,0 +1,20 @@ +package com.alihealth.d2d.provtest.service.impl; + +import com.alihealth.d2d.provtest.domain.MultySacnCodeRecord; +import com.alihealth.d2d.provtest.mapper.MultySacnCodeRecordMapper; +import com.alihealth.d2d.provtest.service.IMultySacnCodeRecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 药品追溯码多次扫码记录 服务实现类 + *

+ * + * @author Jason + * @since 2025-06-24 + */ +@Service +public class MultySacnCodeRecordServiceImpl extends ServiceImpl implements IMultySacnCodeRecordService { + +} diff --git a/src/main/resources/mapper/MultySacnCodeRecordMapper.xml b/src/main/resources/mapper/MultySacnCodeRecordMapper.xml new file mode 100644 index 0000000..5f1632b --- /dev/null +++ b/src/main/resources/mapper/MultySacnCodeRecordMapper.xml @@ -0,0 +1,5 @@ + + + + +