server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/DistanceCalculator.java
@@ -167,6 +167,6 @@ Math.sin(dLon / 2) * Math.sin(dLon / 2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); return (long) (EARTH_RADIUS * c ); return (long) (EARTH_RADIUS * c * 1000); } } server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/TspSolver.java
@@ -134,7 +134,7 @@ RoutingSearchParameters searchParameters = main.defaultRoutingSearchParameters() .toBuilder() .setTimeLimit(Duration.newBuilder().setSeconds(60*60).build())//最久1小时 // .setTimeLimit(Duration.newBuilder().setSeconds(60*60).build())//最久1小时 .setFirstSolutionStrategy(FirstSolutionStrategy.Value.PATH_CHEAPEST_ARC) .build(); server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkSketchCustomerServiceImpl.java
@@ -143,7 +143,7 @@ startmodel.setSteps(allList.get(0).getStartSteps()); if(StringUtils.isBlank(startmodel.getSteps())){ // (BigDecimal lat1, BigDecimal lon1, BigDecimal lat2, BigDecimal lon2) startmodel.setDistance(DistanceCalculator.calculateDistanceDecinal(startmodel.getStartLatitude(),startmodel.getStartLogitude(),startmodel.getEndLatitude(),startmodel.getEndLatitude())); startmodel.setDistance(DistanceCalculator.calculateDistanceDecinal(startmodel.getStartLatitude(),startmodel.getStartLogitude(),startmodel.getEndLatitude(),startmodel.getEndLogitude())); startmodel.setSteps(comLocation +";"+allList.get(0).getLongitude()+","+allList.get(0).getLatitude()); } list.add(startmodel); @@ -186,7 +186,7 @@ if(param!=null && param.getDistance()!=0){//如果之前已经获取过 tt.setDistance(param.getDistance()); }else{ tt.setDistance(DistanceCalculator.calculateDistanceDecinal(tt.getStartLatitude(),tt.getStartLogitude(),tt.getEndLatitude(),tt.getEndLatitude())); tt.setDistance(DistanceCalculator.calculateDistanceDecinal(tt.getStartLatitude(),tt.getStartLogitude(),tt.getEndLatitude(),tt.getEndLogitude())); } } tt.setLocation(allList.get(i).getLocation()); server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkSketchServiceImpl.java
@@ -730,7 +730,7 @@ DistanceMapParam t = new DistanceMapParam(); t.setId(cm.getCustomerId()); DistanceMapParam param = getParamByCustomerIds( cm.getCustomerId(),distanceMapParamList); if(param!=null){//如果之前已经获取过 if(param!=null && t.getDistance()>0){//如果之前已经获取过 t = param; }else{ //如果未规划,按照直线距离 @@ -758,14 +758,27 @@ int index =0; for(JkSketchCustomer c : customers){ if(index ==0){ if(c.getStartDistance() >0){ lineDistance+= Constants.formatLongNum(c.getStartDistance()); }else{ lineDistance += DistanceCalculator.calculateDistanceDecinal(c.getLatitude(),c.getLongitude(),cLatitude,cLongitude); } } if(index == customers.size()-1){ if(c.getEndDistance() >0){ lineDistance+= Constants.formatLongNum(c.getEndDistance()); }else{ lineDistance += DistanceCalculator.calculateDistanceDecinal(c.getLatitude(),c.getLongitude(),cLatitude,cLongitude); } break; } DistanceMapParam param = getParamByCustomerIds( customers.get(index+1).getCustomerId(),getListFromJsonStr(c.getDistanceJson())); lineDistance += param.getDistance(); JkSketchCustomer end = customers.get(index+1); DistanceMapParam param1 = getParamByCustomerIds(end.getCustomerId(),getListFromJsonStr(c.getDistanceJson())); if(param1 !=null && param1.getDistance()>0){ lineDistance += param1.getDistance(); }else{ lineDistance += DistanceCalculator.calculateDistanceDecinal(c.getLatitude(),c.getLongitude(),end.getLatitude(),end.getLongitude()); } index++; /* for(JkSketchCustomer cm : customers){ DistanceMapParam param = getParamByCustomerIds( cm.getCustomerId(),getListFromJsonStr(c.getDistanceJson()));