浏览代码

fix: 1.根据经纬度查询,增加查询指定范围数据;2.药店以省市区地址+名称确定唯一

lixuesong 3 年之前
父节点
当前提交
c79b9d1a8d

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

@@ -76,7 +76,7 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
 		if(null==wmTaskContent){
 			return R.failed("调研信息为空");
 		}
-		// 根据省市区+详情地址查询药店
+		// 根据省市区+详情地址+药店名称查询药店
 		WmDaPharmacy query = new WmDaPharmacy();
 		// 省市区
 		if (StringUtil.isNotBlank(wmTaskContent.getTemp7())) {
@@ -98,6 +98,8 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
 		}
 		// 详细地址
 		query.setAddress(wmTaskContent.getTemp4());
+		// 药店名称
+		query.setPharmacyName(wmTaskContent.getTemp3());
 		query.setDelFlag("0");
 		List<WmDaPharmacy> wdplist = wmDaPharmacyMapper.selectList(Wrappers.query(query));
 		if(CollectionUtil.isNotEmpty(wdplist)) {
@@ -179,35 +181,35 @@ public class WmDaPharmacyServiceImpl extends ServiceImpl<WmDaPharmacyMapper, WmD
 				this.save(wmDaPharmacy);
 			}else if("2".equals(compareResult)){//信息不一致
 				//对比药店和调研信息,只有所属地区不一样
-				List<WmDaPharmacy> wdplist=wmDaPharmacyMapper.slectByParam(wmTaskContent.getTemp3());
-				if(null!=wdplist&&wdplist.size()>0){
-					wmDaPharmacy=wdplist.get(0);
-				}
-				String address=wmDaPharmacy.getProvince()+"-"+wmDaPharmacy.getCity()+"-"+wmDaPharmacy.getArea();
-				if(null!=wmTaskContent.getTemp7()&&!wmTaskContent.getTemp7().equals(address)){
-					String[] citys=wmTaskContent.getTemp7().split("-");
-					if(citys.length==3){
-						wmDaPharmacy.setProvince(citys[0]);
-						wmDaPharmacy.setCity(citys[1]);
-						wmDaPharmacy.setArea(citys[2]);
-					}else {
-						String[] citys1=wmTaskContent.getTemp7().split(",");
-						if(citys1.length==3) {
-							wmDaPharmacy.setProvince(citys1[0]);
-							wmDaPharmacy.setCity(citys1[1]);
-							wmDaPharmacy.setArea(citys1[2]);
-						}
-					}
-				}
-				wmDaPharmacy.setId(map.get("infoId"));
-				wmDaPharmacy.setPharmacyName(wmTaskContent.getTemp3());//名称
-				wmDaPharmacy.setAddress(wmTaskContent.getTemp4());
-				wmDaPharmacy.setUpdateTime(now);
-				wmDaPharmacy.setUpdateUser(userId);
+//				List<WmDaPharmacy> wdplist=wmDaPharmacyMapper.slectByParam(wmTaskContent.getTemp3());
+//				if(null!=wdplist&&wdplist.size()>0){
+//					wmDaPharmacy=wdplist.get(0);
+//				}
+//				String address=wmDaPharmacy.getProvince()+"-"+wmDaPharmacy.getCity()+"-"+wmDaPharmacy.getArea();
+//				if(null!=wmTaskContent.getTemp7()&&!wmTaskContent.getTemp7().equals(address)){
+//					String[] citys=wmTaskContent.getTemp7().split("-");
+//					if(citys.length==3){
+//						wmDaPharmacy.setProvince(citys[0]);
+//						wmDaPharmacy.setCity(citys[1]);
+//						wmDaPharmacy.setArea(citys[2]);
+//					}else {
+//						String[] citys1=wmTaskContent.getTemp7().split(",");
+//						if(citys1.length==3) {
+//							wmDaPharmacy.setProvince(citys1[0]);
+//							wmDaPharmacy.setCity(citys1[1]);
+//							wmDaPharmacy.setArea(citys1[2]);
+//						}
+//					}
+//				}
+//				wmDaPharmacy.setId(map.get("infoId"));
+//				wmDaPharmacy.setPharmacyName(wmTaskContent.getTemp3());//名称
+//				wmDaPharmacy.setAddress(wmTaskContent.getTemp4());
+//				wmDaPharmacy.setUpdateTime(now);
+//				wmDaPharmacy.setUpdateUser(userId);
 				// 根据地址转换经纬度
-				this.convertToLatAndLong(wmDaPharmacy);
+//				this.convertToLatAndLong(wmDaPharmacy);
 				//更新药店信息;
-				this.updateById(wmDaPharmacy);
+//				this.updateById(wmDaPharmacy);
 			}
 
 		}else{

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

@@ -37,6 +37,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.entity.MonitoringIndicator;
 import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
+import com.qunzhixinxi.hnqz.admin.entity.WmDaPharmacy;
 import com.qunzhixinxi.hnqz.admin.entity.WmReport;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
@@ -1488,7 +1489,9 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 				} else if ("18".equals(task.getTaskTypeId())) {
 					Map<String, Object> data = (Map<String, Object>) wmDaPharmacyService.approvalPharmacy(task.getId()).getData();
 					WmTask _wmTask = (WmTask) data.get("_wmTask");
+					WmDaPharmacy info = (WmDaPharmacy) data.get("info");
 					Map<String, String> paramMap = MapUtil.newHashMap(4);
+					paramMap.put("infoId", info.getId());
 					paramMap.put("approvalInfo", wmTask.getTaskStatusInfo());
 					paramMap.put("approvalOpinion", approvalOpinion);
 					paramMap.put("compareResult", _wmTask.getCompareResult());

+ 5 - 2
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmDaDistributionMapper.xml

@@ -63,12 +63,15 @@
 		<result property="medicineTraceabilityOther" column="medicine_traceability_other"/>
 	</resultMap>
 
+	<!-- 根据经纬度获取指定范围内数据 -->
 	<select  id="listByPoint" resultMap="wmDaDistributionMap">
 		SELECT
 		s.*,
-		(st_distance (point (s.longitude, s.latitude),point(#{query.longitude},#{query.latitude}) ) / 0.0111) AS distance
+		(st_distance (point (s.longitude, s.latitude),point(#{query.longitude},#{query.latitude})) / 0.0111) AS distance
 		FROM wm_da_distribution s
 		where s.longitude is not null and s.latitude is not null and s.del_flag=0 and s.enable_flag=0
-		ORDER BY distance asc limit 10
+	  	AND (st_distance (point (s.longitude, s.latitude),point(#{query.longitude},#{query.latitude})) / 0.0111)
+			&lt;= (SELECT value from sys_dict_item WHERE type='point_jwd' limit 1) / 1000
+		ORDER BY distance asc
 	</select>
 </mapper>

+ 5 - 2
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmDaHospitalMapper.xml

@@ -60,12 +60,15 @@
                         <result property="updateUser" column="update_user"/>
             </resultMap>
 
+	<!-- 根据经纬度获取指定范围内数据 -->
 	<select  id="listByPoint" resultMap="wmDaHospitalMap">
 		SELECT
 		s.*,
-		(st_distance (point (s.longitude, s.latitude),point(#{query.longitude},#{query.latitude}) ) / 0.0111) AS distance
+		(st_distance (point (s.longitude, s.latitude),point(#{query.longitude},#{query.latitude})) / 0.0111) AS distance
 		FROM wm_da_hospital s
 		where s.longitude is not null and s.latitude is not null and s.del_flag=0 and s.enable_flag=0
-		ORDER BY distance asc limit 10
+	  	AND (st_distance (point (s.longitude, s.latitude),point(#{query.longitude},#{query.latitude})) / 0.0111)
+			&lt;= (SELECT value from sys_dict_item WHERE type='point_jwd' limit 1) / 1000
+		ORDER BY distance asc
 	</select>
 </mapper>

+ 5 - 2
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmDaPharmacyMapper.xml

@@ -51,12 +51,15 @@
 		</if>
 	</select>
 
+	<!-- 根据经纬度获取指定范围内数据 -->
 	<select  id="listByPoint" resultMap="wmDaPharmacyMap">
 		SELECT
 			p.*,
-			(st_distance (point (p.longitude, p.latitude),point(#{query.longitude},#{query.latitude}) ) / 0.0111) AS distance
+			(st_distance (point (p.longitude, p.latitude),point(#{query.longitude},#{query.latitude})) / 0.0111) AS distance
 		FROM wm_da_pharmacy p
 		where p.longitude is not null and p.latitude is not null and p.del_flag=0 and p.enable_flag=0
-		ORDER BY distance asc limit 10
+		AND (st_distance (point (p.longitude, p.latitude), point(#{query.longitude},#{query.latitude})) / 0.0111)
+		        &lt;= (SELECT value from sys_dict_item WHERE type='point_jwd' limit 1) / 1000
+		ORDER BY distance asc
 	</select>
 </mapper>