From 8134798d85d2abb086f727fde8b6fd20d3acd670 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 24 十一月 2025 09:04:36 +0800
Subject: [PATCH] 最新版本541200007

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkSketchCustomerServiceImpl.java |    4 ++--
 admin/src/views/business/jkSketch.vue                                                                         |   17 ++++++++++++++++-
 server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/DistanceCalculator.java                       |    2 +-
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkSketchServiceImpl.java         |   23 ++++++++++++++++++-----
 server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/TspSolver.java                                |    2 +-
 5 files changed, 38 insertions(+), 10 deletions(-)

diff --git a/admin/src/views/business/jkSketch.vue b/admin/src/views/business/jkSketch.vue
index 6cb865b..ff2f105 100644
--- a/admin/src/views/business/jkSketch.vue
+++ b/admin/src/views/business/jkSketch.vue
@@ -5,6 +5,12 @@
       <el-form-item label="閫佽揣鏃ユ湡" prop="dateInfo">
         <el-date-picker v-model="searchForm.dateInfo" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ棩鏈�" @change="search"/>
       </el-form-item>
+      <el-form-item label="鎵�灞炰富绾胯矾" prop="categoryId">
+        <el-select v-model="searchForm.categoryId" clearable filterable placeholder="璇烽�夋嫨鎵�灞炰富绾胯矾"  @change="search">
+          <el-option v-for="item in categoryList" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item label="鐘舵��" prop="status" >
         <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" clearable @change="search">
           <el-option label="鏈紭鍖�" value="0"></el-option>
@@ -91,6 +97,7 @@
 import OperaJkSketchLineListWindow from '@/components/business/OperaJkSketchLineListWindow'
 import OperaJkSketchResultWindow from '@/components/business/OperaJkSketchResultWindow'
 import OperaJkSketchImportWindow from '@/components/business/OperaJkSketchImportWindow'
+import {fetchCateList} from "@/api/business/category";
 export default {
   name: 'JkSketch',
   extends: BaseTable,
@@ -100,12 +107,14 @@
       // 鎼滅储
       searchForm: {
         status: '',
+        categoryId: '',
         dateInfo: ''
       },
       isWorking: {
         export1: false,
         export2: false
-      }
+      },
+      categoryList: []
     }
   },
   created () {
@@ -121,8 +130,14 @@
     const day = now.getDate();
     this.searchForm.dateInfo = `${year}-${month}-${day}`
     this.search()
+    this.loadCategory()
   },
   methods: {
+    loadCategory () {
+      fetchCateList({ type: 4 }).then(res => {
+        this.categoryList = res || []
+      })
+    },
     exportExcel1 () {
       if (!this.searchForm.dateInfo) {
         this.$message.error('璇烽�夋嫨鎸囧畾鏃ユ湡杩涜璇ュ鍑烘搷浣滐紒')
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/DistanceCalculator.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/DistanceCalculator.java
index 054a7e0..17a6b87 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/DistanceCalculator.java
+++ b/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);
     }
 }
\ No newline at end of file
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/TspSolver.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/TspSolver.java
index 2aa6bef..a5263ab 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/TspSolver.java
+++ b/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();
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkSketchCustomerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkSketchCustomerServiceImpl.java
index d059939..4f1aaeb 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkSketchCustomerServiceImpl.java
+++ b/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());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkSketchServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkSketchServiceImpl.java
index cf239d5..a2c4051 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkSketchServiceImpl.java
+++ b/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){
-                        lineDistance+= Constants.formatLongNum(c.getStartDistance());
+                        if(c.getStartDistance() >0){
+                            lineDistance+= Constants.formatLongNum(c.getStartDistance());
+                        }else{
+                            lineDistance += DistanceCalculator.calculateDistanceDecinal(c.getLatitude(),c.getLongitude(),cLatitude,cLongitude);
+                        }
                     }
                     if(index == customers.size()-1){
-                        lineDistance+= Constants.formatLongNum(c.getEndDistance());
+                        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()));

--
Gitblit v1.9.3