From 949bf4798368d0fce115993427e03758d4b3c897 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 20 五月 2025 15:58:30 +0800
Subject: [PATCH] 修改bug

---
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSiteController.java |  195 ++++++++++++++++++++++++++++--------------------
 1 files changed, 112 insertions(+), 83 deletions(-)

diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSiteController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSiteController.java
index a44d3f5..a166d85 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSiteController.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSiteController.java
@@ -9,6 +9,7 @@
 import com.stylefeng.guns.core.common.constant.factory.PageFactory;
 import com.stylefeng.guns.core.shiro.ShiroKit;
 import com.stylefeng.guns.core.util.DateUtil;
+import com.stylefeng.guns.core.util.IdGenerator;
 import com.stylefeng.guns.core.util.SinataUtil;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.system.model.TDriverLine;
@@ -18,7 +19,11 @@
 import com.stylefeng.guns.modular.system.service.ITRegionService;
 import com.stylefeng.guns.modular.system.util.GDMapElectricFenceUtil;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
-import org.springframework.stereotype.Controller;
+import com.stylefeng.guns.modular.system.util.model.GeoFencingPolygon;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.data.geo.Point;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.geo.GeoJsonPolygon;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.ui.Model;
@@ -43,23 +48,24 @@
 @Controller
 @RequestMapping("/tSite")
 public class TSiteController extends BaseController {
-
+    
     private String PREFIX = "/system/tSite/";
-
+    
     @Autowired
     private ITSiteService tSiteService;
-
+    
     @Autowired
     private ITRegionService tRegionService;
-
+    
     @Autowired
     private ITLocationService itLocationService;
-
+    
     @Autowired
     private GDMapElectricFenceUtil gdMapElectricFenceUtil;
-
-
-
+    
+    @Autowired
+    private MongoTemplate mongoTemplate;
+    
     /**
      * 跳转到跨城站点管理首页
      */
@@ -67,7 +73,7 @@
     public String index() {
         return PREFIX + "tSite.html";
     }
-
+    
     /**
      * 跳转到添加跨城站点管理
      */
@@ -75,97 +81,110 @@
     public String tSiteAdd(Model model) {
         //省
         List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
-        model.addAttribute("provinceList",provinceList);
+        model.addAttribute("provinceList", provinceList);
         return PREFIX + "tSite_add.html";
     }
-
+    
     /**
      * 跳转到修改跨城站点管理
      */
     @RequestMapping("/tSite_update/{tSiteId}")
     public String tSiteUpdate(@PathVariable Integer tSiteId, Model model) {
         TSite tSite = tSiteService.selectById(tSiteId);
-        model.addAttribute("item",tSite);
+        model.addAttribute("item", tSite);
         LogObjectHolder.me().set(tSite);
-
+        
         //省
         List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
-        model.addAttribute("provinceList",provinceList);
-
+        model.addAttribute("provinceList", provinceList);
+        
         TRegion province = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("code", tSite.getProvinceCode()));
         //市
         List<TRegion> cityList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", province.getId()));
-        model.addAttribute("cityList",cityList);
-
-        if (SinataUtil.isNotEmpty(tSite.getCityCode())){
+        model.addAttribute("cityList", cityList);
+        
+        if (SinataUtil.isNotEmpty(tSite.getCityCode())) {
             TRegion city = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("code", tSite.getCityCode()));
             //区
             List<TRegion> areaList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", city.getId()));
-            model.addAttribute("areaList",areaList);
-        }else{
-            model.addAttribute("areaList",null);
+            model.addAttribute("areaList", areaList);
+        } else {
+            model.addAttribute("areaList", new ArrayList<>());
         }
-
+        if (SinataUtil.isNotEmpty(tSite.getDistrictCode())) {
+            TRegion area = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("code", tSite.getDistrictCode()));
+            //乡镇街道
+            List<TRegion> townList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", area.getId()));
+            model.addAttribute("townList", townList);
+        } else {
+            model.addAttribute("townList", new ArrayList<>());
+        }
         //查询所有的站点区域
         List<TLocation> locationList = itLocationService.selectList(new EntityWrapper<TLocation>().eq("siteId", tSite.getId()).ne("state", 3));
