Browse Source

药店调查-转换经纬度

lixuesong 3 years ago
parent
commit
eca05855ae

+ 11 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaPharmacyController.java

@@ -26,7 +26,6 @@ import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
 import com.qunzhixinxi.hnqz.admin.service.WmDaPharmacyService;
-import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -218,6 +217,17 @@ public class WmDaPharmacyController {
 		return R.ok();
 	}
 
+	/**
+	 * 批量转换经纬度
+	 *
+	 * @return
+	 */
+	@GetMapping("/parseAddress")
+	public R<?> parseAddress() {
+		wmDaPharmacyService.parseAddress();
+		return R.ok();
+	}
+
 	/**
 	 * 调查信息审核--药企
 	 *

+ 5 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaPharmacyService.java

@@ -34,4 +34,9 @@ public interface WmDaPharmacyService extends IService<WmDaPharmacy> {
     R approvalPharmacy(String taskId);
 
 	R updateByapproval(Map<String, String> map);
+
+	/**
+	 * 批量转换经纬度
+	 */
+	void parseAddress();
 }

+ 42 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaPharmacyServiceImpl.java

@@ -16,7 +16,9 @@
  */
 package com.qunzhixinxi.hnqz.admin.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.csp.sentinel.util.StringUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaPharmacy;
@@ -30,6 +32,7 @@ import com.qunzhixinxi.hnqz.admin.service.WmDaPharmacyService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
+import com.qunzhixinxi.hnqz.admin.util.MapUtil;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
@@ -154,6 +157,8 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
 				}
 				wmDaPharmacy.setCreateTime(now);
 				wmDaPharmacy.setCreateUser(userId);
+				// 根据地址转换经纬度
+				this.convertToLatAndLong(wmDaPharmacy);
 				this.save(wmDaPharmacy);
 			}else if("2".equals(compareResult)){//信息不一致
 				//对比药店和调研信息,只有所属地区不一样
@@ -182,6 +187,8 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
 				wmDaPharmacy.setAddress(wmTaskContent.getTemp4());
 				wmDaPharmacy.setUpdateTime(now);
 				wmDaPharmacy.setUpdateUser(userId);
+				// 根据地址转换经纬度
+				this.convertToLatAndLong(wmDaPharmacy);
 				//更新药店信息;
 				this.updateById(wmDaPharmacy);
 			}
@@ -235,5 +242,40 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
 		return R.ok();
 	}
 
+	/**
+	 * 批量转换经纬度
+	 */
+	@Override
+	public void parseAddress() {
+		List<WmDaPharmacy> list = this.list(Wrappers.<WmDaPharmacy>lambdaQuery().isNull(WmDaPharmacy::getLatitude));
+		if (CollectionUtil.isNotEmpty(list)) {
+			list.forEach(wmDaPharmacy -> {
+				this.convertToLatAndLong(wmDaPharmacy);
+				this.saveOrUpdate(wmDaPharmacy);
+			});
+		}
+	}
+
+	/**
+	 * 根据地址转换经纬度
+	 *
+	 * @param wmDaPharmacy
+	 */
+	private void convertToLatAndLong(WmDaPharmacy wmDaPharmacy) {
+		String fullAddress = wmDaPharmacy.getProvince() + wmDaPharmacy.getCity() + wmDaPharmacy.getArea()
+				+ wmDaPharmacy.getAddress();
+		JSONObject jsonObject = MapUtil.getLatAndLogByName(fullAddress);
+		if (jsonObject != null) {
+			wmDaPharmacy.setProvince(jsonObject.getString("province"));
+			wmDaPharmacy.setCity(jsonObject.getString("city"));
+			wmDaPharmacy.setArea(jsonObject.getString("district"));
+			String location = jsonObject.getString("location");
+			if (null != location && location.split(",").length > 0) {
+				wmDaPharmacy.setLongitude(location.split(",")[0]);
+				wmDaPharmacy.setLatitude(location.split(",")[1]);
+			}
+		}
+	}
+
 
 }