diff --git a/regional-etl/pom.xml b/regional-etl/pom.xml index 6a59767..e7469e6 100644 --- a/regional-etl/pom.xml +++ b/regional-etl/pom.xml @@ -18,7 +18,7 @@ org.springframework.boot - spring-boot-starter-web + spring-boot-starter @@ -74,6 +74,17 @@ org.slf4j log4j-over-slf4j + + + org.apache.commons + commons-collections4 + 4.1 + + + org.apache.commons + commons-lang3 + 3.5 + 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 53dd0ce..d491c63 100644 --- a/regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java +++ b/regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java @@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.transaction.annotation.EnableTransactionManagement; import java.util.Date; @@ -17,6 +18,7 @@ import java.util.Date; * @Version: V1.0 */ @SpringBootApplication +@EnableTransactionManagement @MapperScan("com.lyms.etl.dao") public class ApplicationRunner implements CommandLineRunner{ diff --git a/regional-etl/src/main/java/com/lyms/etl/dao/ICouponInfoDao.java b/regional-etl/src/main/java/com/lyms/etl/dao/ICouponInfoDao.java index 3a3fa06..1c02442 100644 --- a/regional-etl/src/main/java/com/lyms/etl/dao/ICouponInfoDao.java +++ b/regional-etl/src/main/java/com/lyms/etl/dao/ICouponInfoDao.java @@ -1,6 +1,9 @@ package com.lyms.etl.dao; import com.lyms.etl.model.CouponInfo; +import com.lyms.etl.model.HospitalCouponTemplateGroup; + +import java.util.List; /** * @Author: litao @@ -12,4 +15,12 @@ public interface ICouponInfoDao { CouponInfo find(String id); void save(CouponInfo couponInfo); + + String findTempId(Integer number); + + HospitalCouponTemplateGroup findHospital(String hospitalId); + + void saveHospitalGroup(HospitalCouponTemplateGroup hospitalCouponTemplateGroup); + + void batchSave(List commitList); } diff --git a/regional-etl/src/main/java/com/lyms/etl/model/HospitalCouponTemplateGroup.java b/regional-etl/src/main/java/com/lyms/etl/model/HospitalCouponTemplateGroup.java new file mode 100644 index 0000000..9b324b1 --- /dev/null +++ b/regional-etl/src/main/java/com/lyms/etl/model/HospitalCouponTemplateGroup.java @@ -0,0 +1,49 @@ +package com.lyms.etl.model; + +/** + * 医院和优惠券模板表 多对一 对应关系 + * @date: 2017-05-05 11:43:33 + */ +public class HospitalCouponTemplateGroup { + private String id; + + private String hospitalId; + + private String couponTemplateGroupId; + + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + public String getCouponTemplateGroupId() { + return couponTemplateGroupId; + } + + public void setCouponTemplateGroupId(String couponTemplateGroupId) { + this.couponTemplateGroupId = couponTemplateGroupId; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("HospitalCouponTemplateGroup [ "); + sb.append("id=" + id + ","); + sb.append("hospitalId=" + hospitalId + ","); + sb.append("couponTemplateGroupId=" + couponTemplateGroupId + ","); + sb.replace(sb.length()-1, sb.length(), " ]"); + return sb.toString(); + } + + +} 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 index a4fc7eb..0731e81 100644 --- 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 @@ -3,14 +3,20 @@ 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; /** @@ -34,19 +40,33 @@ public class CouponInfoServiceImpl implements ICouponInfoService { } @Override + @Transactional public void transferCoupon() { + List couponInfos = new ArrayList<>(); + Set hospitalIds = new HashSet<>(); List patientCheckTickets = patientCheckTicketRepository.findAll(); - for (PatientCheckTicket patientCheckTicket : patientCheckTickets) { - System.err.println(patientCheckTicket); + for (PatientCheckTicket checkTicket : patientCheckTickets) { + couponInfos.add(createCouponInfo(checkTicket, hospitalIds)); } - PatientCheckTicket checkTicket = patientCheckTicketRepository.findOne("033500003781"); + 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(""); + couponInfo.setCouponTemplateId(parseSuffix(checkTicket.getId())); couponInfo.setCreateHospitalId(checkTicket.getHospitalId()); couponInfo.setUsedHospitalId(checkTicket.getConsumeHospitalId()); couponInfo.setStatus(checkTicket.getStatus()); @@ -55,8 +75,59 @@ public class CouponInfoServiceImpl implements ICouponInfoService { if(antExChu != null) { couponInfo.setOperatorUseId(antExChu.getProdDoctor()); } - couponInfoDao.save(couponInfo); - System.err.println("xx》 " + antExChuRepository.findByBarCode("033500000051")); + 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/resources/mappers/CouponInfoMapper.xml b/regional-etl/src/main/resources/mappers/CouponInfoMapper.xml index b651add..20be920 100644 --- a/regional-etl/src/main/resources/mappers/CouponInfoMapper.xml +++ b/regional-etl/src/main/resources/mappers/CouponInfoMapper.xml @@ -18,6 +18,12 @@ + + + + + + sequence_id,create_date,use_date,user_id,create_user_id,coupon_template_id,create_hospital_id,used_hospital_id,status @@ -29,4 +35,26 @@ insert into coupon_info(id, ) values(#{id},#{sequenceId},#{createDate},#{useDate},#{userId},#{createUserId},#{couponTemplateId},#{createHospitalId},#{usedHospitalId},#{status}) + + + + + + + insert into hospital_coupon_template_group values(#{id}, #{hospitalId},#{couponTemplateGroupId}) + + + + insert into coupon_info(id, ) values + + (#{item.id}, #{item.sequenceId}, #{item.createDate}, #{item.useDate}, #{item.userId}, #{item.createUserId}, #{item.couponTemplateId}, #{item.createHospitalId}, #{item.usedHospitalId}, #{item.status}) + + \ No newline at end of file