Commit 3fecf5d817bd25a050105ccc1c3305a3ecaa92a8

Authored by litao
1 parent cc57679ac4

产检券数据导出完成

Showing 6 changed files with 179 additions and 7 deletions

regional-etl/pom.xml View file @ 3fecf5d
... ... @@ -18,7 +18,7 @@
18 18 <dependencies>
19 19 <dependency>
20 20 <groupId>org.springframework.boot</groupId>
21   - <artifactId>spring-boot-starter-web</artifactId>
  21 + <artifactId>spring-boot-starter</artifactId>
22 22 </dependency>
23 23  
24 24 <dependency>
... ... @@ -73,6 +73,17 @@
73 73 <dependency>
74 74 <groupId>org.slf4j</groupId>
75 75 <artifactId>log4j-over-slf4j</artifactId>
  76 + </dependency>
  77 +
  78 + <dependency>
  79 + <groupId>org.apache.commons</groupId>
  80 + <artifactId>commons-collections4</artifactId>
  81 + <version>4.1</version>
  82 + </dependency>
  83 + <dependency>
  84 + <groupId>org.apache.commons</groupId>
  85 + <artifactId>commons-lang3</artifactId>
  86 + <version>3.5</version>
76 87 </dependency>
77 88 </dependencies>
78 89  
regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java View file @ 3fecf5d
... ... @@ -8,6 +8,7 @@
8 8 import org.springframework.boot.CommandLineRunner;
9 9 import org.springframework.boot.SpringApplication;
10 10 import org.springframework.boot.autoconfigure.SpringBootApplication;
  11 +import org.springframework.transaction.annotation.EnableTransactionManagement;
11 12  
12 13 import java.util.Date;
13 14  
... ... @@ -17,6 +18,7 @@
17 18 * @Version: V1.0
18 19 */
19 20 @SpringBootApplication
  21 +@EnableTransactionManagement
20 22 @MapperScan("com.lyms.etl.dao")
21 23 public class ApplicationRunner implements CommandLineRunner{
22 24  
regional-etl/src/main/java/com/lyms/etl/dao/ICouponInfoDao.java View file @ 3fecf5d
1 1 package com.lyms.etl.dao;
2 2  
3 3 import com.lyms.etl.model.CouponInfo;
  4 +import com.lyms.etl.model.HospitalCouponTemplateGroup;
4 5  
  6 +import java.util.List;
  7 +
5 8 /**
6 9 * @Author: litao
7 10 * @Date: 2017/5/3 0003 11:30
... ... @@ -12,5 +15,13 @@
12 15 CouponInfo find(String id);
13 16  
14 17 void save(CouponInfo couponInfo);
  18 +
  19 + String findTempId(Integer number);
  20 +
  21 + HospitalCouponTemplateGroup findHospital(String hospitalId);
  22 +
  23 + void saveHospitalGroup(HospitalCouponTemplateGroup hospitalCouponTemplateGroup);
  24 +
  25 + void batchSave(List<CouponInfo> commitList);
15 26 }
regional-etl/src/main/java/com/lyms/etl/model/HospitalCouponTemplateGroup.java View file @ 3fecf5d
  1 +package com.lyms.etl.model;
  2 +
  3 +/**
  4 + * 医院和优惠券模板表 多对一 对应关系
  5 + * @date: 2017-05-05 11:43:33
  6 + */
  7 +public class HospitalCouponTemplateGroup {
  8 + private String id;
  9 +
  10 + private String hospitalId;
  11 +
  12 + private String couponTemplateGroupId;
  13 +
  14 +
  15 + public String getId() {
  16 + return id;
  17 + }
  18 +
  19 + public void setId(String id) {
  20 + this.id = id;
  21 + }
  22 + public String getHospitalId() {
  23 + return hospitalId;
  24 + }
  25 +
  26 + public void setHospitalId(String hospitalId) {
  27 + this.hospitalId = hospitalId;
  28 + }
  29 + public String getCouponTemplateGroupId() {
  30 + return couponTemplateGroupId;
  31 + }
  32 +
  33 + public void setCouponTemplateGroupId(String couponTemplateGroupId) {
  34 + this.couponTemplateGroupId = couponTemplateGroupId;
  35 + }
  36 +
  37 + @Override
  38 + public String toString() {
  39 + StringBuilder sb = new StringBuilder();
  40 + sb.append("HospitalCouponTemplateGroup [ ");
  41 + sb.append("id=" + id + ",");
  42 + sb.append("hospitalId=" + hospitalId + ",");
  43 + sb.append("couponTemplateGroupId=" + couponTemplateGroupId + ",");
  44 + sb.replace(sb.length()-1, sb.length(), " ]");
  45 + return sb.toString();
  46 + }
  47 +
  48 +
  49 +}
regional-etl/src/main/java/com/lyms/etl/service/impl/CouponInfoServiceImpl.java View file @ 3fecf5d
... ... @@ -3,14 +3,20 @@
3 3 import com.lyms.etl.dao.ICouponInfoDao;
4 4 import com.lyms.etl.model.AntExChu;
5 5 import com.lyms.etl.model.CouponInfo;
  6 +import com.lyms.etl.model.HospitalCouponTemplateGroup;
6 7 import com.lyms.etl.model.PatientCheckTicket;
7 8 import com.lyms.etl.repository.AntExChuRepository;
8 9 import com.lyms.etl.repository.PatientCheckTicketRepository;
9 10 import com.lyms.etl.service.ICouponInfoService;
10 11 import com.lyms.etl.util.UUIDUtil;
  12 +import org.apache.commons.collections4.CollectionUtils;
11 13 import org.springframework.beans.factory.annotation.Autowired;
12 14 import org.springframework.stereotype.Service;
  15 +import org.springframework.transaction.annotation.Transactional;
13 16  
  17 +import java.util.ArrayList;
  18 +import java.util.HashSet;
  19 +import java.util.Set;
14 20 import java.util.List;
15 21  
16 22 /**
17 23  
18 24  
19 25  
20 26  
... ... @@ -34,19 +40,33 @@
34 40 }
35 41  
36 42 @Override
  43 + @Transactional
37 44 public void transferCoupon() {
  45 + List<CouponInfo> couponInfos = new ArrayList<>();
  46 + Set<String> hospitalIds = new HashSet<>();
38 47 List<PatientCheckTicket> patientCheckTickets = patientCheckTicketRepository.findAll();
39   - for (PatientCheckTicket patientCheckTicket : patientCheckTickets) {
40   - System.err.println(patientCheckTicket);
  48 + for (PatientCheckTicket checkTicket : patientCheckTickets) {
  49 + couponInfos.add(createCouponInfo(checkTicket, hospitalIds));
41 50 }
42   - PatientCheckTicket checkTicket = patientCheckTicketRepository.findOne("033500003781");
  51 + batchInsert(couponInfos, 100);
  52 +
  53 + setnx(hospitalIds);
  54 + }
  55 +
  56 + /**
  57 + * 创建产检券model 并且得到hospitalId
  58 + * @param checkTicket
  59 + * @param hospitalIds
  60 + * @return
  61 + */
  62 + private CouponInfo createCouponInfo(PatientCheckTicket checkTicket, Set<String> hospitalIds) {
43 63 CouponInfo couponInfo = new CouponInfo();
44 64 couponInfo.setId(UUIDUtil.createId());
45 65 couponInfo.setSequenceId(checkTicket.getId());
46 66 couponInfo.setCreateDate(checkTicket.getCreated());
47 67 couponInfo.setUseDate(checkTicket.getConsumeDate());
48 68 couponInfo.setUserId(checkTicket.getPid());
49   - couponInfo.setCouponTemplateId("");
  69 + couponInfo.setCouponTemplateId(parseSuffix(checkTicket.getId()));
50 70 couponInfo.setCreateHospitalId(checkTicket.getHospitalId());
51 71 couponInfo.setUsedHospitalId(checkTicket.getConsumeHospitalId());
52 72 couponInfo.setStatus(checkTicket.getStatus());
53 73  
... ... @@ -55,9 +75,60 @@
55 75 if(antExChu != null) {
56 76 couponInfo.setOperatorUseId(antExChu.getProdDoctor());
57 77 }
58   - couponInfoDao.save(couponInfo);
59   - System.err.println("xx》 " + antExChuRepository.findByBarCode("033500000051"));
  78 + hospitalIds.add(checkTicket.getHospitalId());
60 79  
  80 + return couponInfo;
  81 + }
  82 +
  83 + /**
  84 + * 批量插入
  85 + * @param couponInfos
  86 + * @param size
  87 + */
  88 + private void batchInsert(List<CouponInfo> couponInfos, Integer size) {
  89 + List<CouponInfo> commitList = new ArrayList<>();
  90 + for (int i = 0; i < couponInfos.size(); i++) {
  91 + commitList.add(couponInfos.get(i));
  92 +
  93 + if(i != 0 && commitList.size() % size == 0) {
  94 + couponInfoDao.batchSave(commitList);
  95 + commitList.clear();
  96 + }
  97 + }
  98 + if(CollectionUtils.isNotEmpty(commitList)) {
  99 + couponInfoDao.batchSave(commitList);
  100 + }
  101 + }
  102 +
  103 + /**
  104 + * 验证医院是否存在
  105 + * @param hospitalId
  106 + * @return
  107 + */
  108 + private boolean validateHospital(String hospitalId) {
  109 + HospitalCouponTemplateGroup hospital = couponInfoDao.findHospital(hospitalId);
  110 + return hospital == null ? false : true;
  111 + }
  112 +
  113 + private String parseSuffix(String id) {
  114 + Integer number = Integer.parseInt(id.substring(id.length() - 1, id.length()));
  115 + return couponInfoDao.findTempId(number);
  116 + }
  117 +
  118 + /**
  119 + * 医院 不存在就创建
  120 + * @param hospitalIds
  121 + */
  122 + public void setnx(Set<String> hospitalIds) {
  123 + for (String hospitalId : hospitalIds) {
  124 + if(!validateHospital(hospitalId)) {
  125 + HospitalCouponTemplateGroup hospitalCouponTemplateGroup = new HospitalCouponTemplateGroup();
  126 + hospitalCouponTemplateGroup.setId(UUIDUtil.createId());
  127 + hospitalCouponTemplateGroup.setHospitalId(hospitalId);
  128 + hospitalCouponTemplateGroup.setCouponTemplateGroupId("5150e962-2af9-11e7-9daf-8dc94911792e");
  129 + couponInfoDao.saveHospitalGroup(hospitalCouponTemplateGroup);
  130 + }
  131 + }
61 132 }
62 133 }
regional-etl/src/main/resources/mappers/CouponInfoMapper.xml View file @ 3fecf5d
... ... @@ -18,6 +18,12 @@
18 18 <result column="operator_use_id" property="operatorUseId"/>
19 19 </resultMap>
20 20  
  21 + <resultMap type="HospitalCouponTemplateGroup" id="hospitalCouponTemplateGroupMap">
  22 + <result column="id" property="id"/>
  23 + <result column="hospital_id" property="hospitalId"/>
  24 + <result column="coupon_template_group_id" property="couponTemplateGroupId"/>
  25 + </resultMap>
  26 +
