修改优化
This commit is contained in:
parent
45f372cec8
commit
3c2f6560d0
60
sql/data.sql
60
sql/data.sql
|
@ -1,17 +1,20 @@
|
|||
CREATE TABLE receive_data_log (
|
||||
event_id VARCHAR(32) PRIMARY KEY COMMENT '事件流水号',
|
||||
process_id VARCHAR(32) NOT NULL COMMENT '传输标记号',
|
||||
event_type VARCHAR(100) NOT NULL COMMENT '数据文件内容主业务类型',
|
||||
sub_type VARCHAR(50) NOT NULL COMMENT '数据文件内容子业务类型',
|
||||
data TEXT COMMENT '数据文件内容',
|
||||
ver VARCHAR(10) COMMENT 'API协议版本',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
is_deleted TINYINT DEFAULT 0 COMMENT '是否删除(0-否 1-是)',
|
||||
INDEX idx_process_id (process_id),
|
||||
INDEX idx_event_type (event_type),
|
||||
INDEX idx_sub_type (sub_type)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='接收数据日志信息表';
|
||||
CREATE TABLE `receive_data_log` (
|
||||
`event_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事件流水号',
|
||||
`process_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '传输标记号',
|
||||
`event_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '数据文件内容主业务类型',
|
||||
`event_type_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '数据文件内容主业务类型名称',
|
||||
`sub_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '数据文件内容子业务类型',
|
||||
`sub_type_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '数据文件内容子业务类型名称',
|
||||
`data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '数据文件内容',
|
||||
`ver` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API协议版本',
|
||||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`is_deleted` tinyint DEFAULT '0' COMMENT '是否删除(0-否 1-是)',
|
||||
PRIMARY KEY (`event_id`) USING BTREE,
|
||||
KEY `idx_process_id` (`process_id`) USING BTREE,
|
||||
KEY `idx_event_type` (`event_type`) USING BTREE,
|
||||
KEY `idx_sub_type` (`sub_type`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='接收数据日志信息表';
|
||||
|
||||
CREATE TABLE domestic_pharma_base_info (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||||
|
@ -46,3 +49,32 @@ CREATE TABLE domestic_pharma_base_info (
|
|||
INDEX idx_jnypscqymc (jnypscqymc),
|
||||
INDEX idx_zsdzszxszzq (zsdzszxszzq)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='境内药品生产企业基本信息数据表';
|
||||
|
||||
|
||||
CREATE TABLE `domestic_drug_production_apply_info` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`event_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事件流水号',
|
||||
`rec_time` datetime NOT NULL COMMENT '事件响应时间',
|
||||
`ypzsm` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '药品追溯码',
|
||||
`syjbzypzsm` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '上一级包装药品追溯码',
|
||||
`bzcj` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '包装层级',
|
||||
`ymzt` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '暂无',
|
||||
`tyshxydmscqy` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '统一社会信用代码',
|
||||
`scqymc` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '境内药品生产企业名称',
|
||||
`yptymc` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '药品通用名称',
|
||||
`gjypbsm` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '国家药品标识码',
|
||||
`ymscph` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '药品生产批号',
|
||||
`scrq` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '药品生产日期',
|
||||
`ymyxqjzrq` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '药品有效期截止日期',
|
||||
`scsl` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '生产数量',
|
||||
`scdz` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '生产地址',
|
||||
`rkdbh` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '入库单编号',
|
||||
`rksj` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '入库时间',
|
||||
`rkdwmc` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '入库单位名称',
|
||||
`rkdwtyshxydm` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '入库单位统一社会信用代码',
|
||||
`rkdwlx` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '入库单位类型',
|
||||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`is_deleted` tinyint DEFAULT '0' COMMENT '是否删除(0-否 1-是)',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='国产药品生产信息数据子集';
|
|
@ -6,13 +6,19 @@ import com.alihealth.d2d.provtest.utils.Base64;
|
|||
import com.alihealth.d2d.provtest.utils.EventPojo;
|
||||
import com.alihealth.d2d.provtest.utils.KeyStoreUtil;
|
||||
import com.alihealth.d2d.provtest.utils.StreamUtil;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
|
||||
import javax.crypto.BadPaddingException;
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.IllegalBlockSizeException;
|
||||
import javax.crypto.NoSuchPaddingException;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.security.*;
|
||||
import java.security.interfaces.RSAPublicKey;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
|
@ -49,20 +55,26 @@ public class ProvTestClient {
|
|||
private static final String algorithm = "RSA";
|
||||
|
||||
|
||||
private static final String XML_DIRECTORY = "D:\\ynyp\\药品追溯\\省市对接(药品v0.19)-通用版\\省市对接(药品v0.19)-通用版\\数据报文示例\\";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
//数据文件内容主业务类型 10:基础信息数据 20:应用信息数据
|
||||
//subType数据文件内容子业务类型 详见:数据类型字典表 基本信息(1011-1019、9001-9002) 应用信息(2011-2020、2051-2053)
|
||||
testProv("2011");
|
||||
|
||||
}
|
||||
|
||||
public static void testProv(String subType) throws Exception{
|
||||
//入参
|
||||
String fileName = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 20);
|
||||
//需要同步的xml
|
||||
String data = StreamUtil.getStreamContent(fileName, getData());
|
||||
//需要同步的xml(10-基本信息集 20-应用信息集)
|
||||
String data = StreamUtil.getStreamContent(fileName, getData(subType));
|
||||
//流水号
|
||||
String processId = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 20);
|
||||
//事件编号
|
||||
String eventId = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 20);
|
||||
//数据文件内容主业务类型 10:基础信息数据
|
||||
//20:应用信息数据
|
||||
String eventType = "10";
|
||||
//数据文件内容子业务类型 详见:数据类型字典表
|
||||
String subType = "1011";
|
||||
//数据文件内容主业务类型 10:基础信息数据 20:应用信息数据
|
||||
//subType数据文件内容子业务类型 详见:数据类型字典表
|
||||
|
||||
//获取公钥
|
||||
String publicKey = getPublicKey();
|
||||
|
@ -86,6 +98,10 @@ public class ProvTestClient {
|
|||
Map<String, String> paramMap = new HashMap<>();
|
||||
paramMap.put("process_id", processId);
|
||||
paramMap.put("event_id", eventId);
|
||||
String eventType="10";
|
||||
if(subType.startsWith("20")){//20开头
|
||||
eventType="20";
|
||||
}
|
||||
paramMap.put("event_type", eventType);
|
||||
paramMap.put("event", JSONObject.toJSONString(eventPojo));
|
||||
paramMap.put("timestamp", timestamp);
|
||||
|
@ -97,7 +113,6 @@ public class ProvTestClient {
|
|||
System.out.println(body);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -178,191 +193,23 @@ public class ProvTestClient {
|
|||
|
||||
return dateFormat.format(date);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用于传输的xml
|
||||
* 动态获取文件内容
|
||||
* @param subType
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
// private static String getData(){
|
||||
// return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
|
||||
// "\n" +
|
||||
// "<VTTSBasic xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
|
||||
// " xsi:noNamespaceSchemaLocation=\"1011.xsd\">\n" +
|
||||
// "\n" +
|
||||
// " <datasetName>疫苗生产企业基本信息数据子集</datasetName>\n" +
|
||||
// " <dataset>\n" +
|
||||
// " <data>\n" +
|
||||
// " <TYSHXYDM>912101131181555503</TYSHXYDM>\n" +
|
||||
// " <QYMC>辽宁依生生物制药有限公司</QYMC>\n" +
|
||||
// " <QYLX>有限公司</QYLX>\n" +
|
||||
// " <ZSDZ>新城子区财落镇大辛二村</ZSDZ>\n" +
|
||||
// " <ZSDZGJHDQ>156</ZSDZGJHDQ>\n" +
|
||||
// " <ZSDZSZXSZZQ>210000</ZSDZSZXSZZQ>\n" +
|
||||
// " <ZSDZSQZZZM>210100</ZSDZSQZZZM>\n" +
|
||||
// " <ZSDZXZZXXJS>000044</ZSDZXZZXXJS>\n" +
|
||||
// " <ZSDZXZJDBSC>新城子区财落镇大辛二村</ZSDZXZJDBSC>\n" +
|
||||
// " <ZSDZCJLLD>新城子区财落镇大辛二村</ZSDZCJLLD>\n" +
|
||||
// " <ZSDZMPHM>新城子区财落镇大辛二村</ZSDZMPHM>\n" +
|
||||
// " <FDDBR>张译</FDDBR>\n" +
|
||||
// " <ZCZB>4105.512万</ZCZB>\n" +
|
||||
// " <CLRQ>19190101</CLRQ>\n" +
|
||||
// " <YYQX>2005-06-29至无固定期限</YYQX>\n" +
|
||||
// " <JYFW>无</JYFW>\n" +
|
||||
// " <DJJG>沈阳市沈北新区市场监督管理局</DJJG>\n" +
|
||||
// " <GDDHHM>无</GDDHHM>\n" +
|
||||
// " <CZHM>无</CZHM>\n" +
|
||||
// " <DZXX>无</DZXX>\n" +
|
||||
// " <QYWZ>无</QYWZ>\n" +
|
||||
// " <LXR>无</LXR>\n" +
|
||||
// " <LXDH>无</LXDH>\n" +
|
||||
// " <ZSGPS></ZSGPS> </data>\n" +
|
||||
// "\n" +
|
||||
// "\n" +
|
||||
// " <data>\n" +
|
||||
// " <TYSHXYDM>91120116681888972M</TYSHXYDM>\n" +
|
||||
// " <QYMC>康希诺生物股份公司</QYMC>\n" +
|
||||
// " <QYLX>股份有限公司(中外合资、上市)</QYLX>\n" +
|
||||
// " <ZSDZ>天津经济技术开发区西区南大街185号西区生物医药园四层401-420号</ZSDZ>\n" +
|
||||
// " <ZSDZGJHDQ>156</ZSDZGJHDQ>\n" +
|
||||
// " <ZSDZSZXSZZQ>120000</ZSDZSZXSZZQ>\n" +
|
||||
// " <ZSDZSQZZZM>120000</ZSDZSQZZZM>\n" +
|
||||
// " <ZSDZXZZXXJS>000035</ZSDZXZZXXJS>\n" +
|
||||
// " <ZSDZXZJDBSC>西区南大街185号西区生物医药园四层401-420号</ZSDZXZJDBSC>\n" +
|
||||
// " <ZSDZCJLLD>西区南大街185号西区生物医药园四层401-420号</ZSDZCJLLD>\n" +
|
||||
// " <ZSDZMPHM>生物医药园四层401-420号</ZSDZMPHM>\n" +
|
||||
// " <FDDBR>YU XUEFENG(宇学峰)</FDDBR>\n" +
|
||||
// " <ZCZB>77706.99万</ZCZB>\n" +
|
||||
// " <CLRQ>19910101</CLRQ>\n" +
|
||||
// " <YYQX>2009-01-13至2059-01-12</YYQX>\n" +
|
||||
// " <JYFW>无</JYFW>\n" +
|
||||
// " <DJJG>天津市滨海新区市场和质量监督管理局</DJJG>\n" +
|
||||
// " <GDDHHM>无</GDDHHM>\n" +
|
||||
// " <CZHM>无</CZHM>\n" +
|
||||
// " <DZXX>无</DZXX>\n" +
|
||||
// " <QYWZ>www.cansinotech.com</QYWZ>\n" +
|
||||
// " <LXR>无</LXR>\n" +
|
||||
// " <LXDH>无</LXDH>\n" +
|
||||
// " <ZSGPS></ZSGPS> </data>\n" +
|
||||
// "\n" +
|
||||
// "\n" +
|
||||
// "\n" +
|
||||
// " <data>\n" +
|
||||
// " <TYSHXYDM>9132129168412218X6</TYSHXYDM>\n" +
|
||||
// " <QYMC>江苏金迪克生物技术有限公司</QYMC>\n" +
|
||||
// " <QYLX>有限公司</QYLX>\n" +
|
||||
// " <ZSDZ>泰州市郁金路12号</ZSDZ>\n" +
|
||||
// " <ZSDZGJHDQ>156</ZSDZGJHDQ>\n" +
|
||||
// " <ZSDZSZXSZZQ>320000</ZSDZSZXSZZQ>\n" +
|
||||
// " <ZSDZSQZZZM>321200</ZSDZSQZZZM>\n" +
|
||||
// " <ZSDZXZZXXJS>000025</ZSDZXZZXXJS>\n" +
|
||||
// " <ZSDZXZJDBSC>郁金路12号</ZSDZXZJDBSC>\n" +
|
||||
// " <ZSDZCJLLD>郁金路12号</ZSDZCJLLD>\n" +
|
||||
// " <ZSDZMPHM>郁金路12号</ZSDZMPHM>\n" +
|
||||
// " <FDDBR>余军</FDDBR>\n" +
|
||||
// " <ZCZB>无</ZCZB>\n" +
|
||||
// " <CLRQ>19900101</CLRQ>\n" +
|
||||
// " <YYQX>无</YYQX>\n" +
|
||||
// " <JYFW>无</JYFW>\n" +
|
||||
// " <DJJG>无</DJJG>\n" +
|
||||
// " <GDDHHM>无</GDDHHM>\n" +
|
||||
// " <CZHM>无</CZHM>\n" +
|
||||
// " <DZXX>无</DZXX>\n" +
|
||||
// " <QYWZ>无</QYWZ>\n" +
|
||||
// " <LXR>无</LXR>\n" +
|
||||
// " <LXDH>无</LXDH>\n" +
|
||||
// " <ZSGPS></ZSGPS> </data>\n" +
|
||||
// "\n" +
|
||||
// "\n" +
|
||||
// " <data>\n" +
|
||||
// " <TYSHXYDM>912200007307650053</TYSHXYDM>\n" +
|
||||
// " <QYMC>吉林亚泰生物药业股份有限公司</QYMC>\n" +
|
||||
// " <QYLX>股份有限公司</QYLX>\n" +
|
||||
// " <ZSDZ>吉林省长春市高新开发区北湖科技开发区高科技中心B区537-A室</ZSDZ>\n" +
|
||||
// " <ZSDZGJHDQ>156</ZSDZGJHDQ>\n" +
|
||||
// " <ZSDZSZXSZZQ>220000</ZSDZSZXSZZQ>\n" +
|
||||
// " <ZSDZSQZZZM>220100</ZSDZSQZZZM>\n" +
|
||||
// " <ZSDZXZZXXJS>000000</ZSDZXZZXXJS>\n" +
|
||||
// " <ZSDZXZJDBSC>高新开发区北湖科技开发区高科技中心B区537-A室</ZSDZXZJDBSC>\n" +
|
||||
// " <ZSDZCJLLD>高新开发区北湖科技开发区高科技中心B区537-A室</ZSDZCJLLD>\n" +
|
||||
// " <ZSDZMPHM>高科技中心B区537-A室</ZSDZMPHM>\n" +
|
||||
// " <FDDBR>刘晓峰</FDDBR>\n" +
|
||||
// " <ZCZB>43564.770000万</ZCZB>\n" +
|
||||
// " <CLRQ>19940307</CLRQ>\n" +
|
||||
// " <YYQX>2010-06-30至2020-12-31</YYQX>\n" +
|
||||
// " <JYFW>小容量注射剂(卡介菌多糖核酸注射液)、疫苗[人用狂犬病疫苗(地鼠肾细胞)]生产(药品生产许可证有效期至2020年12月31日)及技术咨询、技术服务、研究开发;医疗器械研发、生产和销售;第Ⅰ类、第Ⅱ类、第Ⅲ类体外诊断试剂研发、生产及销售;消毒产品(危险化学品除外)的研发、生产及销售。(依法须经批准的项目,经相关部门批准后方可开展经营活动)</JYFW>\n" +
|
||||
// " <DJJG>吉林省市场监督管理厅</DJJG>\n" +
|
||||
// " <GDDHHM>无</GDDHHM>\n" +
|
||||
// " <CZHM>无</CZHM>\n" +
|
||||
// " <DZXX>无</DZXX>\n" +
|
||||
// " <QYWZ>无</QYWZ>\n" +
|
||||
// " <LXR>无</LXR>\n" +
|
||||
// " <LXDH>无</LXDH>\n" +
|
||||
// " <ZSGPS></ZSGPS>\n" +
|
||||
// " </data>\n" +
|
||||
// " </dataset>\n" +
|
||||
// " </VTTSBasic>\n";
|
||||
// }
|
||||
private static String getData(String subType) throws IOException {
|
||||
// 构建文件名
|
||||
String fileName = subType + ".xml";
|
||||
// 获取文件路径
|
||||
File file = ResourceUtils.getFile(XML_DIRECTORY + fileName);
|
||||
Path path = Paths.get(file.getAbsolutePath());
|
||||
|
||||
// 读取文件内容并返回
|
||||
return new String(Files.readAllBytes(path));
|
||||
|
||||
private static String getData(){
|
||||
return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
|
||||
"\n" +
|
||||
" <VTTSBasic>\n" +
|
||||
"<datasetName>境内药品生产企业基本信息数据子集</datasetName>\n" +
|
||||
"<dataset>\n" +
|
||||
"<data>\n" +
|
||||
"<TYSHXYDM>911100007635353107</TYSHXYDM>\n" +
|
||||
"<JNYPSCQYMC>上海药业有限公司</JNYPSCQYMC>\n" +
|
||||
"<JNYPSCQYLX>股份有限公司</JNYPSCQYLX>\n" +
|
||||
"<ZSDZ>吉林省长春市高新开发区北湖科技开发区高科技中心B区537-A室 </ZSDZ>\n" +
|
||||
"<ZSDZGJHDQ>156</ZSDZGJHDQ>\n" +
|
||||
"<ZSDZSZXSZZQ>220000</ZSDZSZXSZZQ>\n" +
|
||||
"<ZSDZSQZZZM>220100</ZSDZSQZZZM>\n" +
|
||||
"<ZSDZXZZXXJS>000000</ZSDZXZZXXJS>\n" +
|
||||
"<ZSDZXZJDBSC>高新开发区北湖科技开发区高科技中心B区537-A室 </ZSDZXZJDBSC>\n" +
|
||||
"<ZSDZCJLLD>高新开发区北湖科技开发区高科技中心B区537-A室</ZSDZCJLLD>\n" +
|
||||
"<ZSDZMPHM>高科技中心B区537-A室</ZSDZMPHM>\n" +
|
||||
"<FDDBR>刘晓峰</FDDBR>\n" +
|
||||
"<ZCZB>43564.770000万</ZCZB>\n" +
|
||||
"<CLRQ>19940307</CLRQ>\n" +
|
||||
"<YYQX>2010-06-30至2020-12-31</YYQX>\n" +
|
||||
"<JYFW>小容量注射剂</JYFW>\n" +
|
||||
"<DJJG>上海市闵行区向阳路888号</DJJG>\n" +
|
||||
"<GDDHHM>0531-8291****</GDDHHM>\n" +
|
||||
"<CZHM>0531-8291****</CZHM>\n" +
|
||||
"<DZXX>***@dsyywl.com</DZXX>\n" +
|
||||
"<QYWZ>www.dsyywl.com.cn</QYWZ>\n" +
|
||||
"<LXR>张三</LXR>\n" +
|
||||
"<LXDH>0531-8291****</LXDH>\n" +
|
||||
"<ZSGPS>113.54,22.19</ZSGPS>\n" +
|
||||
"</data>\n" +
|
||||
"<data>\n" +
|
||||
"<TYSHXYDM>911100007635353107</TYSHXYDM>\n" +
|
||||
"<JNYPSCQYMC>上海药业有限公司</JNYPSCQYMC>\n" +
|
||||
"<JNYPSCQYLX>股份有限公司</JNYPSCQYLX>\n" +
|
||||
"<ZSDZ>吉林省长春市高新开发区北湖科技开发区高科技中心B区537-A室 </ZSDZ>\n" +
|
||||
"<ZSDZGJHDQ>156</ZSDZGJHDQ>\n" +
|
||||
"<ZSDZSZXSZZQ>220000</ZSDZSZXSZZQ>\n" +
|
||||
"<ZSDZSQZZZM>220100</ZSDZSQZZZM>\n" +
|
||||
"<ZSDZXZZXXJS>000000</ZSDZXZZXXJS>\n" +
|
||||
"<ZSDZXZJDBSC>高新开发区北湖科技开发区高科技中心B区537-A室 </ZSDZXZJDBSC>\n" +
|
||||
"<ZSDZCJLLD>高新开发区北湖科技开发区高科技中心B区537-A室</ZSDZCJLLD>\n" +
|
||||
"<ZSDZMPHM>高科技中心B区537-A室</ZSDZMPHM>\n" +
|
||||
"<FDDBR>刘晓峰</FDDBR>\n" +
|
||||
"<ZCZB>43564.770000万</ZCZB>\n" +
|
||||
"<CLRQ>19940307</CLRQ>\n" +
|
||||
"<YYQX>2010-06-30至2020-12-31</YYQX>\n" +
|
||||
"<JYFW>小容量注射剂</JYFW>\n" +
|
||||
"<DJJG>上海市闵行区向阳路888号</DJJG>\n" +
|
||||
"<GDDHHM>0531-8291****</GDDHHM>\n" +
|
||||
"<CZHM>0531-8291****</CZHM>\n" +
|
||||
"<DZXX>***@dsyywl.com</DZXX>\n" +
|
||||
"<QYWZ>www.dsyywl.com.cn</QYWZ>\n" +
|
||||
"<LXR>张三</LXR>\n" +
|
||||
"<LXDH>0531-8291****</LXDH>\n" +
|
||||
"<ZSGPS>113.54,22.19</ZSGPS>\n" +
|
||||
"</data>\n" +
|
||||
"</dataset>\n" +
|
||||
"</VTTSBasic> \n";
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
package com.alihealth.d2d.provtest.controller;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alihealth.d2d.provtest.domain.DomesticDrugProductionApplyInfo;
|
||||
import com.alihealth.d2d.provtest.domain.DomesticPharmaBaseInfo;
|
||||
import com.alihealth.d2d.provtest.domain.ReceiveDataLog;
|
||||
import com.alihealth.d2d.provtest.entity.VTTSBasic;
|
||||
import com.alihealth.d2d.provtest.entity.*;
|
||||
import com.alihealth.d2d.provtest.enums.BuzStatusEnum;
|
||||
import com.alihealth.d2d.provtest.enums.EventTypeEnum;
|
||||
import com.alihealth.d2d.provtest.enums.SubTypeEnum;
|
||||
import com.alihealth.d2d.provtest.service.IDomesticDrugProductionApplyInfoService;
|
||||
import com.alihealth.d2d.provtest.service.IDomesticPharmaBaseInfoService;
|
||||
import com.alihealth.d2d.provtest.service.IReceiveDataLogService;
|
||||
import com.alihealth.d2d.provtest.service.XmlParserService;
|
||||
|
@ -25,6 +30,11 @@ import java.security.*;
|
|||
import java.security.interfaces.RSAPrivateKey;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
import java.security.spec.PKCS8EncodedKeySpec;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
@ -62,6 +72,9 @@ public class ProvTestServerController {
|
|||
@Autowired
|
||||
private IReceiveDataLogService receiveDataLogService;
|
||||
|
||||
@Autowired
|
||||
private IDomesticDrugProductionApplyInfoService domesticDrugProductionApplyInfoService;
|
||||
|
||||
@RequestMapping("/receive")
|
||||
public @ResponseBody
|
||||
Map<String,Object> receive(HttpServletRequest request) throws IOException {
|
||||
|
@ -105,7 +118,9 @@ public class ProvTestServerController {
|
|||
log.setEventId(eventId);
|
||||
log.setProcessId(processId);
|
||||
log.setEventType(eventType);
|
||||
log.setEventTypeName(EventTypeEnum.getNameByType(eventType));
|
||||
log.setSubType(eventPojo.getSubType());
|
||||
log.setSubTypeName(SubTypeEnum.getNameByType(eventPojo.getSubType()));
|
||||
log.setData(eventPojo.getData());
|
||||
log.setVer(ver);
|
||||
receiveDataLogService.save(log);
|
||||
|
@ -122,19 +137,72 @@ public class ProvTestServerController {
|
|||
// xml,
|
||||
// DomesticPharmaBaseInfo.class
|
||||
// );
|
||||
VTTSBasic<DomesticPharmaBaseInfo> result = xmlParserService.parseDataXml(
|
||||
xml,
|
||||
DomesticPharmaBaseInfo.class
|
||||
);
|
||||
List<DomesticPharmaBaseInfo> list = result.getDataset();
|
||||
if(list!=null && !list.isEmpty()){
|
||||
list.stream()
|
||||
.forEach(item -> {
|
||||
item.setEventId(eventId);
|
||||
if(eventType.equals("10")){
|
||||
VTTSBasic<DomesticPharmaBaseInfo> result = xmlParserService.parseDataXml(
|
||||
xml,
|
||||
DomesticPharmaBaseInfo.class
|
||||
);
|
||||
List<DomesticPharmaBaseInfo> list = result.getDataset();
|
||||
if(list!=null && !list.isEmpty()){
|
||||
list.stream()
|
||||
.forEach(item -> {
|
||||
item.setEventId(eventId);
|
||||
});
|
||||
domesticPharmaBaseInfoService.saveBatch(list);
|
||||
logger.info("入库的数据条数:{}", list.size());
|
||||
}
|
||||
}else{
|
||||
List<DomesticDrugProductionApplyInfo> list=new ArrayList<>();
|
||||
VTTSEventS eventS = xmlParserService.parseAppDataXml(xml);
|
||||
for (EventBody eventBody : eventS.getVttsEvent().getEventBodyList()) {
|
||||
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
DomesticDrugProductionApplyInfo applyInfo=new DomesticDrugProductionApplyInfo();
|
||||
|
||||
applyInfo.setEventId(eventBody.getEventID());
|
||||
applyInfo.setRecTime(formatter.parse(eventBody.getRecTime()));
|
||||
|
||||
|
||||
|
||||
EventBasic evtBasic = eventBody.getEvtBasic();
|
||||
applyInfo.setRkdbh(evtBasic.getString("RKDBH"));
|
||||
applyInfo.setRksj(evtBasic.getString("RKSJ"));
|
||||
applyInfo.setRkdwmc(evtBasic.getString("RKDWMC"));
|
||||
applyInfo.setRkdwtyshxydm(evtBasic.getString("RKDWTYSHXYDM"));
|
||||
applyInfo.setRkdwlx(evtBasic.getString("RKDWLX"));
|
||||
|
||||
|
||||
for (ItemDetail item : eventBody.getItemList()) {
|
||||
applyInfo.setTyshxydmscqy(item.getString("TYSHXYDMSCQY"));
|
||||
applyInfo.setScqymc(item.getString("SCQYMC"));
|
||||
applyInfo.setYptymc(item.getString("YPTYMC"));
|
||||
applyInfo.setGjypbsm(item.getString("GJYPBSM"));
|
||||
applyInfo.setYmscph(item.getString("YMSCPH"));
|
||||
String formattedDate = LocalDate.parse(
|
||||
item.getString("SCRQ"),
|
||||
DateTimeFormatter.ofPattern("yyyyMMdd")
|
||||
).format(DateTimeFormatter.ISO_LOCAL_DATE); // 直接使用标准格式
|
||||
applyInfo.setScrq(formattedDate);
|
||||
applyInfo.setYmyxqjzrq(item.getString("YMYXQJZRQ"));
|
||||
applyInfo.setScsl(item.getString("SCSL"));
|
||||
applyInfo.setScdz(item.getString("SCDZ"));
|
||||
|
||||
|
||||
item.getInstanceList().forEach(instance -> {
|
||||
applyInfo.setYpzsm(instance.getString("YPZSM"));
|
||||
applyInfo.setSyjbzypzsm(instance.getString("SYJBZYPZSM"));
|
||||
applyInfo.setBzcj(instance.getString("BZCJ"));
|
||||
applyInfo.setYmzt(instance.getString("YMZT"));
|
||||
list.add(applyInfo);
|
||||
});
|
||||
domesticPharmaBaseInfoService.saveBatch(list);
|
||||
|
||||
}
|
||||
}
|
||||
if(!list.isEmpty()){
|
||||
domesticDrugProductionApplyInfoService.saveBatch(list);
|
||||
}
|
||||
|
||||
}
|
||||
logger.info("入库的数据条数:{}", list.size());
|
||||
|
||||
return ResponseBuilder.success();
|
||||
}catch (Exception e){
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
package com.alihealth.d2d.provtest.domain;
|
||||
|
||||
import com.alihealth.d2d.provtest.entity.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Jason 国产药品生产信息数据子集
|
||||
* @date 2025年06月04日 11:39:02
|
||||
*/
|
||||
@Data
|
||||
@TableName("domestic_drug_production_apply_info")
|
||||
public class DomesticDrugProductionApplyInfo extends BaseEntity<DomesticDrugProductionApplyInfo> {
|
||||
|
||||
//private String eventId;
|
||||
@Column(name = "rec_time")
|
||||
private Date recTime;
|
||||
|
||||
@Column(name = "ypzsm")
|
||||
private String ypzsm;
|
||||
|
||||
@Column(name = "syjbzypzsm")
|
||||
private String syjbzypzsm;
|
||||
|
||||
@Column(name = "bzcj")
|
||||
private String bzcj;
|
||||
|
||||
@Column(name = "ymzt")
|
||||
private String ymzt;
|
||||
|
||||
@Column(name = "tyshxydmscqy")
|
||||
private String tyshxydmscqy;
|
||||
|
||||
@Column(name = "scqymc")
|
||||
private String scqymc;
|
||||
|
||||
@Column(name = "yptymc")
|
||||
private String yptymc;
|
||||
|
||||
@Column(name = "gjypbsm")
|
||||
private String gjypbsm;
|
||||
|
||||
@Column(name = "ymscph")
|
||||
private String ymscph;
|
||||
|
||||
@Column(name = "scrq")
|
||||
private String scrq;
|
||||
|
||||
@Column(name = "ymyxqjzrq")
|
||||
private String ymyxqjzrq;
|
||||
|
||||
@Column(name = "scsl")
|
||||
private String scsl;
|
||||
@Column(name = "scdz")
|
||||
private String scdz;
|
||||
|
||||
@Column(name = "rkdbh")
|
||||
private String rkdbh;
|
||||
|
||||
@Column(name = "rksj")
|
||||
private String rksj;
|
||||
|
||||
@Column(name = "rkdwmc")
|
||||
private String rkdwmc;
|
||||
|
||||
@Column(name = "rkdwtyshxydm")
|
||||
private String rkdwtyshxydm;
|
||||
|
||||
@Column(name = "rkdwlx")
|
||||
private String rkdwlx;
|
||||
|
||||
@Override
|
||||
public Class<DomesticDrugProductionApplyInfo> getEntityClass() {
|
||||
return DomesticDrugProductionApplyInfo.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDatasetName() {
|
||||
return "国产药品生产信息数据子集";
|
||||
}
|
||||
}
|
|
@ -26,11 +26,15 @@ public class ReceiveDataLog {
|
|||
@Column(name = "event_type")
|
||||
private String eventType;
|
||||
|
||||
@Column(name = "event_type_name")
|
||||
private String eventTypeName;
|
||||
|
||||
|
||||
@Column(name = "sub_type")
|
||||
private String subType;
|
||||
|
||||
@Column(name = "sub_type_name")
|
||||
private String subTypeName;
|
||||
|
||||
|
||||
@Column(name = "data")
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.alihealth.d2d.provtest.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import lombok.Data;
|
||||
import org.springframework.data.annotation.Id;
|
||||
|
||||
|
@ -12,11 +14,9 @@ import java.time.LocalDateTime;
|
|||
* @date 2025年05月30日 09:55:20
|
||||
*/
|
||||
@MappedSuperclass
|
||||
@XmlTransient
|
||||
@Data
|
||||
public abstract class BaseEntity<T extends BaseEntity<T>> implements XmlEntity<T>{
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@TableId(type = IdType.AUTO) // 明确指定使用数据库自增
|
||||
private Long id;
|
||||
|
||||
@Column(name = "event_id")
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
package com.alihealth.d2d.provtest.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.*;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Jason 动态字段基类
|
||||
* @date 2025年06月03日 16:49:21
|
||||
*/
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class DynamicFieldsEntity {
|
||||
|
||||
// 动态字段存储
|
||||
@JsonIgnore
|
||||
protected final Map<String, Object> dynamicFields = new LinkedHashMap<>();
|
||||
|
||||
// 原始数据
|
||||
@JsonIgnore
|
||||
protected JsonNode rawData;
|
||||
|
||||
@JsonAnySetter
|
||||
public void setDynamicField(String name, Object value) {
|
||||
dynamicFields.put(name, value);
|
||||
}
|
||||
|
||||
public Object getDynamicField(String name) {
|
||||
return dynamicFields.get(name);
|
||||
}
|
||||
|
||||
@JsonAnyGetter
|
||||
public Map<String, Object> getDynamicFields() {
|
||||
return Collections.unmodifiableMap(dynamicFields);
|
||||
}
|
||||
|
||||
@JsonProperty("value")
|
||||
protected void unpackNested(JsonNode node) {
|
||||
this.rawData = node;
|
||||
if (node != null) {
|
||||
node.fields().forEachRemaining(entry -> {
|
||||
dynamicFields.put(entry.getKey(),
|
||||
entry.getValue().isValueNode() ?
|
||||
entry.getValue().asText() :
|
||||
entry.getValue());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 实用方法
|
||||
public boolean hasField(String name) {
|
||||
return dynamicFields.containsKey(name);
|
||||
}
|
||||
|
||||
public String getString(String name) {
|
||||
Object val = dynamicFields.get(name);
|
||||
return val != null ? val.toString() : null;
|
||||
}
|
||||
|
||||
public Integer getInt(String name) {
|
||||
try {
|
||||
return Integer.parseInt(getString(name));
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public Date getDate(String name) {
|
||||
// 实现日期转换逻辑
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package com.alihealth.d2d.provtest.entity;
|
||||
|
||||
/**
|
||||
* @author Jason 事件基本信息 (动态字段)
|
||||
* @date 2025年06月03日 16:51:24
|
||||
*/
|
||||
public class EventBasic extends DynamicFieldsEntity{
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package com.alihealth.d2d.provtest.entity;
|
||||
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Jason
|
||||
* @date 2025年06月03日 16:37:33
|
||||
*/
|
||||
@Data
|
||||
public class EventBody {
|
||||
|
||||
@JacksonXmlProperty(localName = "recTime")
|
||||
private String recTime;
|
||||
|
||||
@JacksonXmlProperty(localName = "eventID")
|
||||
private String eventID;
|
||||
|
||||
@JacksonXmlProperty(localName = "evtBasic")
|
||||
private EventBasic evtBasic;
|
||||
|
||||
@JacksonXmlElementWrapper(localName = "itemList")
|
||||
@JacksonXmlProperty(localName = "itemDetail")
|
||||
private List<ItemDetail> itemList;
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package com.alihealth.d2d.provtest.entity;
|
||||
|
||||
/**
|
||||
* @author Jason
|
||||
* @date 2025年06月03日 16:52:28
|
||||
*/
|
||||
public class InstanceDetail extends DynamicFieldsEntity{
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package com.alihealth.d2d.provtest.entity;
|
||||
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Jason
|
||||
* @date 2025年06月03日 16:52:08
|
||||
*/
|
||||
@Data
|
||||
public class ItemDetail extends DynamicFieldsEntity {
|
||||
|
||||
@JacksonXmlElementWrapper(localName = "instanceList")
|
||||
@JacksonXmlProperty(localName = "instanceDetail")
|
||||
private List<InstanceDetail> instanceList;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package com.alihealth.d2d.provtest.entity;
|
||||
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Jason 应用信息集主事件类
|
||||
* @date 2025年06月03日 16:36:06
|
||||
*/
|
||||
@Data
|
||||
public class VTTSEvent {
|
||||
|
||||
@JacksonXmlProperty(localName = "datasetName")
|
||||
private String datasetName;
|
||||
|
||||
@JacksonXmlElementWrapper(localName = "eventBodyList")
|
||||
@JacksonXmlProperty(localName = "eventBody")
|
||||
private List<EventBody> eventBodyList;
|
||||
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package com.alihealth.d2d.provtest.entity;
|
||||
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
|
||||
/**
|
||||
* @author Jason 应用信息集根元素类
|
||||
* @date 2025年06月03日 16:34:49
|
||||
*/
|
||||
@JacksonXmlRootElement(localName = "VTTSEventS")
|
||||
public class VTTSEventS {
|
||||
|
||||
@JacksonXmlProperty(localName = "VTTSEvent")
|
||||
private VTTSEvent vttsEvent;
|
||||
|
||||
// getter和setter
|
||||
public VTTSEvent getVttsEvent() {
|
||||
return vttsEvent;
|
||||
}
|
||||
|
||||
public void setVttsEvent(VTTSEvent vttsEvent) {
|
||||
this.vttsEvent = vttsEvent;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package com.alihealth.d2d.provtest.enums;
|
||||
|
||||
public enum EventTypeEnum {
|
||||
EVENTTYPE_10("10", "基础信息数据"),
|
||||
EVENTTYPE_20("20", "应用信息数据");
|
||||
|
||||
private final String type;
|
||||
private final String name;
|
||||
|
||||
EventTypeEnum(String type, String name) {
|
||||
this.type = type;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
// 根据类型获取枚举实例
|
||||
public static EventTypeEnum getByType(String type) {
|
||||
for (EventTypeEnum typeEnum : values()) {
|
||||
if (typeEnum.type.equals(type)) {
|
||||
return typeEnum;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// 根据类型获取名称
|
||||
public static String getNameByType(String type) {
|
||||
EventTypeEnum typeEnum = getByType(type);
|
||||
return typeEnum != null ? typeEnum.getName() : "未知类型";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
package com.alihealth.d2d.provtest.enums;
|
||||
|
||||
/**
|
||||
* @author Jason 数据文件内容子业务类型
|
||||
* @date 2025年06月04日 11:08:40
|
||||
*/
|
||||
public enum SubTypeEnum {
|
||||
SUBTYPE_1011("1011", "境内药品生产企业基本信息数据子集"),
|
||||
SUBTYPE_1012("1012", "境外药品生产企业基本信息数据子集"),
|
||||
SUBTYPE_1013("1013", "药品生产许可证基本信息数据子集"),
|
||||
SUBTYPE_1014("1014", "药品经营企业基本信息数据子集"),
|
||||
SUBTYPE_1015("1015", "药品经营许可证基本信息数据子集"),
|
||||
SUBTYPE_1016("1016", "药品配送企业基本信息数据子集"),
|
||||
SUBTYPE_1017("1017", "药品使用单位基本信息数据子集"),
|
||||
SUBTYPE_1018("1018", "国产药品基本信息数据子集"),
|
||||
SUBTYPE_1019("1019", "进口药品基本信息数据子集"),
|
||||
SUBTYPE_9001("9001", "药检报告基础信息数据子集"),
|
||||
SUBTYPE_9002("9002", "药检报告概览回传基础信息数据子集"),
|
||||
SUBTYPE_2011("2011", "国产药品生产信息数据子集"),
|
||||
SUBTYPE_2012("2012", "药品进口信息数据子集"),
|
||||
SUBTYPE_2013("2013", "药品自检信息数据子集"),
|
||||
SUBTYPE_2015("2015", "发货单信息数据子集"),
|
||||
SUBTYPE_2016("2016", "收货单信息数据子集"),
|
||||
SUBTYPE_2017("2017", "药品零售与药品使用信息数据子集"),
|
||||
SUBTYPE_2018("2018", "药品召回信息数据子集"),
|
||||
SUBTYPE_2019("2019", "库存上报基本信息数据子集"),
|
||||
SUBTYPE_2020("2020", "撤销单"),
|
||||
SUBTYPE_2051("2051", "温度信息子集-单据与存储设备关系信息"),
|
||||
SUBTYPE_2052("2052", "温度信息子集-存储设备温度信息"),
|
||||
SUBTYPE_2053("2053", "温度信息子集-运输温度信息");
|
||||
|
||||
|
||||
private final String type;
|
||||
private final String name;
|
||||
|
||||
SubTypeEnum(String type, String name) {
|
||||
this.type = type;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
// 根据类型获取枚举实例
|
||||
public static SubTypeEnum getByType(String type) {
|
||||
for (SubTypeEnum typeEnum : values()) {
|
||||
if (typeEnum.type.equals(type)) {
|
||||
return typeEnum;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// 根据类型获取名称
|
||||
public static String getNameByType(String type) {
|
||||
SubTypeEnum typeEnum = getByType(type);
|
||||
return typeEnum != null ? typeEnum.getName() : "未知类型";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package com.alihealth.d2d.provtest.mapper;
|
||||
|
||||
import com.alihealth.d2d.provtest.domain.DomesticDrugProductionApplyInfo;
|
||||
import com.alihealth.d2d.provtest.domain.DomesticPharmaBaseInfo;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
public interface DomesticDrugProductionApplyInfoMapper extends BaseMapper<DomesticDrugProductionApplyInfo> {
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package com.alihealth.d2d.provtest.service;
|
||||
|
||||
import com.alihealth.d2d.provtest.domain.DomesticDrugProductionApplyInfo;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author Jason
|
||||
* @date 2025年06月04日 17:18:31
|
||||
*/
|
||||
public interface IDomesticDrugProductionApplyInfoService extends IService<DomesticDrugProductionApplyInfo> {
|
||||
}
|
|
@ -2,6 +2,7 @@ package com.alihealth.d2d.provtest.service;
|
|||
|
||||
import com.alihealth.d2d.provtest.domain.DomesticPharmaBaseInfo;
|
||||
import com.alihealth.d2d.provtest.entity.VTTSBasic;
|
||||
import com.alihealth.d2d.provtest.entity.VTTSEventS;
|
||||
import com.fasterxml.jackson.databind.JavaType;
|
||||
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -30,7 +31,7 @@ public class XmlParserService {
|
|||
|
||||
|
||||
/**
|
||||
* 使用Jackson XML 解析xml
|
||||
* 使用Jackson XML 解析基本信息xml
|
||||
* @param xml
|
||||
* @param dataType
|
||||
* @return
|
||||
|
@ -45,6 +46,16 @@ public class XmlParserService {
|
|||
return xmlMapper.readValue(xml, type);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析应用数据xml
|
||||
* @param xml
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static VTTSEventS parseAppDataXml(String xml) throws Exception {
|
||||
return xmlMapper.readValue(xml, VTTSEventS.class);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 解析包含多个data节点的XML
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package com.alihealth.d2d.provtest.service.impl;
|
||||
|
||||
import com.alihealth.d2d.provtest.domain.DomesticDrugProductionApplyInfo;
|
||||
import com.alihealth.d2d.provtest.domain.DomesticPharmaBaseInfo;
|
||||
import com.alihealth.d2d.provtest.mapper.DomesticDrugProductionApplyInfoMapper;
|
||||
import com.alihealth.d2d.provtest.mapper.DomesticPharmaBaseInfoMapper;
|
||||
import com.alihealth.d2d.provtest.service.IDomesticDrugProductionApplyInfoService;
|
||||
import com.alihealth.d2d.provtest.service.IDomesticPharmaBaseInfoService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Jason
|
||||
* @date 2025年06月04日 17:19:17
|
||||
*/
|
||||
@Service
|
||||
public class DomesticDrugProductionApplyInfoServiceImpl extends ServiceImpl<DomesticDrugProductionApplyInfoMapper, DomesticDrugProductionApplyInfo> implements IDomesticDrugProductionApplyInfoService {
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
<?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.DomesticDrugProductionApplyInfoMapper">
|
||||
|
||||
|
||||
</mapper>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,17 +1,30 @@
|
|||
com\alihealth\d2d\provtest\entity\BaseEntity.class
|
||||
com\alihealth\d2d\provtest\enums\SubTypeEnum.class
|
||||
com\alihealth\d2d\provtest\entity\DynamicFieldsEntity.class
|
||||
com\alihealth\d2d\provtest\factory\EntityFactoryManager.class
|
||||
com\alihealth\d2d\provtest\mapper\DomesticDrugProductionApplyInfoMapper.class
|
||||
com\alihealth\d2d\provtest\utils\XmlStringParser.class
|
||||
com\alihealth\d2d\provtest\service\IReceiveDataLogService.class
|
||||
com\alihealth\d2d\provtest\entity\VTTSEvent.class
|
||||
com\alihealth\d2d\provtest\service\impl\DomesticPharmaBaseInfoServiceImpl.class
|
||||
com\alihealth\d2d\provtest\domain\Test.class
|
||||
com\alihealth\d2d\provtest\domain\ReceiveDataLog.class
|
||||
com\alihealth\d2d\provtest\service\XmlParserService.class
|
||||
com\alihealth\d2d\provtest\entity\ItemDetail.class
|
||||
com\alihealth\d2d\provtest\mapper\DomesticPharmaBaseInfoMapper.class
|
||||
com\alihealth\d2d\provtest\service\IDomesticDrugProductionApplyInfoService.class
|
||||
com\alihealth\d2d\provtest\service\IDomesticPharmaBaseInfoService.class
|
||||
com\alihealth\d2d\provtest\domain\DomesticDrugProductionApplyInfo.class
|
||||
com\alihealth\d2d\provtest\utils\RequestWrapper$1.class
|
||||
com\alihealth\d2d\provtest\utils\RequestWrapper.class
|
||||
com\alihealth\d2d\provtest\domain\DomesticPharmaBaseInfo.class
|
||||
com\alihealth\d2d\provtest\service\impl\DomesticDrugProductionApplyInfoServiceImpl.class
|
||||
com\alihealth\d2d\provtest\utils\BouncyCastlePFXGenerator.class
|
||||
com\alihealth\d2d\provtest\entity\EventBasic.class
|
||||
com\alihealth\d2d\provtest\utils\EventPojo.class
|
||||
com\alihealth\d2d\provtest\mapper\ReceiveDataLogMapper.class
|
||||
com\alihealth\d2d\provtest\entity\InstanceDetail.class
|
||||
com\alihealth\d2d\provtest\factory\DomesticPharmaBaseInfoFactory.class
|
||||
com\alihealth\d2d\provtest\entity\EventBody.class
|
||||
com\alihealth\d2d\provtest\utils\Base64.class
|
||||
com\alihealth\d2d\provtest\utils\StreamUtil.class
|
||||
com\alihealth\d2d\provtest\controller\ProvTestServerController.class
|
||||
|
@ -20,6 +33,9 @@ com\alihealth\d2d\provtest\utils\EntityProcessor.class
|
|||
com\alihealth\d2d\provtest\entity\XmlEntity.class
|
||||
com\alihealth\d2d\provtest\utils\KeyStoreUtil.class
|
||||
com\alihealth\d2d\provtest\enums\BuzStatusEnum.class
|
||||
com\alihealth\d2d\provtest\enums\EventTypeEnum.class
|
||||
com\alihealth\d2d\provtest\entity\VTTSEventS.class
|
||||
com\alihealth\d2d\provtest\service\impl\ReceiveDataLogServiceImpl.class
|
||||
com\alihealth\d2d\provtest\enums\StatusEnum.class
|
||||
com\alihealth\d2d\provtest\ProvtestApplication.class
|
||||
com\alihealth\d2d\provtest\entity\VTTSBasic.class
|
||||
|
|
|
@ -1,26 +1,42 @@
|
|||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\entity\VTTSEventS.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\entity\XmlEntity.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\domain\ReceiveDataLog.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\utils\RequestWrapper.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\entity\ItemDetail.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\enums\BuzStatusEnum.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\service\IDomesticDrugProductionApplyInfoService.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\enums\StatusEnum.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\mapper\DomesticPharmaBaseInfoMapper.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\ProvTestClient.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\ProvtestApplication.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\service\IReceiveDataLogService.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\utils\StreamUtil.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\controller\ProvTestServerController.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\factory\DomesticPharmaBaseInfoFactory.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\utils\XmlStringParser.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\utils\EventPojo.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\service\impl\ReceiveDataLogServiceImpl.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\service\impl\DomesticPharmaBaseInfoServiceImpl.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\utils\BouncyCastlePFXGenerator.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\mapper\ReceiveDataLogMapper.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\entity\DynamicFieldsEntity.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\utils\EntityProcessor.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\entity\EventBody.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\service\XmlParserService.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\enums\EventTypeEnum.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\enums\SubTypeEnum.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\utils\KeyStoreUtil.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\service\IDomesticPharmaBaseInfoService.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\domain\Test.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\domain\DomesticDrugProductionApplyInfo.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\utils\Base64.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\utils\ResponseBuilder.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\mapper\DomesticDrugProductionApplyInfoMapper.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\domain\DomesticPharmaBaseInfo.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\entity\EventBasic.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\factory\EntityFactoryManager.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\entity\BaseEntity.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\entity\InstanceDetail.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\factory\EntityFactory.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\service\impl\DomesticDrugProductionApplyInfoServiceImpl.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\entity\VTTSBasic.java
|
||||
D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\entity\VTTSEvent.java
|
||||
|
|
Loading…
Reference in New Issue