基本信息集映射处理及相关逻辑提交
This commit is contained in:
parent
2857b0c4d7
commit
45f372cec8
16
HELP.md
16
HELP.md
|
@ -1,16 +0,0 @@
|
|||
# Getting Started
|
||||
|
||||
### Reference Documentation
|
||||
For further reference, please consider the following sections:
|
||||
|
||||
* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
|
||||
* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/maven-plugin/)
|
||||
* [Spring Web](https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#boot-features-developing-web-applications)
|
||||
|
||||
### Guides
|
||||
The following guides illustrate how to use some features concretely:
|
||||
|
||||
* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/)
|
||||
* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/)
|
||||
* [Building REST services with Spring](https://spring.io/guides/tutorials/bookmarks/)
|
||||
|
|
@ -1,310 +0,0 @@
|
|||
#!/bin/sh
|
||||
# ----------------------------------------------------------------------------
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Maven Start Up Batch script
|
||||
#
|
||||
# Required ENV vars:
|
||||
# ------------------
|
||||
# JAVA_HOME - location of a JDK home dir
|
||||
#
|
||||
# Optional ENV vars
|
||||
# -----------------
|
||||
# M2_HOME - location of maven2's installed home dir
|
||||
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||
# e.g. to debug Maven itself, use
|
||||
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
if [ -z "$MAVEN_SKIP_RC" ] ; then
|
||||
|
||||
if [ -f /etc/mavenrc ] ; then
|
||||
. /etc/mavenrc
|
||||
fi
|
||||
|
||||
if [ -f "$HOME/.mavenrc" ] ; then
|
||||
. "$HOME/.mavenrc"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# OS specific support. $var _must_ be set to either true or false.
|
||||
cygwin=false;
|
||||
darwin=false;
|
||||
mingw=false
|
||||
case "`uname`" in
|
||||
CYGWIN*) cygwin=true ;;
|
||||
MINGW*) mingw=true;;
|
||||
Darwin*) darwin=true
|
||||
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
|
||||
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
if [ -x "/usr/libexec/java_home" ]; then
|
||||
export JAVA_HOME="`/usr/libexec/java_home`"
|
||||
else
|
||||
export JAVA_HOME="/Library/Java/Home"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
if [ -r /etc/gentoo-release ] ; then
|
||||
JAVA_HOME=`java-config --jre-home`
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$M2_HOME" ] ; then
|
||||
## resolve links - $0 may be a link to maven's home
|
||||
PRG="$0"
|
||||
|
||||
# need this for relative symlinks
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG="`dirname "$PRG"`/$link"
|
||||
fi
|
||||
done
|
||||
|
||||
saveddir=`pwd`
|
||||
|
||||
M2_HOME=`dirname "$PRG"`/..
|
||||
|
||||
# make it fully qualified
|
||||
M2_HOME=`cd "$M2_HOME" && pwd`
|
||||
|
||||
cd "$saveddir"
|
||||
# echo Using m2 at $M2_HOME
|
||||
fi
|
||||
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||
if $cygwin ; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME=`cygpath --unix "$M2_HOME"`
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
|
||||
fi
|
||||
|
||||
# For Mingw, ensure paths are in UNIX format before anything is touched
|
||||
if $mingw ; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME="`(cd "$M2_HOME"; pwd)`"
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
javaExecutable="`which javac`"
|
||||
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
|
||||
# readlink(1) is not available as standard on Solaris 10.
|
||||
readLink=`which readlink`
|
||||
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
|
||||
if $darwin ; then
|
||||
javaHome="`dirname \"$javaExecutable\"`"
|
||||
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
|
||||
else
|
||||
javaExecutable="`readlink -f \"$javaExecutable\"`"
|
||||
fi
|
||||
javaHome="`dirname \"$javaExecutable\"`"
|
||||
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
|
||||
JAVA_HOME="$javaHome"
|
||||
export JAVA_HOME
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$JAVACMD" ] ; then
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
else
|
||||
JAVACMD="`which java`"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
echo "Error: JAVA_HOME is not defined correctly." >&2
|
||||
echo " We cannot execute $JAVACMD" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
echo "Warning: JAVA_HOME environment variable is not set."
|
||||
fi
|
||||
|
||||
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
|
||||
|
||||
# traverses directory structure from process work directory to filesystem root
|
||||
# first directory with .mvn subdirectory is considered project base directory
|
||||
find_maven_basedir() {
|
||||
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "Path not specified to find_maven_basedir"
|
||||
return 1
|
||||
fi
|
||||
|
||||
basedir="$1"
|
||||
wdir="$1"
|
||||
while [ "$wdir" != '/' ] ; do
|
||||
if [ -d "$wdir"/.mvn ] ; then
|
||||
basedir=$wdir
|
||||
break
|
||||
fi
|
||||
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
|
||||
if [ -d "${wdir}" ]; then
|
||||
wdir=`cd "$wdir/.."; pwd`
|
||||
fi
|
||||
# end of workaround
|
||||
done
|
||||
echo "${basedir}"
|
||||
}
|
||||
|
||||
# concatenates all lines of a file
|
||||
concat_lines() {
|
||||
if [ -f "$1" ]; then
|
||||
echo "$(tr -s '\n' ' ' < "$1")"
|
||||
fi
|
||||
}
|
||||
|
||||
BASE_DIR=`find_maven_basedir "$(pwd)"`
|
||||
if [ -z "$BASE_DIR" ]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
##########################################################################################
|
||||
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||
# This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||
##########################################################################################
|
||||
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found .mvn/wrapper/maven-wrapper.jar"
|
||||
fi
|
||||
else
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
|
||||
fi
|
||||
if [ -n "$MVNW_REPOURL" ]; then
|
||||
jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||
else
|
||||
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||
fi
|
||||
while IFS="=" read key value; do
|
||||
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
|
||||
esac
|
||||
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Downloading from: $jarUrl"
|
||||
fi
|
||||
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
|
||||
if $cygwin; then
|
||||
wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
|
||||
fi
|
||||
|
||||
if command -v wget > /dev/null; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found wget ... using wget"
|
||||
fi
|
||||
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||
wget "$jarUrl" -O "$wrapperJarPath"
|
||||
else
|
||||
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
|
||||
fi
|
||||
elif command -v curl > /dev/null; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found curl ... using curl"
|
||||
fi
|
||||
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||
curl -o "$wrapperJarPath" "$jarUrl" -f
|
||||
else
|
||||
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
|
||||
fi
|
||||
|
||||
else
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Falling back to using Java to download"
|
||||
fi
|
||||
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
|
||||
# For Cygwin, switch paths to Windows format before running javac
|
||||
if $cygwin; then
|
||||
javaClass=`cygpath --path --windows "$javaClass"`
|
||||
fi
|
||||
if [ -e "$javaClass" ]; then
|
||||
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo " - Compiling MavenWrapperDownloader.java ..."
|
||||
fi
|
||||
# Compiling the Java class
|
||||
("$JAVA_HOME/bin/javac" "$javaClass")
|
||||
fi
|
||||
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||
# Running the downloader
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo " - Running MavenWrapperDownloader.java ..."
|
||||
fi
|
||||
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
##########################################################################################
|
||||
# End of extension
|
||||
##########################################################################################
|
||||
|
||||
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo $MAVEN_PROJECTBASEDIR
|
||||
fi
|
||||
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME=`cygpath --path --windows "$M2_HOME"`
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
|
||||
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
|
||||
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
|
||||
fi
|
||||
|
||||
# Provide a "standardized" way to retrieve the CLI args that will
|
||||
# work with both Windows and non-Windows executions.
|
||||
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
|
||||
export MAVEN_CMD_LINE_ARGS
|
||||
|
||||
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||
|
||||
exec "$JAVACMD" \
|
||||
$MAVEN_OPTS \
|
||||
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
|
||||
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
|
||||
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
|
Binary file not shown.
6
pom.xml
6
pom.xml
|
@ -100,6 +100,12 @@
|
|||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!--Jackson XML-->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||||
<artifactId>jackson-dataformat-xml</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
@ -2,10 +2,11 @@ package com.alihealth.d2d.provtest.controller;
|
|||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alihealth.d2d.provtest.domain.DomesticPharmaBaseInfo;
|
||||
import com.alihealth.d2d.provtest.domain.DomesticProducer;
|
||||
import com.alihealth.d2d.provtest.domain.ReceiveDataLog;
|
||||
import com.alihealth.d2d.provtest.entity.VTTSBasic;
|
||||
import com.alihealth.d2d.provtest.enums.BuzStatusEnum;
|
||||
import com.alihealth.d2d.provtest.service.IDomesticPharmaBaseInfoService;
|
||||
import com.alihealth.d2d.provtest.service.IReceiveDataLogService;
|
||||
import com.alihealth.d2d.provtest.service.XmlParserService;
|
||||
import com.alihealth.d2d.provtest.utils.*;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -58,6 +59,9 @@ public class ProvTestServerController {
|
|||
@Autowired
|
||||
private XmlParserService xmlParserService;
|
||||
|
||||
@Autowired
|
||||
private IReceiveDataLogService receiveDataLogService;
|
||||
|
||||
@RequestMapping("/receive")
|
||||
public @ResponseBody
|
||||
Map<String,Object> receive(HttpServletRequest request) throws IOException {
|
||||
|
@ -96,20 +100,41 @@ public class ProvTestServerController {
|
|||
String xml = StreamUtil.getUnStreamContent(de);
|
||||
logger.info("解密之后的文件内容:{}", xml);
|
||||
|
||||
//保存数据日志
|
||||
ReceiveDataLog log=new ReceiveDataLog();
|
||||
log.setEventId(eventId);
|
||||
log.setProcessId(processId);
|
||||
log.setEventType(eventType);
|
||||
log.setSubType(eventPojo.getSubType());
|
||||
log.setData(eventPojo.getData());
|
||||
log.setVer(ver);
|
||||
receiveDataLogService.save(log);
|
||||
|
||||
//解析xml
|
||||
// List<DomesticPharmaBaseInfo> list= XmlStringParser.parseVaccineManufacturers(xml,eventPojo.getSubType());
|
||||
|
||||
//解析并保存数据
|
||||
XmlStringParser.parseXml(xml, "1011", data -> {
|
||||
domesticPharmaBaseInfoService.save((DomesticPharmaBaseInfo) data);
|
||||
});
|
||||
// XmlStringParser.parseXml(xml, "1011", data -> {
|
||||
// domesticPharmaBaseInfoService.save((DomesticPharmaBaseInfo) data);
|
||||
// });
|
||||
|
||||
// List<DomesticProducer> producers = xmlParserService.parseMultiDataXml(
|
||||
// List<DomesticPharmaBaseInfo> producers = xmlParserService.parseXml1(
|
||||
// xml,
|
||||
// DomesticProducer.class
|
||||
// DomesticPharmaBaseInfo.class
|
||||
// );
|
||||
|
||||
logger.info("解析后的数据条数:{}", "");
|
||||
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());
|
||||
|
||||
return ResponseBuilder.success();
|
||||
}catch (Exception e){
|
||||
|
|
|
@ -1,69 +1,134 @@
|
|||
package com.alihealth.d2d.provtest.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.alihealth.d2d.provtest.entity.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import javax.persistence.Column;
|
||||
import javax.xml.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @author Jason 境内药品生产企业基本信息实体
|
||||
* @date 2025年05月29日 10:28:21
|
||||
* @author Jason
|
||||
* @date 2025年05月30日 09:59:21
|
||||
*/
|
||||
@Data
|
||||
@TableName("domestic_pharma_base_info")
|
||||
public class DomesticPharmaBaseInfo implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
@JacksonXmlRootElement(localName = "data")
|
||||
public class DomesticPharmaBaseInfo extends BaseEntity<DomesticPharmaBaseInfo>{
|
||||
@Column(name = "tyshxydm", unique = true)
|
||||
@JacksonXmlProperty(localName = "TYSHXYDM")
|
||||
private String tyshxydm;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
@Column(name = "jnypscqymc")
|
||||
@JacksonXmlProperty(localName = "JNYPSCQYMC")
|
||||
private String jnypscqymc;
|
||||
|
||||
// 企业基础信息
|
||||
private String tyshxydm; // 统一社会信用代码
|
||||
private String jnypscqymc; // 疫苗生产企业名称
|
||||
private String jnypscqylx; // 企业类型
|
||||
@Column(name = "jnypscqylx")
|
||||
@JacksonXmlProperty(localName = "JNYPSCQYLX")
|
||||
private String jnypscqylx;
|
||||
|
||||
// 注册地址信息
|
||||
private String zsdz; // 注册地址
|
||||
@Column(name = "zsdz")
|
||||
@JacksonXmlProperty(localName = "ZSDZ")
|
||||
private String zsdz;
|
||||
|
||||
@Column(name = "zsdzgjhdq")
|
||||
@JacksonXmlProperty(localName = "ZSDZGJHDQ")
|
||||
private String zsdzgjhdq; // 注册地址国家/地区代码
|
||||
|
||||
@Column(name = "zsdzszxszzq")
|
||||
@JacksonXmlProperty(localName = "ZSDZSZXSZZQ")
|
||||
private String zsdzszxszzq; // 注册地址所在行政区
|
||||
|
||||
@Column(name = "zsdzsqzzzm")
|
||||
@JacksonXmlProperty(localName = "ZSDZSQZZZM")
|
||||
private String zsdzsqzzzm; // 注册地址社区/镇/村
|
||||
|
||||
@Column(name = "zsdzxzzxxjs")
|
||||
@JacksonXmlProperty(localName = "ZSDZXZZXXJS")
|
||||
private String zsdzxzzxxjs; // 注册地址乡镇/街道
|
||||
|
||||
@Column(name = "zsdzxzjdbsc")
|
||||
@JacksonXmlProperty(localName = "ZSDZXZJDBSC")
|
||||
private String zsdzxzjdbsc; // 注册地址详细街道办/社区
|
||||
|
||||
@Column(name = "zsdzcjlld")
|
||||
@JacksonXmlProperty(localName = "ZSDZCJLLD")
|
||||
private String zsdzcjlld; // 注册地址村居/路/楼栋
|
||||
|
||||
@Column(name = "zsdzmphm")
|
||||
@JacksonXmlProperty(localName = "ZSDZMPHM")
|
||||
private String zsdzmphm; // 注册地址门牌号码
|
||||
|
||||
// 企业负责人信息
|
||||
@Column(name = "fddbr")
|
||||
@JacksonXmlProperty(localName = "FDDBR")
|
||||
private String fddbr; // 法定代表人
|
||||
|
||||
@Column(name = "zczb")
|
||||
@JacksonXmlProperty(localName = "ZCZB")
|
||||
private String zczb; // 注册资本(万元)
|
||||
|
||||
// 日期信息
|
||||
private LocalDate clrq; // 成立日期
|
||||
@Column(name = "clrq")
|
||||
@JacksonXmlProperty(localName = "CLRQ")
|
||||
private String clrq; // 成立日期
|
||||
|
||||
@Column(name = "yyqx")
|
||||
@JacksonXmlProperty(localName = "YYQX")
|
||||
private String yyqx; // 营业期限
|
||||
|
||||
// 经营信息
|
||||
@Column(name = "jyfw")
|
||||
@JacksonXmlProperty(localName = "JYFW")
|
||||
private String jyfw; // 经营范围
|
||||
|
||||
@Column(name = "djjg")
|
||||
@JacksonXmlProperty(localName = "DJJG")
|
||||
private String djjg; // 登记机关
|
||||
|
||||
// 联系方式
|
||||
@Column(name = "gddhhm")
|
||||
@JacksonXmlProperty(localName = "GDDHHM")
|
||||
private String gddhhm; // 固定电话号码
|
||||
|
||||
@Column(name = "czhm")
|
||||
@JacksonXmlProperty(localName = "CZHM")
|
||||
private String czhm; // 传真号码
|
||||
|
||||
@Column(name = "dzxx")
|
||||
@JacksonXmlProperty(localName = "DZXX")
|
||||
private String dzxx; // 电子信箱
|
||||
|
||||
@Column(name = "qywz")
|
||||
@JacksonXmlProperty(localName = "QYWZ")
|
||||
private String qywz; // 企业网址
|
||||
|
||||
@Column(name = "lxr")
|
||||
@JacksonXmlProperty(localName = "LXR")
|
||||
private String lxr; // 联系人
|
||||
|
||||
@Column(name = "lxdh")
|
||||
@JacksonXmlProperty(localName = "LXDH")
|
||||
private String lxdh; // 联系电话
|
||||
|
||||
// 地理坐标
|
||||
@Column(name = "zsgps")
|
||||
@JacksonXmlProperty(localName = "ZSGPS")
|
||||
private String zsgps; // GPS坐标(经度,纬度)
|
||||
|
||||
// 系统字段
|
||||
private Date createTime; // 创建时间
|
||||
private Date updateTime; // 更新时间
|
||||
private Integer isDeleted; // 是否删除(0-否 1-是)
|
||||
|
||||
|
||||
@Override
|
||||
public Class<DomesticPharmaBaseInfo> getEntityClass() {
|
||||
return DomesticPharmaBaseInfo.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDatasetName() {
|
||||
return "境内药品生产企业基本信息数据子集";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,138 +0,0 @@
|
|||
package com.alihealth.d2d.provtest.domain;
|
||||
|
||||
import com.alihealth.d2d.provtest.entity.BaseEntity;
|
||||
import com.alihealth.d2d.provtest.entity.XmlEntity;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.xml.bind.annotation.*;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* @author Jason
|
||||
* @date 2025年05月30日 09:59:21
|
||||
*/
|
||||
@Data
|
||||
@TableName("domestic_pharma_base_info")
|
||||
@XmlRootElement(name = "data")
|
||||
@XmlAccessorType(XmlAccessType.FIELD) // 明确指定字段访问
|
||||
public class DomesticProducer extends BaseEntity<DomesticProducer>{
|
||||
@Column(name = "tyshxydm", unique = true)
|
||||
@XmlElement(name = "TYSHXYDM")
|
||||
private String tyshxydm;
|
||||
|
||||
@Column(name = "jnypscqymc")
|
||||
@XmlElement(name = "JNYPSCQYMC")
|
||||
private String jnypscqymc;
|
||||
|
||||
@Column(name = "jnypscqylx")
|
||||
@XmlElement(name = "JNYPSCQYLX")
|
||||
private String jnypscqylx;
|
||||
|
||||
@Column(name = "zsdz")
|
||||
@XmlElement(name = "ZSDZ")
|
||||
private String zsdz;
|
||||
|
||||
@Column(name = "zsdzgjhdq")
|
||||
@XmlElement(name = "ZSDZGJHDQ")
|
||||
private String zsdzgjhdq; // 注册地址国家/地区代码
|
||||
|
||||
@Column(name = "zsdzszxszzq")
|
||||
@XmlElement(name = "ZSDZSZXSZZQ")
|
||||
private String zsdzszxszzq; // 注册地址所在行政区
|
||||
|
||||
@Column(name = "zsdzsqzzzm")
|
||||
@XmlElement(name = "ZSDZSQZZZM")
|
||||
private String zsdzsqzzzm; // 注册地址社区/镇/村
|
||||
|
||||
@Column(name = "zsdzxzzxxjs")
|
||||
@XmlElement(name = "ZSDZXZZXXJS")
|
||||
private String zsdzxzzxxjs; // 注册地址乡镇/街道
|
||||
|
||||
@Column(name = "zsdzxzjdbsc")
|
||||
@XmlElement(name = "ZSDZXZJDBSC")
|
||||
private String zsdzxzjdbsc; // 注册地址详细街道办/社区
|
||||
|
||||
@Column(name = "zsdzcjlld")
|
||||
@XmlElement(name = "ZSDZCJLLD")
|
||||
private String zsdzcjlld; // 注册地址村居/路/楼栋
|
||||
|
||||
@Column(name = "zsdzmphm")
|
||||
@XmlElement(name = "ZSDZMPHM")
|
||||
private String zsdzmphm; // 注册地址门牌号码
|
||||
|
||||
// 企业负责人信息
|
||||
@Column(name = "fddbr")
|
||||
@XmlElement(name = "FDDBR")
|
||||
private String fddbr; // 法定代表人
|
||||
|
||||
@Column(name = "zczb")
|
||||
@XmlElement(name = "ZCZB")
|
||||
private String zczb; // 注册资本(万元)
|
||||
|
||||
// 日期信息
|
||||
@Column(name = "clrq")
|
||||
@XmlElement(name = "CLRQ")
|
||||
private LocalDate clrq; // 成立日期
|
||||
|
||||
@Column(name = "yyqx")
|
||||
@XmlElement(name = "YYQX")
|
||||
private String yyqx; // 营业期限
|
||||
|
||||
// 经营信息
|
||||
@Column(name = "jyfw")
|
||||
@XmlElement(name = "JYFW")
|
||||
private String jyfw; // 经营范围
|
||||
|
||||
@Column(name = "djjg")
|
||||
@XmlElement(name = "DJJG")
|
||||
private String djjg; // 登记机关
|
||||
|
||||
// 联系方式
|
||||
@Column(name = "gddhhm")
|
||||
@XmlElement(name = "GDDHHM")
|
||||
private String gddhhm; // 固定电话号码
|
||||
|
||||
@Column(name = "czhm")
|
||||
@XmlElement(name = "CZHM")
|
||||
private String czhm; // 传真号码
|
||||
|
||||
@Column(name = "dzxx")
|
||||
@XmlElement(name = "DZXX")
|
||||
private String dzxx; // 电子信箱
|
||||
|
||||
@Column(name = "qywz")
|
||||
@XmlElement(name = "QYWZ")
|
||||
private String qywz; // 企业网址
|
||||
|
||||
@Column(name = "lxr")
|
||||
@XmlElement(name = "LXR")
|
||||
private String lxr; // 联系人
|
||||
|
||||
@Column(name = "lxdh")
|
||||
@XmlElement(name = "LXDH")
|
||||
private String lxdh; // 联系电话
|
||||
|
||||
// 地理坐标
|
||||
@Column(name = "zsgps")
|
||||
@XmlElement(name = "ZSGPS")
|
||||
private String zsgps; // GPS坐标(经度,纬度)
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Class<DomesticProducer> getEntityClass() {
|
||||
return DomesticProducer.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDatasetName() {
|
||||
return "境内药品生产企业基本信息数据子集1111";
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
package com.alihealth.d2d.provtest.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Jason 接收数据日志
|
||||
* @date 2025年06月03日 15:28:25
|
||||
*/
|
||||
@Data
|
||||
@TableName("receive_data_log")
|
||||
public class ReceiveDataLog {
|
||||
|
||||
@Column(name = "event_id", unique = true)
|
||||
private String eventId;
|
||||
|
||||
|
||||
@Column(name = "process_id")
|
||||
private String processId;
|
||||
|
||||
|
||||
@Column(name = "event_type")
|
||||
private String eventType;
|
||||
|
||||
|
||||
|
||||
@Column(name = "sub_type")
|
||||
private String subType;
|
||||
|
||||
|
||||
|
||||
@Column(name = "data")
|
||||
private String data;
|
||||
|
||||
|
||||
|
||||
@Column(name = "ver")
|
||||
private String ver;
|
||||
|
||||
|
||||
@Column(name = "create_time")
|
||||
private Date createTime;
|
||||
|
||||
|
||||
@Column(name = "update_time")
|
||||
private Date updateTime;
|
||||
|
||||
|
||||
@Column(name = "is_deleted")
|
||||
private Date isDeleted;
|
||||
|
||||
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package com.alihealth.d2d.provtest.entity;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.data.annotation.Id;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
@ -12,6 +13,7 @@ import java.time.LocalDateTime;
|
|||
*/
|
||||
@MappedSuperclass
|
||||
@XmlTransient
|
||||
@Data
|
||||
public abstract class BaseEntity<T extends BaseEntity<T>> implements XmlEntity<T>{
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
|
|
|
@ -1,30 +1,43 @@
|
|||
package com.alihealth.d2d.provtest.entity;
|
||||
|
||||
import com.alihealth.d2d.provtest.domain.DomesticProducer;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
|
||||
import javax.xml.bind.annotation.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Jason
|
||||
* @author Jason 基本信息集公共类
|
||||
* @date 2025年05月30日 11:45:00
|
||||
*/
|
||||
@XmlRootElement(name = "VTTSBasic")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@Data
|
||||
@XmlSeeAlso({DomesticProducer.class})
|
||||
@JacksonXmlRootElement(localName = "VTTSBasic")
|
||||
public class VTTSBasic<T> {
|
||||
@XmlElement(name = "datasetName")
|
||||
@JacksonXmlProperty(localName = "datasetName")
|
||||
private String datasetName;
|
||||
|
||||
@XmlElementWrapper(name = "dataset")
|
||||
//@XmlElements(@XmlElement(name = "data"))
|
||||
@XmlElement(name = "data")
|
||||
// private List<T> dataset; // 必须初始化集合
|
||||
private List<DomesticProducer> dataset;
|
||||
@JacksonXmlElementWrapper(localName = "dataset")
|
||||
@JacksonXmlProperty(localName = "data")
|
||||
private List<T> dataset=new ArrayList<>(); // 必须初始化集合
|
||||
|
||||
|
||||
// 确保有无参构造器
|
||||
public VTTSBasic() {}
|
||||
|
||||
|
||||
public String getDatasetName() {
|
||||
return datasetName;
|
||||
}
|
||||
|
||||
public void setDatasetName(String datasetName) {
|
||||
this.datasetName = datasetName;
|
||||
}
|
||||
|
||||
public List<T> getDataset() {
|
||||
return dataset;
|
||||
}
|
||||
|
||||
public void setDataset(List<T> dataset) {
|
||||
this.dataset = dataset;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package com.alihealth.d2d.provtest.factory;
|
||||
|
||||
import com.alihealth.d2d.provtest.domain.DomesticPharmaBaseInfo;
|
||||
import com.alihealth.d2d.provtest.utils.XmlStringParser;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.w3c.dom.Node;
|
||||
|
@ -35,34 +34,34 @@ public class DomesticPharmaBaseInfoFactory implements EntityFactory {
|
|||
return;
|
||||
}
|
||||
|
||||
DomesticPharmaBaseInfo baseInfo = (DomesticPharmaBaseInfo) entity;
|
||||
baseInfo.setTyshxydm(getElementText(dataElement, "TYSHXYDM"));
|
||||
baseInfo.setJnypscqymc(getElementText(dataElement, "JNYPSCQYMC"));
|
||||
baseInfo.setJnypscqylx(getElementText(dataElement, "JNYPSCQYLX"));
|
||||
baseInfo.setZsdz(getElementText(dataElement, "ZSDZ"));
|
||||
baseInfo.setZsdzgjhdq(getElementText(dataElement, "ZSDZGJHDQ"));
|
||||
baseInfo.setZsdzszxszzq(getElementText(dataElement, "ZSDZSZXSZZQ"));
|
||||
baseInfo.setJnypscqylx(getElementText(dataElement, "JNYPSCQYLX"));
|
||||
baseInfo.setZsdzsqzzzm(getElementText(dataElement, "ZSDZSQZZZM"));
|
||||
baseInfo.setZsdzxzzxxjs(getElementText(dataElement, "ZSDZXZZXXJS"));
|
||||
baseInfo.setZsdzxzjdbsc(getElementText(dataElement, "ZSDZXZJDBSC"));
|
||||
|
||||
baseInfo.setZsdzcjlld(getElementText(dataElement, "ZSDZCJLLD"));
|
||||
baseInfo.setZsdzmphm(getElementText(dataElement, "ZSDZMPHM"));
|
||||
baseInfo.setFddbr(getElementText(dataElement, "FDDBR"));
|
||||
baseInfo.setZczb(getElementText(dataElement, "ZCZB"));
|
||||
baseInfo.setClrq(parseDate(getElementText(dataElement, "CLRQ")));
|
||||
baseInfo.setYyqx(getElementText(dataElement, "YYQX"));
|
||||
baseInfo.setJyfw(getElementText(dataElement, "JYFW"));
|
||||
baseInfo.setDjjg(getElementText(dataElement, "DJJG"));
|
||||
baseInfo.setGddhhm(getElementText(dataElement, "GDDHHM"));
|
||||
baseInfo.setCzhm(getElementText(dataElement, "CZHM"));
|
||||
baseInfo.setDzxx(getElementText(dataElement, "DZXX"));
|
||||
baseInfo.setQywz(getElementText(dataElement, "QYWZ"));
|
||||
baseInfo.setLxr(getElementText(dataElement, "LXR"));
|
||||
|
||||
baseInfo.setLxdh(getElementText(dataElement, "LXDH"));
|
||||
baseInfo.setZsgps(getElementText(dataElement, "ZSGPS"));
|
||||
// DomesticPharmaBaseInfo baseInfo = (DomesticPharmaBaseInfo) entity;
|
||||
// baseInfo.setTyshxydm(getElementText(dataElement, "TYSHXYDM"));
|
||||
// baseInfo.setJnypscqymc(getElementText(dataElement, "JNYPSCQYMC"));
|
||||
// baseInfo.setJnypscqylx(getElementText(dataElement, "JNYPSCQYLX"));
|
||||
// baseInfo.setZsdz(getElementText(dataElement, "ZSDZ"));
|
||||
// baseInfo.setZsdzgjhdq(getElementText(dataElement, "ZSDZGJHDQ"));
|
||||
// baseInfo.setZsdzszxszzq(getElementText(dataElement, "ZSDZSZXSZZQ"));
|
||||
// baseInfo.setJnypscqylx(getElementText(dataElement, "JNYPSCQYLX"));
|
||||
// baseInfo.setZsdzsqzzzm(getElementText(dataElement, "ZSDZSQZZZM"));
|
||||
// baseInfo.setZsdzxzzxxjs(getElementText(dataElement, "ZSDZXZZXXJS"));
|
||||
// baseInfo.setZsdzxzjdbsc(getElementText(dataElement, "ZSDZXZJDBSC"));
|
||||
//
|
||||
// baseInfo.setZsdzcjlld(getElementText(dataElement, "ZSDZCJLLD"));
|
||||
// baseInfo.setZsdzmphm(getElementText(dataElement, "ZSDZMPHM"));
|
||||
// baseInfo.setFddbr(getElementText(dataElement, "FDDBR"));
|
||||
// baseInfo.setZczb(getElementText(dataElement, "ZCZB"));
|
||||
// baseInfo.setClrq(parseDate(getElementText(dataElement, "CLRQ")));
|
||||
// baseInfo.setYyqx(getElementText(dataElement, "YYQX"));
|
||||
// baseInfo.setJyfw(getElementText(dataElement, "JYFW"));
|
||||
// baseInfo.setDjjg(getElementText(dataElement, "DJJG"));
|
||||
// baseInfo.setGddhhm(getElementText(dataElement, "GDDHHM"));
|
||||
// baseInfo.setCzhm(getElementText(dataElement, "CZHM"));
|
||||
// baseInfo.setDzxx(getElementText(dataElement, "DZXX"));
|
||||
// baseInfo.setQywz(getElementText(dataElement, "QYWZ"));
|
||||
// baseInfo.setLxr(getElementText(dataElement, "LXR"));
|
||||
//
|
||||
// baseInfo.setLxdh(getElementText(dataElement, "LXDH"));
|
||||
// baseInfo.setZsgps(getElementText(dataElement, "ZSGPS"));
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package com.alihealth.d2d.provtest.mapper;
|
||||
|
||||
import com.alihealth.d2d.provtest.domain.ReceiveDataLog;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author Jason
|
||||
* @date 2025年06月03日 15:35:00
|
||||
*/
|
||||
public interface ReceiveDataLogMapper extends BaseMapper<ReceiveDataLog> {
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package com.alihealth.d2d.provtest.service;
|
||||
|
||||
import com.alihealth.d2d.provtest.domain.ReceiveDataLog;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
public interface IReceiveDataLogService extends IService<ReceiveDataLog> {
|
||||
}
|
|
@ -1,21 +1,18 @@
|
|||
package com.alihealth.d2d.provtest.service;
|
||||
|
||||
import com.alihealth.d2d.provtest.domain.DomesticProducer;
|
||||
import com.alihealth.d2d.provtest.domain.DomesticPharmaBaseInfo;
|
||||
import com.alihealth.d2d.provtest.entity.VTTSBasic;
|
||||
import com.fasterxml.jackson.databind.JavaType;
|
||||
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
import javax.xml.XMLConstants;
|
||||
import javax.xml.bind.*;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.stream.XMLInputFactory;
|
||||
import javax.xml.stream.XMLStreamReader;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -29,13 +26,32 @@ public class XmlParserService {
|
|||
|
||||
private static final Map<Class<?>, JAXBContext> CONTEXT_CACHE = new ConcurrentHashMap<>();
|
||||
|
||||
private static final XmlMapper xmlMapper = new XmlMapper();
|
||||
|
||||
|
||||
/**
|
||||
* 使用Jackson XML 解析xml
|
||||
* @param xml
|
||||
* @param dataType
|
||||
* @return
|
||||
* @param <T>
|
||||
* @throws IOException
|
||||
*/
|
||||
public static <T> VTTSBasic<T> parseDataXml(String xml, Class<T> dataType) throws IOException {
|
||||
JavaType type = xmlMapper.getTypeFactory().constructParametricType(
|
||||
VTTSBasic.class,
|
||||
dataType
|
||||
);
|
||||
return xmlMapper.readValue(xml, type);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 解析包含多个data节点的XML
|
||||
* @param xml 完整XML内容
|
||||
* @param dataClass 内部data节点对应的实体类
|
||||
*/
|
||||
public <T> List<DomesticProducer> parseMultiDataXml(
|
||||
public <T> List<DomesticPharmaBaseInfo> parseMultiDataXml(
|
||||
String xml,
|
||||
Class<T> dataClass) throws Exception {
|
||||
|
||||
|
@ -57,30 +73,13 @@ public class XmlParserService {
|
|||
|
||||
// 4. 解析XML
|
||||
try (StringReader reader = new StringReader(xml)) {
|
||||
// XMLStreamReader xsr = xif.createXMLStreamReader(reader);
|
||||
// JAXBElement<VTTSBasic> root = unmarshaller.unmarshal(xsr, VTTSBasic.class);
|
||||
//
|
||||
// // 5. 获取解析结果
|
||||
// VTTSBasic<T> wrapper = root.getValue();
|
||||
// List<T> result = wrapper.getDataset();
|
||||
//
|
||||
// // 6. 类型安全检查
|
||||
// if (!result.isEmpty() && !dataClass.isInstance(result.get(0))) {
|
||||
// throw new ClassCastException("XML中包含类型不匹配的数据");
|
||||
// }
|
||||
//
|
||||
// return result;
|
||||
// 创建 JAXBContext 时包含所有相关类
|
||||
// JAXBContext jc = JAXBContext.newInstance(VTTSBasic.class, Data.class);
|
||||
//Unmarshaller unmarshaller = jc.createUnmarshaller();
|
||||
|
||||
// 解析 XML
|
||||
XMLStreamReader xsr = xif.createXMLStreamReader(reader);
|
||||
JAXBElement<VTTSBasic> root = unmarshaller.unmarshal(xsr, VTTSBasic.class);
|
||||
|
||||
// 获取解析结果
|
||||
VTTSBasic wrapper = root.getValue();
|
||||
List<DomesticProducer> result = wrapper.getDataset();
|
||||
List<DomesticPharmaBaseInfo> result = wrapper.getDataset();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -100,6 +99,21 @@ public class XmlParserService {
|
|||
return element.getValue();
|
||||
}
|
||||
|
||||
public static <T> VTTSBasic<T> parse(String xml, Class<T> dataType) throws Exception {
|
||||
// 创建包含具体类型的JAXBContext
|
||||
JAXBContext context = JAXBContext.newInstance(
|
||||
VTTSBasic.class,
|
||||
dataType
|
||||
);
|
||||
|
||||
Unmarshaller unmarshaller = context.createUnmarshaller();
|
||||
StringReader reader = new StringReader(xml);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
VTTSBasic<T> result = (VTTSBasic<T>) unmarshaller.unmarshal(reader);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static <T> String toXml(VTTSBasic<T> vttsBasic, Class<T> dataType) throws Exception {
|
||||
JAXBContext context = getOrCreateContext(VTTSBasic.class, dataType);
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
package com.alihealth.d2d.provtest.service.impl;
|
||||
|
||||
import com.alihealth.d2d.provtest.domain.ReceiveDataLog;
|
||||
import com.alihealth.d2d.provtest.mapper.ReceiveDataLogMapper;
|
||||
import com.alihealth.d2d.provtest.service.IReceiveDataLogService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Jason
|
||||
* @date 2025年06月03日 15:37:17
|
||||
*/
|
||||
@Service
|
||||
public class ReceiveDataLogServiceImpl extends ServiceImpl<ReceiveDataLogMapper, ReceiveDataLog> implements IReceiveDataLogService {
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
package com.alihealth.d2d.provtest.utils;
|
||||
|
||||
import com.alihealth.d2d.provtest.domain.DomesticPharmaBaseInfo;
|
||||
import com.alihealth.d2d.provtest.factory.EntityFactory;
|
||||
import com.alihealth.d2d.provtest.factory.EntityFactoryManager;
|
||||
import org.slf4j.Logger;
|
||||
|
|
|
@ -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.ReceiveDataLogMapper">
|
||||
|
||||
|
||||
</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.
Binary file not shown.
Binary file not shown.
|
@ -2,6 +2,7 @@ com\alihealth\d2d\provtest\entity\BaseEntity.class
|
|||
com\alihealth\d2d\provtest\factory\EntityFactoryManager.class
|
||||
com\alihealth\d2d\provtest\utils\XmlStringParser.class
|
||||
com\alihealth\d2d\provtest\service\impl\DomesticPharmaBaseInfoServiceImpl.class
|
||||
com\alihealth\d2d\provtest\domain\Test.class
|
||||
com\alihealth\d2d\provtest\service\XmlParserService.class
|
||||
com\alihealth\d2d\provtest\mapper\DomesticPharmaBaseInfoMapper.class
|
||||
com\alihealth\d2d\provtest\service\IDomesticPharmaBaseInfoService.class
|
||||
|
@ -20,7 +21,6 @@ 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\StatusEnum.class
|
||||
com\alihealth\d2d\provtest\domain\DomesticProducer.class
|
||||
com\alihealth\d2d\provtest\ProvtestApplication.class
|
||||
com\alihealth\d2d\provtest\entity\VTTSBasic.class
|
||||
com\alihealth\d2d\provtest\ProvTestClient.class
|
||||
|
|
|
@ -16,6 +16,7 @@ D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\utils\EntityProce
|
|||
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\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\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\domain\DomesticPharmaBaseInfo.java
|
||||
|
@ -23,4 +24,3 @@ D:\work-tcct\provtest\src\main\java\com\alihealth\d2d\provtest\factory\EntityFac
|
|||
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\factory\EntityFactory.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\domain\DomesticProducer.java
|
||||
|
|
Loading…
Reference in New Issue