更新读取
parent
79e2a64f64
commit
6b2310afd7
|
@ -3,11 +3,18 @@ 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.baseutil.StringUtil;
|
||||
import com.jfirer.jsql.SessionFactory;
|
||||
import com.jfirer.jsql.SessionfactoryConfig;
|
||||
import com.jfirer.jsql.session.SqlSession;
|
||||
import com.mysql.cj.jdbc.Driver;
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import org.example.dto.HiDrugType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Hello world!
|
||||
|
@ -18,21 +25,44 @@ public class App
|
|||
{
|
||||
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.setJdbcUrl("jdbc:mysql://localhost:3306/fee_control?useUnicode=true&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true");
|
||||
dataSource.setUsername("root");
|
||||
dataSource.setPassword("xidn983kdhjf");
|
||||
dataSource.setPassword("root");
|
||||
SessionfactoryConfig config = new SessionfactoryConfig();
|
||||
config.setDataSource(dataSource);
|
||||
SESSION_FACTORY = config.build();
|
||||
}
|
||||
|
||||
public static final SessionFactory SESSION_FACTORY;
|
||||
public static final SessionFactory SESSION_FACTORY;
|
||||
public static final List<HiDrugType> TYPES = new ArrayList<>();
|
||||
|
||||
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);
|
||||
//西药
|
||||
ReadSheet sheet2 = EasyExcel.readSheet(2).registerReadListener(new WestHiDrugReader()).build();
|
||||
//中药
|
||||
ReadSheet sheet3 = EasyExcel.readSheet(3).registerReadListener(new EastHiDrugReader()).build();
|
||||
//协议期-西药
|
||||
ReadSheet sheet4 = EasyExcel.readSheet(4).registerReadListener(new ProtocolHiDrugReader()).build();
|
||||
//协议期-中药
|
||||
ReadSheet sheet6 = EasyExcel.readSheet(6).registerReadListener(new ProtocolHiDrugReader()).build();
|
||||
//竞价期-西药
|
||||
ReadSheet sheet7 = EasyExcel.readSheet(6).registerReadListener(new ProtocolHiDrugReader()).build();
|
||||
build.read(sheet2, sheet3, sheet4, sheet6, sheet7);
|
||||
Map<String, HiDrugType> map = new HashMap<>();
|
||||
for (HiDrugType type : TYPES)
|
||||
{
|
||||
if (StringUtil.isBlank(type.getCode()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
map.put(type.getCode(), type);
|
||||
}
|
||||
try (SqlSession session = SESSION_FACTORY.openSession())
|
||||
{
|
||||
session.batchInsert(map.values(), 20);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
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.session.SqlSession;
|
||||
import lombok.Data;
|
||||
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
|
||||
@Data
|
||||
public class EastHiDrugReader extends AnalysisEventListener<Map<Integer, String>>
|
||||
{
|
||||
List<HiDrugDetail> list = new ArrayList<>();
|
||||
List<HiDrugType> types = App.TYPES;
|
||||
private HiDrugType lastest;
|
||||
|
||||
@Override
|
||||
public void invoke(Map<Integer, String> data, AnalysisContext context)
|
||||
{
|
||||
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.setRemarks(data.get(8));
|
||||
detail.setProtocol(0);
|
||||
// String time = data.get(10);
|
||||
// String[] split = time.split("至\n");
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -4,8 +4,8 @@ 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.Data;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.example.dto.HiDrugDetail;
|
||||
|
@ -16,19 +16,18 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
public class HiDrugReader extends AnalysisEventListener<Map<Integer, String>>
|
||||
@Data
|
||||
public class ProtocolHiDrugReader extends AnalysisEventListener<Map<Integer, String>>
|
||||
{
|
||||
List<HiDrugDetail> list = new ArrayList<>();
|
||||
List<HiDrugType> types = new ArrayList<>();
|
||||
List<HiDrugType> types = App.TYPES;
|
||||
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());
|
||||
|
@ -37,9 +36,9 @@ public class HiDrugReader extends AnalysisEventListener<Map<Integer, String>>
|
|||
detail.setName(data.get(7));
|
||||
detail.setPayStandard(data.get(8));
|
||||
detail.setRemarks(data.get(9));
|
||||
detail.setProtocol(1);
|
||||
String time = data.get(10);
|
||||
String[] split = time.split("至\n");
|
||||
detail.setProtocol(true);
|
||||
detail.setProtocolStart(split[0]);
|
||||
detail.setProtocolEnd(split[1]);
|
||||
list.add(detail);
|
||||
|
@ -61,7 +60,6 @@ public class HiDrugReader extends AnalysisEventListener<Map<Integer, String>>
|
|||
try (SqlSession session = App.SESSION_FACTORY.openSession())
|
||||
{
|
||||
session.batchInsert(list, 200);
|
||||
// session.batchInsert(types, 200);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
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.session.SqlSession;
|
||||
import lombok.Data;
|
||||
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
|
||||
@Data
|
||||
public class WestHiDrugReader extends AnalysisEventListener<Map<Integer, String>>
|
||||
{
|
||||
List<HiDrugDetail> list = new ArrayList<>();
|
||||
List<HiDrugType> types = App.TYPES;
|
||||
private HiDrugType lastest;
|
||||
|
||||
@Override
|
||||
public void invoke(Map<Integer, String> data, AnalysisContext context)
|
||||
{
|
||||
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.setDosageform(data.get(8));
|
||||
detail.setRemarks(data.get(9));
|
||||
detail.setProtocol(0);
|
||||
// String time = data.get(10);
|
||||
// String[] split = time.split("至\n");
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -45,9 +45,11 @@ public class HiDrugDetail
|
|||
*/
|
||||
private String payStandard;
|
||||
/**
|
||||
* 是否协议期
|
||||
* 0:
|
||||
* 1:协议期
|
||||
* 2:竞价
|
||||
*/
|
||||
private boolean protocol;
|
||||
private int protocol;
|
||||
/**
|
||||
* 协议开始时间
|
||||
*/
|
||||
|
|
Binary file not shown.
|
@ -1,38 +0,0 @@
|
|||
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