|
@@ -15,6 +15,7 @@ import com.zfire.jiasm.syncdata.plus.entity.*;
|
|
|
import com.zfire.jiasm.syncdata.plus.service.*;
|
|
|
import com.zfire.jiasm.syncdata.response.*;
|
|
|
import com.zfire.jiasm.syncdata.service.PublicService;
|
|
|
+import com.zfire.jiasm.syncdata.test;
|
|
|
import com.zfire.jiasm.syncdata.utils.MyBeanUtils;
|
|
|
import com.zfire.jiasm.syncdata.utils.RedisUtil;
|
|
|
import com.zfire.jiasm.syncdata.utils.ResponseHelper;
|
|
@@ -22,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -83,6 +85,14 @@ public class PublicServiceImpl implements PublicService {
|
|
|
RedisUtil redis;
|
|
|
@Resource
|
|
|
ItfTblWangdianWxgDownloadService itfTblWangdianWxgDownloadService;
|
|
|
+ @Resource
|
|
|
+ StreetService streetService;
|
|
|
+ @Resource
|
|
|
+ AreaService areaService;
|
|
|
+ @Resource
|
|
|
+ BrandLbsRelateService brandLbsRelateService;
|
|
|
+ @Autowired
|
|
|
+ LbsAmapService lbsAmapService;
|
|
|
|
|
|
|
|
|
private static String ALISMS_RESERVE = "尊敬的客户,您好!师傅上门时间为%s,服务网点电话:%s,如本次上门时间与您的安排有冲突,请拨打服务网点电话联系,我们将竭诚为您服务!";
|
|
@@ -1148,6 +1158,265 @@ public class PublicServiceImpl implements PublicService {
|
|
|
return wos;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ // 安装工单的省市区对应关系
|
|
|
+ @Override
|
|
|
+ public void installOrderSSQJ(OrderBase orderBase){
|
|
|
+ // 先查 lbs_amap表 1省,2市,3区,4街道 找到直接返回
|
|
|
+ Integer flag = getLbsAmap(orderBase);
|
|
|
+ if (flag>3){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 再查 BrandLbsRelate 表
|
|
|
+ getBrandLbsRelate(orderBase,flag);
|
|
|
+
|
|
|
+ // 根据地址设置经纬度
|
|
|
+ setLocationByAddress(orderBase);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setLocationByAddress(OrderBase orderBase) {
|
|
|
+ if (StringUtils.isEmpty(orderBase.getLng()) || StringUtils.isEmpty(orderBase.getLat())) {
|
|
|
+ String add = "";
|
|
|
+ if (StringUtils.isNotEmpty(orderBase.getProvince())) {
|
|
|
+ add = add + orderBase.getProvince();
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(orderBase.getCity())) {
|
|
|
+ add = add + orderBase.getCity();
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(orderBase.getArea())) {
|
|
|
+ add = add + orderBase.getArea();
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(orderBase.getStreet())) {
|
|
|
+ add = add + orderBase.getStreet();
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(add)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String lngLat = getLocationByAddress(add);
|
|
|
+ if (StringUtils.isEmpty(lngLat)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<String> result = Arrays.asList(lngLat.split(","));
|
|
|
+
|
|
|
+ orderBase.setLng(result.get(0));
|
|
|
+ orderBase.setLat(result.get(1));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void getBrandLbsRelate(OrderBase orderBase, Integer flag) {
|
|
|
+ // 格力总部的省市区为必填,可能无街道
|
|
|
+ if (StringUtils.isNotEmpty(orderBase.getStreet())){
|
|
|
+ // 提取格力总部的省市区街道信息 这里带上街道条件,可能查不到
|
|
|
+ Street street = streetService.lambdaQuery()
|
|
|
+ .eq(Street::getStatus, 1)
|
|
|
+ .eq(Street::getProvince, orderBase.getProvince())
|
|
|
+ .eq(Street::getCity, orderBase.getCity())
|
|
|
+ .eq(Street::getArea, orderBase.getArea())
|
|
|
+ .eq(Street::getStreet, orderBase.getStreet())
|
|
|
+ .last("limit 1")
|
|
|
+ .one();
|
|
|
+ // 对应出平台的省市区街道信息 无对应关系时依总部的为准
|
|
|
+ if (street!=null){
|
|
|
+ getPosition(orderBase, street, flag);
|
|
|
+ } else {
|
|
|
+ // 总部区必选项 按区再次查询
|
|
|
+ List<Area> area = areaService.lambdaQuery()
|
|
|
+ .eq(Area::getProvince, orderBase.getProvince())
|
|
|
+ .eq(Area::getCity, orderBase.getCity())
|
|
|
+ .eq(Area::getArea, orderBase.getArea()).list();
|
|
|
+
|
|
|
+ Street st = new Street();
|
|
|
+ if (CollectionUtils.isNotEmpty(area)){
|
|
|
+ BeanUtils.copyProperties(area.get(0),st);
|
|
|
+ getPosition(orderBase, st, flag);
|
|
|
+ orderBase.setStreet("");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ List<Area> area = areaService.lambdaQuery()
|
|
|
+ .eq(Area::getProvince, orderBase.getProvince())
|
|
|
+ .eq(Area::getCity, orderBase.getCity())
|
|
|
+ .eq(Area::getArea, orderBase.getArea()).list();
|
|
|
+ Street st = new Street();
|
|
|
+ if (CollectionUtils.isNotEmpty(area)){
|
|
|
+ BeanUtils.copyProperties(area.get(0),st);
|
|
|
+ getPosition(orderBase, st, flag);
|
|
|
+ orderBase.setStreet("");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // getLocationByAddress
|
|
|
+ if (StringUtils.isEmpty(orderBase.getLng()) || StringUtils.isEmpty(orderBase.getLat())){
|
|
|
+ String add = "";
|
|
|
+ if (StringUtils.isNotEmpty(orderBase.getProvince())){
|
|
|
+ add = add + orderBase.getProvince();
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(orderBase.getCity())){
|
|
|
+ add = add + orderBase.getCity();
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(orderBase.getArea())){
|
|
|
+ add = add + orderBase.getArea();
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(orderBase.getStreet())){
|
|
|
+ add = add + orderBase.getStreet();
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(add)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String lngLat = getLocationByAddress(add);
|
|
|
+ if (StringUtils.isEmpty(lngLat)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<String> result = Arrays.asList(lngLat.split(","));
|
|
|
+
|
|
|
+ orderBase.setLng(result.get(0));
|
|
|
+ orderBase.setLat(result.get(1));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1省,2市,3区,4街道
|
|
|
+ private Integer getLbsAmap(OrderBase orderBase){
|
|
|
+ // 先查 lbs_amap表
|
|
|
+ LbsAmap lbsAmap = lbsAmapService.lambdaQuery()
|
|
|
+ .eq(LbsAmap::getName,orderBase.getProvince())
|
|
|
+ .eq(LbsAmap::getLevel,"province")
|
|
|
+ .last("limit 1").one();
|
|
|
+ if (lbsAmap == null){
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ //省
|
|
|
+ orderBase.setProvinceId(lbsAmap.getProvinceId());
|
|
|
+ orderBase.setProvince(lbsAmap.getProvinceName());
|
|
|
+
|
|
|
+ lbsAmap = lbsAmapService.lambdaQuery()
|
|
|
+ .eq(LbsAmap::getProvinceId,lbsAmap.getProvinceId())
|
|
|
+ .eq(LbsAmap::getName,orderBase.getCity())
|
|
|
+ .eq(LbsAmap::getLevel,"city")
|
|
|
+ .last("limit 1").one();
|
|
|
+ if (lbsAmap == null){
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ //市
|
|
|
+ orderBase.setCityId(lbsAmap.getCityId());
|
|
|
+ orderBase.setCity(lbsAmap.getCityName());
|
|
|
+
|
|
|
+ lbsAmap = lbsAmapService.lambdaQuery()
|
|
|
+ .eq(LbsAmap::getProvinceId,lbsAmap.getProvinceId())
|
|
|
+ .eq(LbsAmap::getCityId,lbsAmap.getCityId())
|
|
|
+ .eq(LbsAmap::getName,orderBase.getArea())
|
|
|
+ .eq(LbsAmap::getLevel,"district")
|
|
|
+ .last("limit 1").one();
|
|
|
+ if (lbsAmap == null){
|
|
|
+ return 2;
|
|
|
+ }
|
|
|
+ //区
|
|
|
+ orderBase.setAreaId(lbsAmap.getAreaId());
|
|
|
+ orderBase.setArea(lbsAmap.getAreaName());
|
|
|
+
|
|
|
+ lbsAmap = lbsAmapService.lambdaQuery()
|
|
|
+ .eq(LbsAmap::getProvinceId,lbsAmap.getProvinceId())
|
|
|
+ .eq(LbsAmap::getCityId,lbsAmap.getCityId())
|
|
|
+ .eq(LbsAmap::getAreaId,lbsAmap.getAreaId())
|
|
|
+ .eq(LbsAmap::getName,orderBase.getStreet())
|
|
|
+ .eq(LbsAmap::getLevel,"street")
|
|
|
+ .last("limit 1").one();
|
|
|
+ if (lbsAmap == null){
|
|
|
+ return 3;
|
|
|
+ }
|
|
|
+ //街道
|
|
|
+ orderBase.setStreetId(lbsAmap.getLbsId());
|
|
|
+ orderBase.setStreet(lbsAmap.getName());
|
|
|
+
|
|
|
+ return 4;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void getPosition(OrderBase orderBase, Street street, Integer flag) {
|
|
|
+ //省市区,有时无街道,这里不提取街道信息
|
|
|
+ List<BrandLbsRelate> br = brandLbsRelateService.lambdaQuery()
|
|
|
+ .eq(BrandLbsRelate::getDel,0)
|
|
|
+ .eq(BrandLbsRelate::getProvinceId, street.getProvinceId())
|
|
|
+ .eq(BrandLbsRelate::getCityId, street.getCityId())
|
|
|
+ .eq(BrandLbsRelate::getAreaId, street.getAreaId())
|
|
|
+ .isNotNull(BrandLbsRelate::getLbsProvinceId)
|
|
|
+ .isNotNull(BrandLbsRelate::getLbsCityId)
|
|
|
+ .isNotNull(BrandLbsRelate::getLbsDistrictId).list();
|
|
|
+
|
|
|
+ if (br !=null && br.size()>0){
|
|
|
+ if (flag==0){
|
|
|
+ //省
|
|
|
+ orderBase.setProvinceId(br.get(0).getLbsProvinceId());
|
|
|
+ orderBase.setProvince(br.get(0).getLbsProvinceName());
|
|
|
+ //市
|
|
|
+ orderBase.setCityId(br.get(0).getLbsCityId());
|
|
|
+ orderBase.setCity(br.get(0).getLbsCityName());
|
|
|
+ //区
|
|
|
+ orderBase.setAreaId(br.get(0).getLbsDistrictId());
|
|
|
+ orderBase.setArea(br.get(0).getLbsDistrictName());
|
|
|
+ } else if (flag==1){
|
|
|
+ //市
|
|
|
+ orderBase.setCityId(br.get(0).getLbsCityId());
|
|
|
+ orderBase.setCity(br.get(0).getLbsCityName());
|
|
|
+ //区
|
|
|
+ orderBase.setAreaId(br.get(0).getLbsDistrictId());
|
|
|
+ orderBase.setArea(br.get(0).getLbsDistrictName());
|
|
|
+ } else if (flag==2){
|
|
|
+ //区
|
|
|
+ orderBase.setAreaId(br.get(0).getLbsDistrictId());
|
|
|
+ orderBase.setArea(br.get(0).getLbsDistrictName());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 找不到依总部的为准
|
|
|
+ if (StringUtils.isEmpty(orderBase.getProvinceId())){
|
|
|
+ orderBase.setProvinceId(street.getProvinceId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(orderBase.getCityId())){
|
|
|
+ orderBase.setCityId(street.getCityId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(orderBase.getAreaId())){
|
|
|
+ orderBase.setAreaId(street.getAreaId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(orderBase.getStreetId())){
|
|
|
+ orderBase.setStreetId(street.getStreetId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(orderBase.getStreet()) &&
|
|
|
+ StringUtils.isEmpty(street.getStreet())){
|
|
|
+ orderBase.setStreet(street.getStreet());
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 提取街道信息
|
|
|
+ if (StringUtils.isNotEmpty(orderBase.getStreet())){
|
|
|
+ //街道单独处理
|
|
|
+ br = brandLbsRelateService.lambdaQuery()
|
|
|
+ .eq(BrandLbsRelate::getDel,0)
|
|
|
+ .eq(BrandLbsRelate::getProvinceId, street.getProvinceId())
|
|
|
+ .eq(BrandLbsRelate::getCityId, street.getCityId())
|
|
|
+ .eq(BrandLbsRelate::getAreaId, street.getAreaId())
|
|
|
+ .eq(BrandLbsRelate::getStreetId,street.getStreetId())
|
|
|
+ .isNotNull(BrandLbsRelate::getLbsProvinceId)
|
|
|
+ .isNotNull(BrandLbsRelate::getLbsCityId)
|
|
|
+ .isNotNull(BrandLbsRelate::getLbsDistrictId)
|
|
|
+ .isNotNull(BrandLbsRelate::getLbsStreetId).list();
|
|
|
+ if (br !=null && br.size()>0){
|
|
|
+ orderBase.setStreetId(br.get(0).getLbsStreetId());
|
|
|
+ orderBase.setStreet(br.get(0).getLbsStreetName());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 先街道时依总部为准
|
|
|
+ if (StringUtils.isEmpty(orderBase.getStreetId()) &&
|
|
|
+ StringUtils.isNotEmpty(street.getStreetId())){
|
|
|
+ orderBase.setStreetId(street.getStreetId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(orderBase.getStreet()) &&
|
|
|
+ StringUtils.isNotEmpty(street.getStreet())){
|
|
|
+ orderBase.setStreet(street.getStreet());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private String getFaOrderSmsfsma(String phone) {
|
|
|
Random random = new Random(System.currentTimeMillis());
|
|
|
String fsma="";
|