master
linbin 2024-06-06 21:13:57 +08:00
commit 79e2a64f64
8 changed files with 384 additions and 0 deletions

39
.gitignore vendored 100644
View File

@ -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

78
pom.xml 100644
View File

@ -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>

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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;
}

View File

@ -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]
* :
* 1XA
* 2XA01
* 3XA02A
* 4XA02BAH2-
*/
private Integer level;
/**
*
*/
private String type;
}

View File

@ -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>

View File

@ -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 );
}
}