| 
					
				 | 
			
			
				@@ -0,0 +1,126 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package thyyxxk.webserver.scheduled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.collections4.ListUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.scheduling.annotation.Scheduled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.dao.his.reports.PatientDistributionAddressDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.entity.inpatient.patient.Patient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.utils.BaiduMapGeocoderUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.utils.ListUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.utils.StringUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.charset.StandardCharsets; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.file.Files; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.file.Path; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.file.Paths; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class UpdatePatientLatitudeAndLongitude { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Value("${execute-scheduled}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private Boolean executeScheduled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final PatientDistributionAddressDao dao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public UpdatePatientLatitudeAndLongitude(PatientDistributionAddressDao dao) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.dao = dao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 每天一点执行定时任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 患者地址转坐标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Scheduled(cron = "0 0 1 * * ?") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void UpdatePatientLatitudeAndLongitude() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!executeScheduled) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Patient> list = dao.timedTaskPatientData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ListUtil.notBlank(list)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (Patient patient : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (StringUtil.notBlank(patient.getHomeStreet())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String[] address = BaiduMapGeocoderUtil.getlocation(patient.getHomeStreet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (address == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        patient.setAddrTransedFlag(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        patient.setLatitude(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        patient.setLongitude(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        patient.setAddrTransedFlag(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        patient.setLongitude(new BigDecimal(address[0])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        patient.setLatitude(new BigDecimal(address[1])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    log.info("住院号:{},地址:{},经度:{},纬度:{}", patient.getInpatientNo(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            patient.getHomeStreet(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            patient.getLongitude(), patient.getLatitude()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<List<Patient>> performAnUpdate = ListUtils.partition(list, 50); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (List<Patient> patients : performAnUpdate) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dao.updatePatientAddress(patients); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void test() throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String fileName = "D:\\world\\server\\web-server\\serverlog\\temp.txt"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Path path = Paths.get(fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> allLines = Files.readAllLines(path, StandardCharsets.UTF_8); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Patient> updated = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Integer 数量 = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (String allLine : allLines) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Patient patient = new Patient(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Integer 位置 = allLine.indexOf("住院号:"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (位置 > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String str = allLine.substring(位置); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String[] list = str.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int i = 0; i < list.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String 信息 = list[i].split(":")[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if ("null".equals(信息)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        信息 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    switch (i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        case 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            patient.setInpatientNo(信息); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        case 2: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            patient.setLongitude(信息 == null ? null : new BigDecimal(信息)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        case 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            patient.setLatitude(信息 == null ? null : new BigDecimal(信息)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.info("转化信息:{}", JSON.toJSONString(patient)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                updated.add(patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<List<Patient>> performAnUpdate = ListUtils.partition(updated, 50); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (List<Patient> patients : performAnUpdate) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            dao.updatePatientAddress(patients); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |