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