init
commit
79e2a64f64
|
@ -0,0 +1,39 @@
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!**/src/main/**/target/
|
||||||
|
!**/src/test/**/target/
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea/modules.xml
|
||||||
|
.idea/jarRepositories.xml
|
||||||
|
.idea/compiler.xml
|
||||||
|
.idea/libraries/
|
||||||
|
.idea/
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### Eclipse ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
build/
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
### Mac OS ###
|
||||||
|
.DS_Store
|
|
@ -0,0 +1,78 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>org.example</groupId>
|
||||||
|
<artifactId>readExcel</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>readExcel</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.zaxxer</groupId>
|
||||||
|
<artifactId>HikariCP-java6</artifactId>
|
||||||
|
<version>2.3.13</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.mysql</groupId>
|
||||||
|
<artifactId>mysql-connector-j</artifactId>
|
||||||
|
<version>8.2.0</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>com.google.protobuf</groupId>
|
||||||
|
<artifactId>protobuf-java</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.jfirer</groupId>
|
||||||
|
<artifactId>JfireBoot</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
<artifactId>log4j-core</artifactId>
|
||||||
|
<version>2.20.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
<artifactId>log4j-slf4j2-impl</artifactId>
|
||||||
|
<version>2.20.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-api</artifactId>
|
||||||
|
<version>2.0.6</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.18.30</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba</groupId>
|
||||||
|
<artifactId>easyexcel</artifactId>
|
||||||
|
<version>3.3.4</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>16</source>
|
||||||
|
<target>16</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1,38 @@
|
||||||
|
package org.example;
|
||||||
|
|
||||||
|
import com.alibaba.excel.EasyExcel;
|
||||||
|
import com.alibaba.excel.ExcelReader;
|
||||||
|
import com.alibaba.excel.read.metadata.ReadSheet;
|
||||||
|
import com.jfirer.dson.reader.TypeReader;
|
||||||
|
import com.jfirer.jsql.SessionFactory;
|
||||||
|
import com.jfirer.jsql.SessionfactoryConfig;
|
||||||
|
import com.mysql.cj.jdbc.Driver;
|
||||||
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hello world!
|
||||||
|
*/
|
||||||
|
public class App
|
||||||
|
{
|
||||||
|
static
|
||||||
|
{
|
||||||
|
HikariDataSource dataSource = new HikariDataSource();
|
||||||
|
dataSource.setDriverClassName(Driver.class.getName());
|
||||||
|
dataSource.setJdbcUrl("jdbc:mysql://yynas.cn:43897/fee_control?useUnicode=true&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true");
|
||||||
|
dataSource.setUsername("root");
|
||||||
|
dataSource.setPassword("xidn983kdhjf");
|
||||||
|
SessionfactoryConfig config = new SessionfactoryConfig();
|
||||||
|
config.setDataSource(dataSource);
|
||||||
|
SESSION_FACTORY = config.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final SessionFactory SESSION_FACTORY;
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
String fileName = "/Users/linbin/Downloads/国家基本医疗保险、工伤保险和生育保险药品目录(2023 年).xlsx";
|
||||||
|
ExcelReader build = EasyExcel.read(fileName).build();
|
||||||
|
ReadSheet sheet2 = EasyExcel.readSheet(7).registerReadListener(new HiDrugReader()).build();
|
||||||
|
build.read(sheet2);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
package org.example;
|
||||||
|
|
||||||
|
import com.alibaba.excel.context.AnalysisContext;
|
||||||
|
import com.alibaba.excel.event.AnalysisEventListener;
|
||||||
|
import com.jfirer.baseutil.StringUtil;
|
||||||
|
import com.jfirer.dson.Dson;
|
||||||
|
import com.jfirer.jsql.model.Model;
|
||||||
|
import com.jfirer.jsql.session.SqlSession;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.example.dto.HiDrugDetail;
|
||||||
|
import org.example.dto.HiDrugType;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class HiDrugReader extends AnalysisEventListener<Map<Integer, String>>
|
||||||
|
{
|
||||||
|
List<HiDrugDetail> list = new ArrayList<>();
|
||||||
|
List<HiDrugType> types = new ArrayList<>();
|
||||||
|
private HiDrugType lastest;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invoke(Map<Integer, String> data, AnalysisContext context)
|
||||||
|
{
|
||||||
|
log.debug("{}", Dson.toJson(data));
|
||||||
|
if (StringUtil.isNotBlank(data.get(5)))
|
||||||
|
{
|
||||||
|
log.debug("{}", Dson.toJson(data));
|
||||||
|
HiDrugDetail detail = new HiDrugDetail();
|
||||||
|
detail.setClassificationCode(lastest.getCode());
|
||||||
|
detail.setClassificationName(lastest.getName());
|
||||||
|
detail.setHiType(data.get(5));
|
||||||
|
detail.setNumber(data.get(6));
|
||||||
|
detail.setName(data.get(7));
|
||||||
|
detail.setPayStandard(data.get(8));
|
||||||
|
detail.setRemarks(data.get(9));
|
||||||
|
String time = data.get(10);
|
||||||
|
String[] split = time.split("至\n");
|
||||||
|
detail.setProtocol(true);
|
||||||
|
detail.setProtocolStart(split[0]);
|
||||||
|
detail.setProtocolEnd(split[1]);
|
||||||
|
list.add(detail);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String code = data.get(0);
|
||||||
|
String name = StringUtil.isNotBlank(data.get(1)) ? data.get(1) : StringUtil.isNotBlank(data.get(2)) ? data.get(2) : StringUtil.isNotBlank(data.get(3)) ? data.get(3) : StringUtil.isNotBlank(data.get(4)) ? data.get(4) : "";
|
||||||
|
Integer level = StringUtil.isNotBlank(data.get(1)) ? 1 : StringUtil.isNotBlank(data.get(2)) ? 2 : StringUtil.isNotBlank(data.get(3)) ? 3 : StringUtil.isNotBlank(data.get(4)) ? 4 : 0;
|
||||||
|
lastest = new HiDrugType().setCode(code).setName(name).setLevel(level).setType("西药");
|
||||||
|
types.add(lastest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
@Override
|
||||||
|
public void doAfterAllAnalysed(AnalysisContext context)
|
||||||
|
{
|
||||||
|
try (SqlSession session = App.SESSION_FACTORY.openSession())
|
||||||
|
{
|
||||||
|
session.batchInsert(list, 200);
|
||||||
|
// session.batchInsert(types, 200);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
package org.example.dto;
|
||||||
|
|
||||||
|
import com.jfirer.jsql.annotation.AutoIncrement;
|
||||||
|
import com.jfirer.jsql.annotation.Pk;
|
||||||
|
import com.jfirer.jsql.annotation.TableDef;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@TableDef("hi_drug_detail")
|
||||||
|
@Data
|
||||||
|
public class HiDrugDetail
|
||||||
|
{
|
||||||
|
@Pk
|
||||||
|
@AutoIncrement
|
||||||
|
private Integer id;
|
||||||
|
/**
|
||||||
|
* 药品分类代码
|
||||||
|
*/
|
||||||
|
private String classificationCode;
|
||||||
|
/**
|
||||||
|
* 药品分类名称
|
||||||
|
*/
|
||||||
|
private String classificationName;
|
||||||
|
/**
|
||||||
|
* 医保类型,值域:甲、乙
|
||||||
|
*/
|
||||||
|
private String hiType;
|
||||||
|
/**
|
||||||
|
* 编号
|
||||||
|
*/
|
||||||
|
private String number;
|
||||||
|
/**
|
||||||
|
* 药品名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 剂型
|
||||||
|
*/
|
||||||
|
private String dosageform;
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remarks;
|
||||||
|
/**
|
||||||
|
* 医保支付标准
|
||||||
|
*/
|
||||||
|
private String payStandard;
|
||||||
|
/**
|
||||||
|
* 是否协议期
|
||||||
|
*/
|
||||||
|
private boolean protocol;
|
||||||
|
/**
|
||||||
|
* 协议开始时间
|
||||||
|
*/
|
||||||
|
private String protocolStart;
|
||||||
|
/**
|
||||||
|
* 协议结束时间
|
||||||
|
*/
|
||||||
|
private String protocolEnd;
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package org.example.dto;
|
||||||
|
|
||||||
|
import com.jfirer.jsql.annotation.TableDef;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@TableDef("hi_drug_type")
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class HiDrugType
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 药品代码,在第0列
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
/**
|
||||||
|
* 药品分类名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 药品分类级别,和药品代码相关,值域范围:[1-4]
|
||||||
|
* 示例:
|
||||||
|
* 1级:XA,消化道和代谢方面的药物
|
||||||
|
* 2级:XA01,口腔科制剂
|
||||||
|
* 3级:XA02A,抗酸药
|
||||||
|
* 4级:XA02BA,H2-受体拮抗剂
|
||||||
|
*/
|
||||||
|
private Integer level;
|
||||||
|
/**
|
||||||
|
* 类别
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Configuration status="ERROR" packages="com.ylz.incubation.drg.cloud">
|
||||||
|
<Appenders>
|
||||||
|
<Console name="Console" target="SYSTEM_OUT">
|
||||||
|
<PatternLayout charset="UTF-8"
|
||||||
|
pattern="%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] - %X{traceId} %-80msg %l{%n%ex}%n"/>
|
||||||
|
</Console>
|
||||||
|
<RollingRandomAccessFile name="AllFile"
|
||||||
|
fileName="target/cloudApp/app.log"
|
||||||
|
filePattern="target/cloudApp/$${date:yyyy-MM}/app_%d{yyyy-MM-dd}_%i.log.gz">
|
||||||
|
<PatternLayout>
|
||||||
|
<Pattern>%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] - %X{traceId}
|
||||||
|
%-80msg %l{%n%ex}%n
|
||||||
|
</Pattern>
|
||||||
|
</PatternLayout>
|
||||||
|
<Policies>
|
||||||
|
<TimeBasedTriggeringPolicy/>
|
||||||
|
<SizeBasedTriggeringPolicy size="20 MB"/>
|
||||||
|
</Policies>
|
||||||
|
<DefaultRolloverStrategy max="20"/>
|
||||||
|
</RollingRandomAccessFile>
|
||||||
|
</Appenders>
|
||||||
|
|
||||||
|
<Loggers>
|
||||||
|
<Root level="error">
|
||||||
|
<AppenderRef ref="AllFile"/>
|
||||||
|
</Root>
|
||||||
|
<Logger name="org.example" level="debug" additivity="false">
|
||||||
|
<AppenderRef ref="Console"/>
|
||||||
|
</Logger>
|
||||||
|
</Loggers>
|
||||||
|
</Configuration>
|
|
@ -0,0 +1,38 @@
|
||||||
|
package org.example;
|
||||||
|
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit test for simple App.
|
||||||
|
*/
|
||||||
|
public class AppTest
|
||||||
|
extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create the test case
|
||||||
|
*
|
||||||
|
* @param testName name of the test case
|
||||||
|
*/
|
||||||
|
public AppTest( String testName )
|
||||||
|
{
|
||||||
|
super( testName );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the suite of tests being tested
|
||||||
|
*/
|
||||||
|
public static Test suite()
|
||||||
|
{
|
||||||
|
return new TestSuite( AppTest.class );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rigourous Test :-)
|
||||||
|
*/
|
||||||
|
public void testApp()
|
||||||
|
{
|
||||||
|
assertTrue( true );
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue