Commit ede6deca8c860cb9ca958e578bb4fa6ae513f9bf

Authored by yangfei
1 parent 508b247535

服务同步

Showing 2 changed files with 31 additions and 16 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java View file @ ede6dec
... ... @@ -45,7 +45,6 @@
45 45 import java.io.File;
46 46 import java.io.IOException;
47 47 import java.util.*;
48   -import java.util.concurrent.Future;
49 48  
50 49 /**
51 50 * Created by Zhang.Rui on 2016/4/8.
52 51  
53 52  
54 53  
55 54  
... ... @@ -148,23 +147,27 @@
148 147 //排查本院隐藏建档
149 148 patientsQuery.setExtEnable(false);
150 149 patientsQuery.setBuildTypeNot(1);
  150 + // patientsQuery.setServiceType(ServiceTypeEnums.ADD_SERVICE.getId());
151 151 patientsQuery.setYn(YnEnums.YES.getId());
152 152 patientsQuery.setType(1);
153 153  
154 154 int patientCount = patientsService.queryPatientCount(patientsQuery);
155 155 System.out.println("一共需要处理数据量:"+patientCount);
156 156  
157   - //预计开启5个线程处理,计算每个线程需要处理的数据量
158   - int batchSize = patientCount/5;
  157 + //计算每个线程需要处理的数据量,默认1000,必须是分页条数的倍数,不然多线程处理的数据会重复
  158 + int batchSize = 1000;
  159 + if(patientCount>10000){
  160 + batchSize = 10000;
  161 + }
  162 +
159 163 int end = 0;
160   - List<Future> listFuture = new ArrayList<>();
161 164 for (int i = 0; i < patientCount; i += batchSize) {
162 165 end = (end + batchSize);
163 166 if (end > patientCount) {
164   - end = patientCount+1;
  167 + end = patientCount;
165 168 }
166 169 System.out.println("线程处理数据量:"+i+"--至--"+end);
167   - listFuture.add(commonThreadPool.submit(new BuildSerToPatientSerWorker(i, end,patientsService,patientServiceService,isSkip,isZjzx,batchSize,patientCount)));
  170 + commonThreadPool.submit(new BuildSerToPatientSerWorker(i, end,patientsService,patientServiceService,isSkip,isZjzx,batchSize,patientCount));
168 171 }
169 172  
170 173 // for (Future f : listFuture) {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BuildSerToPatientSerWorker.java View file @ ede6dec
... ... @@ -5,6 +5,7 @@
5 5 import com.lyms.platform.common.enums.ServiceStatusEnums;
6 6 import com.lyms.platform.common.enums.ServiceTypeEnums;
7 7 import com.lyms.platform.common.enums.YnEnums;
  8 +import com.lyms.platform.common.utils.StringUtils;
8 9 import com.lyms.platform.operate.web.utils.CollectionUtils;
9 10 import com.lyms.platform.permission.model.PatientService;
10 11 import com.lyms.platform.permission.model.PatientServiceQuery;
11 12  
... ... @@ -12,7 +13,9 @@
12 13 import com.lyms.platform.pojo.Patients;
13 14 import com.lyms.platform.query.PatientsQuery;
14 15  
  16 +import java.util.HashMap;
15 17 import java.util.List;
  18 +import java.util.Map;
16 19 import java.util.UUID;
17 20 import java.util.concurrent.Callable;
18 21  
19 22  
20 23  
... ... @@ -54,16 +57,15 @@
54 57 @Override
55 58 public Object call() {
56 59 try {
  60 + Map<String,Integer> patientsMap = new HashMap<>();
  61 +
57 62 for (int i = startIndex; i < endIndex; i += batchSize) {
58 63 PatientsQuery patientsQuery = new PatientsQuery();
59   - if(i+batchSize>endIndex){
60   - patientsQuery.setLimit(endIndex-i);
61   - }else{
62   - patientsQuery.setLimit(batchSize);
63   - }
64   - System.out.println("总数据量:"+allCount+",正在处理第:" + i+"--到--"+(i+batchSize)+",limit:"+patientsQuery.getLimit());
65   -
  64 + patientsQuery.setLimit(batchSize);
66 65 patientsQuery.setPage((i + batchSize) / batchSize);
  66 +
  67 + System.out.println("总数据量:"+allCount+",正在处理第:" + i+"--到--"+(i+batchSize)+",page:"+patientsQuery.getPage()+",limit:"+patientsQuery.getLimit());
  68 +
67 69 //排查本院隐藏建档
68 70 patientsQuery.setExtEnable(false);
69 71 patientsQuery.setBuildTypeNot(1);
... ... @@ -73,6 +75,13 @@
73 75  
74 76 List<Patients> patients = patientsService.queryPatient(patientsQuery);
75 77 for (Patients pt : patients) {
  78 + if(StringUtils.isEmpty(pt.getId())){
  79 + System.out.println("建档主键id为空:"+pt.getId());
  80 + }else if(patientsMap.containsKey(pt.getId())){//存在
  81 + System.out.println("重复的主键:"+pt.getId());
  82 + }else{
  83 + patientsMap.put(pt.getId(),1);
  84 + }
76 85 if (pt.getServiceType() == null) {
77 86 System.out.println("跳过数据:"+pt.getId());
78 87 continue;
79 88  
... ... @@ -115,13 +124,13 @@
115 124 convertPatient(pt, pser2);
116 125 //增值服务有服务医生
117 126 pser2.setSerDoct(pt.getBookbuildingDoctor());
118   - patientServiceService.addPatientService(pser2);
  127 + // patientServiceService.addPatientService(pser2);
119 128 }
120 129 } else {
121 130 convertPatient(pt, pser2);
122 131 //增值服务有服务医生
123 132 pser2.setSerDoct(pt.getBookbuildingDoctor());
124   - patientServiceService.addPatientService(pser2);
  133 + // patientServiceService.addPatientService(pser2);
125 134 }
126 135 }
127 136 }
128 137  
129 138  
... ... @@ -134,14 +143,17 @@
134 143  
135 144 List<PatientService> patientServices = patientServiceService.queryPatientService(patientQuery);
136 145 if (CollectionUtils.isNotEmpty(patientServices)) {
  146 + System.out.println("增量查询数据存在:"+pt.getId());
137 147 continue;
138 148 }
139 149 }
140 150 //老数据服务标记
141   - patientServiceService.addPatientService(pser);
  151 + // patientServiceService.addPatientService(pser);
142 152 }
143 153 // System.out.println("endIndex:" + endIndex + "," + i + ":" + patients.size());
144 154 }
  155 +
  156 + System.out.println("线程处理数据完成,开始条数:"+startIndex+",结束条数:"+endIndex+",map:"+ patientsMap.size());
145 157 } catch (Exception e) {
146 158 e.printStackTrace();
147 159 }