-        model.addAttribute("locationList",locationList);
-        model.addAttribute("disabled","disabled");
-
-        Integer type = itLocationService.selectList(new EntityWrapper<TLocation>().eq("siteId", tSite.getId())).get(0).getType();
-        model.addAttribute("type1", type == 1 ? "block" : "none");
-        model.addAttribute("type2", type == 1 ? "none" : "block");
-        model.addAttribute("checked1", type == 1 ? "checked" : "");
-        model.addAttribute("checked2", type == 1 ? "" : "checked");
+        model.addAttribute("locationList", locationList);
+        model.addAttribute("locationList1", JSON.toJSONString(locationList));
+        model.addAttribute("disabled", "disabled");
+        
+        if (CollectionUtils.isNotEmpty(locationList)) {
+            Integer type = locationList.get(0).getType();
+            model.addAttribute("type1", type == 1 ? "block" : "none");
+            model.addAttribute("type2", type == 1 ? "none" : "block");
+            model.addAttribute("checked1", type == 1 ? "checked" : "");
+            model.addAttribute("checked2", type == 1 ? "" : "checked");
+        }
         return PREFIX + "tSite_edit.html";
     }
-
+    
     /**
      * 获取跨城站点管理列表
      */
     @RequestMapping(value = "/list")
     @ResponseBody
