From d0614416052b904c84d98a06d302adf4c508df9e Mon Sep 17 00:00:00 2001 From: litao Date: Fri, 5 May 2017 21:34:50 +0800 Subject: [PATCH] =?UTF-8?q?etl=E9=A1=B9=E7=9B=AE=E5=A4=9A=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E9=85=8D=E7=BD=AE=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/lyms/etl/ApplicationRunner.java | 15 ++- .../com/lyms/etl/service/ICouponInfoService.java | 6 +- .../java/com/lyms/etl/service/IEtlService.java | 2 +- .../java/com/lyms/etl/service/IInvokeHandler.java | 10 ++ .../etl/service/impl/CouponInfoServiceImpl.java | 133 -------------------- .../lyms/etl/service/impl/CouponServiceImpl.java | 135 +++++++++++++++++++++ .../com/lyms/etl/service/impl/EtlServiceImpl.java | 9 ++ .../src/main/resources/application-prod.yml | 43 +++++++ .../src/main/resources/application.properties | 0 regional-etl/src/main/resources/application.yml | 2 + 10 files changed, 210 insertions(+), 145 deletions(-) create mode 100644 regional-etl/src/main/java/com/lyms/etl/service/IInvokeHandler.java delete mode 100644 regional-etl/src/main/java/com/lyms/etl/service/impl/CouponInfoServiceImpl.java create mode 100644 regional-etl/src/main/java/com/lyms/etl/service/impl/CouponServiceImpl.java create mode 100644 regional-etl/src/main/resources/application-prod.yml create mode 100644 regional-etl/src/main/resources/application.properties diff --git a/regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java b/regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java index d491c63..c7fc70a 100644 --- a/regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java +++ b/regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java @@ -1,6 +1,6 @@ package com.lyms.etl; -import com.lyms.etl.service.ICouponInfoService; +import com.lyms.etl.service.IInvokeHandler; import org.mybatis.spring.annotation.MapperScan; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,6 +11,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; import java.util.Date; +import java.util.Set; /** * @Author: litao @@ -25,7 +26,7 @@ public class ApplicationRunner implements CommandLineRunner{ private static final Logger log = LoggerFactory.getLogger(ApplicationRunner.class); @Autowired - private ICouponInfoService couponInfoService; + Set invokeHandlers; public static void main(String[] args) { SpringApplication.run(ApplicationRunner.class, args); @@ -34,9 +35,11 @@ public class ApplicationRunner implements CommandLineRunner{ @Override public void run(String... strings) throws Exception { - log.info("start import coupon"); - Date start = new Date(); - couponInfoService.transferCoupon(); - log.info("end import coupon, used: {} ms", System.currentTimeMillis() - start.getTime()); + for (IInvokeHandler handler : invokeHandlers) { + Date start = new Date(); + log.info("start ................ {}", handler.getClass().getName()); + handler.invoke(); + log.info("end ................ used: {} ms", System.currentTimeMillis() - start.getTime()); + } } } diff --git a/regional-etl/src/main/java/com/lyms/etl/service/ICouponInfoService.java b/regional-etl/src/main/java/com/lyms/etl/service/ICouponInfoService.java index 0040d05..42bd741 100644 --- a/regional-etl/src/main/java/com/lyms/etl/service/ICouponInfoService.java +++ b/regional-etl/src/main/java/com/lyms/etl/service/ICouponInfoService.java @@ -1,14 +1,10 @@ package com.lyms.etl.service; -import com.lyms.etl.model.CouponInfo; - /** * @Author: litao * @Date: 2017/5/3 0003 11:43 * @Version: V1.0 */ -public interface ICouponInfoService { - CouponInfo find(String id); - +public interface ICouponInfoService extends IInvokeHandler { void transferCoupon(); } diff --git a/regional-etl/src/main/java/com/lyms/etl/service/IEtlService.java b/regional-etl/src/main/java/com/lyms/etl/service/IEtlService.java index 1052448..5d97adf 100644 --- a/regional-etl/src/main/java/com/lyms/etl/service/IEtlService.java +++ b/regional-etl/src/main/java/com/lyms/etl/service/IEtlService.java @@ -5,5 +5,5 @@ package com.lyms.etl.service; * @Date: 2017/5/3 0003 12:00 * @Version: V1.0 */ -public interface IEtlService { +public interface IEtlService extends IInvokeHandler { } diff --git a/regional-etl/src/main/java/com/lyms/etl/service/IInvokeHandler.java b/regional-etl/src/main/java/com/lyms/etl/service/IInvokeHandler.java new file mode 100644 index 0000000..8267235 --- /dev/null +++ b/regional-etl/src/main/java/com/lyms/etl/service/IInvokeHandler.java @@ -0,0 +1,10 @@ +package com.lyms.etl.service; + +/** + * @Author: litao + * @Date: 2017/5/5 0005 20:21 + * @Version: V1.0 + */ +public interface IInvokeHandler { + void invoke(); +} diff --git a/regional-etl/src/main/java/com/lyms/etl/service/impl/CouponInfoServiceImpl.java b/regional-etl/src/main/java/com/lyms/etl/service/impl/CouponInfoServiceImpl.java deleted file mode 100644 index 0731e81..0000000 --- a/regional-etl/src/main/java/com/lyms/etl/service/impl/CouponInfoServiceImpl.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.lyms.etl.service.impl; - -import com.lyms.etl.dao.ICouponInfoDao; -import com.lyms.etl.model.AntExChu; -import com.lyms.etl.model.CouponInfo; -import com.lyms.etl.model.HospitalCouponTemplateGroup; -import com.lyms.etl.model.PatientCheckTicket; -import com.lyms.etl.repository.AntExChuRepository; -import com.lyms.etl.repository.PatientCheckTicketRepository; -import com.lyms.etl.service.ICouponInfoService; -import com.lyms.etl.util.UUIDUtil; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Set; -import java.util.List; - -/** - * @Author: litao - * @Date: 2017/5/3 0003 11:45 - * @Version: V1.0 - */ -@Service -public class CouponInfoServiceImpl implements ICouponInfoService { - @Autowired - private ICouponInfoDao couponInfoDao; - - @Autowired - private PatientCheckTicketRepository patientCheckTicketRepository; - @Autowired - private AntExChuRepository antExChuRepository; - - @Override - public CouponInfo find(String id) { - return couponInfoDao.find(id); - } - - @Override - @Transactional - public void transferCoupon() { - List couponInfos = new ArrayList<>(); - Set hospitalIds = new HashSet<>(); - List patientCheckTickets = patientCheckTicketRepository.findAll(); - for (PatientCheckTicket checkTicket : patientCheckTickets) { - couponInfos.add(createCouponInfo(checkTicket, hospitalIds)); - } - batchInsert(couponInfos, 100); - - setnx(hospitalIds); - } - - /** - * 创建产检券model 并且得到hospitalId - * @param checkTicket - * @param hospitalIds - * @return - */ - private CouponInfo createCouponInfo(PatientCheckTicket checkTicket, Set hospitalIds) { - CouponInfo couponInfo = new CouponInfo(); - couponInfo.setId(UUIDUtil.createId()); - couponInfo.setSequenceId(checkTicket.getId()); - couponInfo.setCreateDate(checkTicket.getCreated()); - couponInfo.setUseDate(checkTicket.getConsumeDate()); - couponInfo.setUserId(checkTicket.getPid()); - couponInfo.setCouponTemplateId(parseSuffix(checkTicket.getId())); - couponInfo.setCreateHospitalId(checkTicket.getHospitalId()); - couponInfo.setUsedHospitalId(checkTicket.getConsumeHospitalId()); - couponInfo.setStatus(checkTicket.getStatus()); - couponInfo.setCreateUserId(null); - AntExChu antExChu = antExChuRepository.findByBarCode(checkTicket.getId()); - if(antExChu != null) { - couponInfo.setOperatorUseId(antExChu.getProdDoctor()); - } - hospitalIds.add(checkTicket.getHospitalId()); - - return couponInfo; - } - - /** - * 批量插入 - * @param couponInfos - * @param size - */ - private void batchInsert(List couponInfos, Integer size) { - List commitList = new ArrayList<>(); - for (int i = 0; i < couponInfos.size(); i++) { - commitList.add(couponInfos.get(i)); - - if(i != 0 && commitList.size() % size == 0) { - couponInfoDao.batchSave(commitList); - commitList.clear(); - } - } - if(CollectionUtils.isNotEmpty(commitList)) { - couponInfoDao.batchSave(commitList); - } - } - - /** - * 验证医院是否存在 - * @param hospitalId - * @return - */ - private boolean validateHospital(String hospitalId) { - HospitalCouponTemplateGroup hospital = couponInfoDao.findHospital(hospitalId); - return hospital == null ? false : true; - } - - private String parseSuffix(String id) { - Integer number = Integer.parseInt(id.substring(id.length() - 1, id.length())); - return couponInfoDao.findTempId(number); - } - - /** - * 医院 不存在就创建 - * @param hospitalIds - */ - public void setnx(Set hospitalIds) { - for (String hospitalId : hospitalIds) { - if(!validateHospital(hospitalId)) { - HospitalCouponTemplateGroup hospitalCouponTemplateGroup = new HospitalCouponTemplateGroup(); - hospitalCouponTemplateGroup.setId(UUIDUtil.createId()); - hospitalCouponTemplateGroup.setHospitalId(hospitalId); - hospitalCouponTemplateGroup.setCouponTemplateGroupId("5150e962-2af9-11e7-9daf-8dc94911792e"); - couponInfoDao.saveHospitalGroup(hospitalCouponTemplateGroup); - } - } - } -} diff --git a/regional-etl/src/main/java/com/lyms/etl/service/impl/CouponServiceImpl.java b/regional-etl/src/main/java/com/lyms/etl/service/impl/CouponServiceImpl.java new file mode 100644 index 0000000..ff52cb8 --- /dev/null +++ b/regional-etl/src/main/java/com/lyms/etl/service/impl/CouponServiceImpl.java @@ -0,0 +1,135 @@ +package com.lyms.etl.service.impl; + +import com.lyms.etl.dao.ICouponInfoDao; +import com.lyms.etl.model.AntExChu; +import com.lyms.etl.model.CouponInfo; +import com.lyms.etl.model.HospitalCouponTemplateGroup; +import com.lyms.etl.model.PatientCheckTicket; +import com.lyms.etl.repository.AntExChuRepository; +import com.lyms.etl.repository.PatientCheckTicketRepository; +import com.lyms.etl.service.ICouponInfoService; +import com.lyms.etl.util.UUIDUtil; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; +import java.util.List; + +/** + * @Author: litao + * @Date: 2017/5/3 0003 11:45 + * @Version: V1.0 + */ +@Profile("coupon") +@Service +public class CouponServiceImpl implements ICouponInfoService { + @Autowired + private ICouponInfoDao couponInfoDao; + + @Autowired + private PatientCheckTicketRepository patientCheckTicketRepository; + @Autowired + private AntExChuRepository antExChuRepository; + + @Override + @Transactional + public void transferCoupon() { + List couponInfos = new ArrayList<>(); + Set hospitalIds = new HashSet<>(); + List patientCheckTickets = patientCheckTicketRepository.findAll(); + for (PatientCheckTicket checkTicket : patientCheckTickets) { + couponInfos.add(createCouponInfo(checkTicket, hospitalIds)); + } + batchInsert(couponInfos, 100); + + setnx(hospitalIds); + } + + /** + * 创建产检券model 并且得到hospitalId + * @param checkTicket + * @param hospitalIds + * @return + */ + private CouponInfo createCouponInfo(PatientCheckTicket checkTicket, Set hospitalIds) { + CouponInfo couponInfo = new CouponInfo(); + couponInfo.setId(UUIDUtil.createId()); + couponInfo.setSequenceId(checkTicket.getId()); + couponInfo.setCreateDate(checkTicket.getCreated()); + couponInfo.setUseDate(checkTicket.getConsumeDate()); + couponInfo.setUserId(checkTicket.getPid()); + couponInfo.setCouponTemplateId(parseSuffix(checkTicket.getId())); + couponInfo.setCreateHospitalId(checkTicket.getHospitalId()); + couponInfo.setUsedHospitalId(checkTicket.getConsumeHospitalId()); + couponInfo.setStatus(checkTicket.getStatus()); + couponInfo.setCreateUserId(null); + AntExChu antExChu = antExChuRepository.findByBarCode(checkTicket.getId()); + if(antExChu != null) { + couponInfo.setOperatorUseId(antExChu.getProdDoctor()); + } + hospitalIds.add(checkTicket.getHospitalId()); + + return couponInfo; + } + + /** + * 批量插入 + * @param couponInfos + * @param size + */ + private void batchInsert(List couponInfos, Integer size) { + List commitList = new ArrayList<>(); + for (int i = 0; i < couponInfos.size(); i++) { + commitList.add(couponInfos.get(i)); + + if(i != 0 && commitList.size() % size == 0) { + couponInfoDao.batchSave(commitList); + commitList.clear(); + } + } + if(CollectionUtils.isNotEmpty(commitList)) { + couponInfoDao.batchSave(commitList); + } + } + + /** + * 验证医院是否存在 + * @param hospitalId + * @return + */ + private boolean validateHospital(String hospitalId) { + HospitalCouponTemplateGroup hospital = couponInfoDao.findHospital(hospitalId); + return hospital == null ? false : true; + } + + private String parseSuffix(String id) { + Integer number = Integer.parseInt(id.substring(id.length() - 1, id.length())); + return couponInfoDao.findTempId(number); + } + + /** + * 医院 不存在就创建 + * @param hospitalIds + */ + public void setnx(Set hospitalIds) { + for (String hospitalId : hospitalIds) { + if(!validateHospital(hospitalId)) { + HospitalCouponTemplateGroup hospitalCouponTemplateGroup = new HospitalCouponTemplateGroup(); + hospitalCouponTemplateGroup.setId(UUIDUtil.createId()); + hospitalCouponTemplateGroup.setHospitalId(hospitalId); + hospitalCouponTemplateGroup.setCouponTemplateGroupId("5150e962-2af9-11e7-9daf-8dc94911792e"); + couponInfoDao.saveHospitalGroup(hospitalCouponTemplateGroup); + } + } + } + + @Override + public void invoke() { + transferCoupon(); + } +} diff --git a/regional-etl/src/main/java/com/lyms/etl/service/impl/EtlServiceImpl.java b/regional-etl/src/main/java/com/lyms/etl/service/impl/EtlServiceImpl.java index 27674fa..3ae5ba2 100644 --- a/regional-etl/src/main/java/com/lyms/etl/service/impl/EtlServiceImpl.java +++ b/regional-etl/src/main/java/com/lyms/etl/service/impl/EtlServiceImpl.java @@ -1,11 +1,20 @@ package com.lyms.etl.service.impl; import com.lyms.etl.service.IEtlService; +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Service; /** * @Author: litao * @Date: 2017/5/3 0003 12:00 * @Version: V1.0 */ +@Profile("etl") +@Service public class EtlServiceImpl implements IEtlService { + @Override + public void invoke() { + System.out.println("etl >> "); + } + } diff --git a/regional-etl/src/main/resources/application-prod.yml b/regional-etl/src/main/resources/application-prod.yml new file mode 100644 index 0000000..1e8472c --- /dev/null +++ b/regional-etl/src/main/resources/application-prod.yml @@ -0,0 +1,43 @@ +server: + port: 8081 +spring: + datasource: + url: jdbc:mysql://119.90.43.68:3307/platform?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8 + username: platform + password: platform123 + driver-class-name: com.mysql.jdbc.Driver + + type: com.alibaba.druid.pool.DruidDataSource + initialSize: 5 + minIdle: 5 + maxActive: 20 + maxWait: 60000 + timeBetweenEvictionRunsMillis: 60000 + minEvictableIdleTimeMillis: 300000 + validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + poolPreparedStatements: true + maxPoolPreparedStatementPerConnectionSize: 20 + filters: stat,wall,log4j + useGlobalDataSourceStat: true + connectionProperties: + druid: + stat: + mergeSql: true + druid: + stat: + slowSqlMillis: 5000 + data: + mongodb: + host: 119.90.57.26 + port: 10001 + database: platform + username: platform + password: platform123 + profiles: + active: etl +mybatis: + typeAliasesPackage: com.lyms.etl.model + mapperLocations: classpath:mappers/*.xml \ No newline at end of file diff --git a/regional-etl/src/main/resources/application.properties b/regional-etl/src/main/resources/application.properties new file mode 100644 index 0000000..e69de29 diff --git a/regional-etl/src/main/resources/application.yml b/regional-etl/src/main/resources/application.yml index 13d1768..d68e8a4 100644 --- a/regional-etl/src/main/resources/application.yml +++ b/regional-etl/src/main/resources/application.yml @@ -36,6 +36,8 @@ spring: database: platform username: platform password: platform123 + profiles: + active: coupon mybatis: typeAliasesPackage: com.lyms.etl.model mapperLocations: classpath:mappers/*.xml \ No newline at end of file -- 1.8.3.1