21 27 <sql id="columnList">
22 28 sequence_id,create_date,use_date,user_id,create_user_id,coupon_template_id,create_hospital_id,used_hospital_id,status
23 29 </sql>
... ... @@ -28,6 +34,28 @@
28 34  
29 35 <insert id="save" parameterType="CouponInfo">
30 36 insert into coupon_info(id, <include refid="columnList" />) values(#{id},#{sequenceId},#{createDate},#{useDate},#{userId},#{createUserId},#{couponTemplateId},#{createHospitalId},#{usedHospitalId},#{status})
  37 + </insert>
  38 +
  39 + <select id="findTempId" parameterType="integer" resultType="string">
  40 + SELECT a.id FROM
  41 + coupon_template a, coupon_type b
  42 + WHERE a.type_id = b.id and b.type = 2 and a.coupon_order = #{number}
  43 + order by a.coupon_order
  44 + </select>
  45 +
  46 + <select id="findHospital" parameterType="string" resultMap="hospitalCouponTemplateGroupMap">
  47 + select id,hospital_id,coupon_template_group_id from hospital_coupon_template_group where hospital_id = #{id}
  48 + </select>
  49 +
  50 + <insert id="saveHospitalGroup" parameterType="HospitalCouponTemplateGroup">
  51 + insert into hospital_coupon_template_group values(#{id}, #{hospitalId},#{couponTemplateGroupId})
  52 + </insert>
  53 +
  54 + <insert id="batchSave" parameterType="list">
  55 + insert into coupon_info(id, <include refid="columnList" />) values
  56 + <foreach collection="list" item="item" index="index" separator="," >
  57 + (#{item.id}, #{item.sequenceId}, #{item.createDate}, #{item.useDate}, #{item.userId}, #{item.createUserId}, #{item.couponTemplateId}, #{item.createHospitalId}, #{item.usedHospitalId}, #{item.status})
  58 + </foreach>
31 59 </insert>
32 60 </mapper>