-    public Object list(String insertTime,String name,String insertUser,String city,Integer state) {
+    public Object list(String insertTime, String name, String insertUser, String city, Integer state) {
         String beginTime = null;
         String endTime = null;
-        if (SinataUtil.isNotEmpty(insertTime)){
+        if (SinataUtil.isNotEmpty(insertTime)) {
             String[] timeArray = insertTime.split(" - ");
             beginTime = timeArray[0];
             endTime = timeArray[1];
         }
         Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
-        if (ShiroKit.getUser().getRoleType() != 1){
-            page.setRecords(null);
-        }else{
-            page.setRecords(tSiteService.getSiteList(page,beginTime,endTime,name,insertUser,city,state));
+        if (ShiroKit.getUser().getRoleType() != 1) {
+            if (ShiroKit.getUser().getRoleType() == 2){
+                page.setRecords(tSiteService.getCompanySiteList(page, beginTime, endTime, name, insertUser, city, state,ShiroKit.getUser().getId()));
+            }
+        } else {
+            page.setRecords(tSiteService.getSiteList(page, beginTime, endTime, name, insertUser, city, state));
         }
         return super.packForBT(page);
     }
-
+    
     /**
      * 新增跨城站点管理
      */
     @RequestMapping(value = "/add")
     @ResponseBody
-    public Object add(TSite tSite,@RequestParam String subArr) {
+    public Object add(TSite tSite, @RequestParam String subArr) {
         tSite.setInsertTime(new Date());
         tSite.setInsertUserId(ShiroKit.getUser().getId());
         tSite.setState(1);
         tSiteService.insert(tSite);
-
+        
         //添加站点区域
-        addLocation(subArr,tSite.getId());
+        addLocation(subArr, tSite.getId());
         return ResultUtil.success();
     }
-
+    
     /**
      * 添加站点区域
+     *
      * @param subArr
      * @param id
      */
-    public void addLocation(String subArr,Integer id){
+    public void addLocation(String subArr, Integer id) {
         JSONArray jsonArray = JSON.parseArray(subArr);
         int size = jsonArray.size();
-        for (int i = 0; i < size; i++){
+        for (int i = 0; i < size; i++) {
             JSONObject jsonObject = jsonArray.getJSONObject(i);
             TLocation location = new TLocation();
             location.setSiteId(id);
@@ -176,104 +195,114 @@
             location.setUpdateTime(new Date());
             Integer type = jsonObject.getInteger("areaType");
             location.setType(type);
-            if (1 == type){
-                if (SinataUtil.isNotEmpty(jsonObject.getString("provinceCode"))){
+            if (1 == type) {
+                if (SinataUtil.isNotEmpty(jsonObject.getString("provinceCode"))) {
                     location.setProvince(jsonObject.getString("province"));
                     location.setProvinceCode(jsonObject.getString("provinceCode"));
                 }
-                if (SinataUtil.isNotEmpty(jsonObject.getString("cityCode"))){
+                if (SinataUtil.isNotEmpty(jsonObject.getString("cityCode"))) {
                     location.setCity(jsonObject.getString("city"));
                     location.setCityCode(jsonObject.getString("cityCode"));
                 }
-                if (SinataUtil.isNotEmpty(jsonObject.getString("districtCode"))){
+                if (SinataUtil.isNotEmpty(jsonObject.getString("districtCode"))) {
                     location.setDistrict(jsonObject.getString("district"));
                     location.setDistrictCode(jsonObject.getString("districtCode"));
                 }
-            }else if (2 == type){
+            } else if (2 == type) {
                 String coordinate = jsonObject.getString("coordinate");
                 coordinate = coordinate.substring(0, coordinate.length() - 1);
                 location.setCoordinate(coordinate);
+                //将电子围栏坐标信息存储到MongoDB
+                GeoFencingPolygon gfp = new GeoFencingPolygon();
+                gfp.setId(IdGenerator.getId());
+                gfp.setSiteId(id);
+                gfp.setName(jsonObject.getString("name"));
+                String[] split = coordinate.split(";");
+                List<Point> points = new ArrayList<>();
+                for (String s : split) {
+                    String[] str = s.split(",");
+                    Point point = new Point(Double.parseDouble(str[0]), Double.parseDouble(str[1]));
+                    points.add(point);
+                }
+                //最后一个点要和第一个点相同
+                points.add(new Point(points.get(0).getX(), points.get(0).getY()));
+                gfp.setGeoJsonPolygon(new GeoJsonPolygon(points));
+                mongoTemplate.save(gfp);
             }
             itLocationService.insert(location);
-
-            if(type == 2){
-                List<String> fence = gdMapElectricFenceUtil.createFence(location.getId().toString(), location.getCoordinate());
-                TLocation location1 = itLocationService.selectById(location.getId());
-                String s = "";
-                for(String gid : fence){
-                    s += gid + "_";
-                }
-                location1.setGid(s.substring(0, s.length() - 1));
-                location1.setUpdateTime(new Date());
-                itLocationService.updateById(location1);
-            }
         }
     }
-
+    
     /**
      * 操作跨城站点管理
      * optType 1=删除 2=冻结 3=解冻
      */
     @RequestMapping(value = "/opt")
     @ResponseBody
-    public Object opt(@RequestParam Integer tSiteId,@RequestParam Integer optType) {
+    public Object opt(@RequestParam Integer tSiteId, @RequestParam Integer optType) {
         TSite tSite = tSiteService.selectById(tSiteId);
-        if (1 == optType){
+        if (1 == optType) {
             tSite.setState(3);
-        }else if (2 == optType){
+            //删除mongoDB的区域信息
+            Criteria criteria =Criteria.where("siteId").is(tSite.getId());
+            Query query = new Query(criteria);
+            mongoTemplate.remove(query,GeoFencingPolygon.class);
+        } else if (2 == optType) {
             tSite.setState(2);
-        }else if (3 == optType){
+        } else if (3 == optType) {
             tSite.setState(1);
         }
         tSiteService.updateById(tSite);
         return SUCCESS_TIP;
     }
-
+    
     /**
      * 修改跨城站点管理
      */
     @RequestMapping(value = "/update")
     @ResponseBody
-    public Object update(TSite tSite,@RequestParam String subArr) {
+    public Object update(TSite tSite, @RequestParam String subArr) {
         tSiteService.updateById(tSite);
-
+        
         //删除站点区域
         JSONArray jsonArray = JSON.parseArray(subArr);
+        //查询站点对应区域数据
         List<TLocation> siteId = itLocationService.selectList(new EntityWrapper<TLocation>().eq("siteId", tSite.getId()));
         List<TLocation> del = new ArrayList<>();
         List<Object> add = new ArrayList<>();
-        for(TLocation location : siteId){
+        //遍历区域数据
+        for (TLocation location : siteId) {
             boolean b = true;
             for(int i = 0; i < jsonArray.size(); i++){
                 if(jsonArray.getJSONObject(i).getIntValue("id") == location.getId()){
                     b = false;
                 }
             }
-            if(b){
+            if (b) {
                 del.add(location);
                 continue;
             }
         }
-        for(int i = 0; i < jsonArray.size(); i++){
-            if(jsonArray.getJSONObject(i).getInteger("id") == null){
+        for (int i = 0; i < jsonArray.size(); i++) {
+            if (jsonArray.getJSONObject(i).getInteger("id") == null) {
                 add.add(jsonArray.get(i));
             }
         }
-        for(TLocation location : del){
-            if(location.getType() == 2){
-                String[] s = location.getGid().split("_");
-                for(String gid : s){
-                    gdMapElectricFenceUtil.deleteElectricFenc(gid);
-                }
+        for (TLocation location : del) {
+            if (location.getType() == 2) {
+                //删除mongoDB的区域信息
+                Criteria criteria =Criteria.where("siteId").is(tSite.getId());
+                Query query = new Query(criteria);
+                mongoTemplate.remove(query,GeoFencingPolygon.class);
             }
             itLocationService.deleteById(location.getId());
         }
-
+        
         //添加站点区域
-        addLocation(JSON.toJSONString(add),tSite.getId());
+        addLocation(JSON.toJSONString(add), tSite.getId());
         return SUCCESS_TIP;
     }
-
+    
     /**
      * 跨城站点管理详情
      */

--
Gitblit v1.7.1