在接收2017 数据类型时进行业务处理,筛选出多次扫码的药品追溯码并做记录
This commit is contained in:
parent
440014eb96
commit
de104ebfe0
|
@ -55,13 +55,13 @@ public class ProvTestClient {
|
||||||
private static final String algorithm = "RSA";
|
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\\pfx证书\\数据报文示例\\";
|
||||||
// private static final String XML_DIRECTORY = "C:\\Users\\ThinkPad\\Desktop\\真实接收到的数据集\\";
|
private static final String XML_DIRECTORY = "C:\\Users\\ThinkPad\\Desktop\\真实接收到的数据集\\";
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
//数据文件内容主业务类型 10:基础信息数据 20:应用信息数据
|
//数据文件内容主业务类型 10:基础信息数据 20:应用信息数据
|
||||||
//subType数据文件内容子业务类型 详见:数据类型字典表 基本信息(1011-1019、9001-9002) 应用信息(2011-2020、2051-2053)
|
//subType数据文件内容子业务类型 详见:数据类型字典表 基本信息(1011-1019、9001-9002) 应用信息(2011-2020、2051-2053)
|
||||||
testProv("2011");
|
testProv("2017");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void testProv(String subType) throws Exception {
|
public static void testProv(String subType) throws Exception {
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.alihealth.d2d.provtest.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 药品追溯码多次扫码记录 前端控制器
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Jason
|
||||||
|
* @since 2025-06-24
|
||||||
|
*/
|
||||||
|
@Controller
|
||||||
|
@RequestMapping("/multy-sacn-code-record")
|
||||||
|
public class MultySacnCodeRecordController {
|
||||||
|
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 药品追溯码多次扫码记录
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @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;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,10 +1,7 @@
|
||||||
package com.alihealth.d2d.provtest.generator;
|
package com.alihealth.d2d.provtest.generator;
|
||||||
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.generator.AutoGenerator;
|
|
||||||
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
|
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 com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
|
||||||
|
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
@ -16,8 +13,8 @@ import java.nio.file.Paths;
|
||||||
public class CodeGenerator {
|
public class CodeGenerator {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
String tables="drug_delivery_note_apply_info";// 生成多个指定表,逗号分隔
|
String tables="multy_sacn_code_record";// 生成多个指定表,逗号分隔
|
||||||
FastAutoGenerator.create("jdbc:mysql://47.109.202.121:3306/supervisionx_trace_data", "root", "TCCT3.1415926")
|
FastAutoGenerator.create("jdbc:mysql://192.168.200.45:3306/supervisionx_trace_data", "supervision", "vtHe%$zvtHeQP")
|
||||||
.globalConfig(builder -> builder
|
.globalConfig(builder -> builder
|
||||||
.author("Jason")
|
.author("Jason")
|
||||||
.outputDir(Paths.get(System.getProperty("user.dir")) + "/src/main/java")
|
.outputDir(Paths.get(System.getProperty("user.dir")) + "/src/main/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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 药品追溯码多次扫码记录 Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Jason
|
||||||
|
* @since 2025-06-24
|
||||||
|
*/
|
||||||
|
public interface MultySacnCodeRecordMapper extends BaseMapper<MultySacnCodeRecord> {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.alihealth.d2d.provtest.service;
|
||||||
|
|
||||||
|
import com.alihealth.d2d.provtest.domain.MultySacnCodeRecord;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 药品追溯码多次扫码记录 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Jason
|
||||||
|
* @since 2025-06-24
|
||||||
|
*/
|
||||||
|
public interface IMultySacnCodeRecordService extends IService<MultySacnCodeRecord> {
|
||||||
|
|
||||||
|
}
|
|
@ -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<DrugRetailAndUseApplyInfo> getEntityClass();
|
||||||
|
|
||||||
|
protected abstract IService<DrugRetailAndUseApplyInfo> getService();
|
||||||
|
|
||||||
|
protected abstract DrugRetailAndUseApplyInfo convertToEntity(EventBody eventBody, ItemDetail item, InstanceDetail detail, String eventId);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(VTTSEventS eventS, String eventId) {
|
||||||
|
List<DrugRetailAndUseApplyInfo> 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<String> ypzsmList = entities.stream().map(entity -> entity.getYpzsm()).collect(Collectors.toList());
|
||||||
|
List<DrugRetailAndUseApplyInfo> existedList = getService().getBaseMapper().selectList(new QueryWrapper<DrugRetailAndUseApplyInfo>().lambda()
|
||||||
|
.in(DrugRetailAndUseApplyInfo::getYpzsm, ypzsmList)
|
||||||
|
);
|
||||||
|
|
||||||
|
getService().saveBatch(entities);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,7 +6,7 @@ import com.alihealth.d2d.provtest.entity.EventBody;
|
||||||
import com.alihealth.d2d.provtest.entity.InstanceDetail;
|
import com.alihealth.d2d.provtest.entity.InstanceDetail;
|
||||||
import com.alihealth.d2d.provtest.entity.ItemDetail;
|
import com.alihealth.d2d.provtest.entity.ItemDetail;
|
||||||
import com.alihealth.d2d.provtest.service.IDrugRetailAndUseApplyInfoService;
|
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.alihealth.d2d.provtest.service.handle.EventSubType;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -17,7 +17,7 @@ import java.text.SimpleDateFormat;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@EventSubType("2017")
|
@EventSubType("2017")
|
||||||
public class SubType2017Handler extends AbstractEventDataHandler<DrugRetailAndUseApplyInfo> {
|
public class SubType2017Handler extends EventData2017Handler {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IDrugRetailAndUseApplyInfoService service;
|
private IDrugRetailAndUseApplyInfoService service;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 药品追溯码多次扫码记录 服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Jason
|
||||||
|
* @since 2025-06-24
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class MultySacnCodeRecordServiceImpl extends ServiceImpl<MultySacnCodeRecordMapper, MultySacnCodeRecord> implements IMultySacnCodeRecordService {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.alihealth.d2d.provtest.mapper.MultySacnCodeRecordMapper">
|
||||||
|
|
||||||
|
</mapper>
|
Loading…
Reference in New Issue