wenhongquan 1 year ago
parent
commit
e3d225b216

+ 2 - 0
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/controller/TblDzbcAreaController.java

@@ -2,6 +2,7 @@ package org.dromara.system.controller;
 
 import java.util.List;
 
+import cn.dev33.satoken.annotation.SaIgnore;
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
@@ -40,6 +41,7 @@ public class TblDzbcAreaController extends BaseController {
      * 查询定制班车-区域列表
      */
 
+    @SaIgnore
     @GetMapping("/list")
     public TableDataInfo<TblDzbcAreaVo> list(TblDzbcAreaBo bo, PageQuery pageQuery) {
         return tblDzbcAreaService.queryPageList(bo, pageQuery);

+ 57 - 1
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/controller/TblDzbcPathSchedulingController.java

@@ -13,6 +13,12 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import org.dromara.common.redis.utils.RedisUtils;
+import org.dromara.system.domain.bo.TblDzbcSiteBo;
+import org.dromara.system.domain.vo.TblDzbcAreaVo;
+import org.dromara.system.domain.vo.TblDzbcSiteVo;
+import org.dromara.system.service.ITblDzbcAreaService;
+import org.dromara.system.service.ITblDzbcSiteService;
+import org.dromara.util.DistanceCalculator;
 import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
@@ -43,6 +49,8 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
 public class TblDzbcPathSchedulingController extends BaseController {
 
     private final ITblDzbcPathSchedulingService tblDzbcPathSchedulingService;
+    private final ITblDzbcSiteService tblDzbcSiteService;
+    private final ITblDzbcAreaService tblDzbcAreaService;
 
     /**
      * 查询定制班车-路线排班列表
@@ -121,7 +129,7 @@ public class TblDzbcPathSchedulingController extends BaseController {
      */
     @Log(title = "定制班车-路线排班", businessType = BusinessType.DELETE)
     @GetMapping("/getCarTickets")
-    public R<Object> getCarTickets(@RequestParam(required = true) String searchDate,@RequestParam(required = true) Long fromareaId,@RequestParam(required = true) Long toareaId) {
+    public R<Object> getCarTickets(@RequestParam(required = true) String searchDate,@RequestParam(required = true) Long fromareaId,@RequestParam(required = true) Long toareaId,@RequestParam(required = false) Long fromsiteId,@RequestParam(required = false) Long tositeId) {
         //优先从缓存中获取车量信息  缓存没有则初始化缓存
         Date date = new Date();
         try{
@@ -160,6 +168,7 @@ public class TblDzbcPathSchedulingController extends BaseController {
             }).collect(Collectors.toList());
 
             if(carTickets.size()<1){return  R.fail("没有排班信息");}
+
             //计算余票
             for (TblDzbcPathSchedulingVo carTicket : carTickets) {
                 //先计算车辆座位数
@@ -197,7 +206,54 @@ public class TblDzbcPathSchedulingController extends BaseController {
                     }
                 }
             }
+
             return R.ok(carTickets);
         }
     }
+
+    /**
+     * 获取定制班车-票价
+     * @param schedulingId
+     * @param fromsiteId
+     * @param tositeId
+     * @return
+     */
+    @GetMapping("/getPrice")
+    public R<Object> getCarTickets(@RequestParam(required = true) Long schedulingId,@RequestParam(required = false) Long fromsiteId,@RequestParam(required = false) Long tositeId){
+        TblDzbcPathSchedulingVo tblDzbcPathSchedulingVo = tblDzbcPathSchedulingService.queryById(schedulingId);
+        if(tblDzbcPathSchedulingVo==null) return R.fail("排班信息不存在");
+        JSONObject dataObject = JSONUtil.parseObj(tblDzbcPathSchedulingVo.getExt1()).getJSONObject("pathInfo");
+        Long fromareaId = dataObject.getLong("startArea");
+        Long toareaId = dataObject.getLong("endArea");
+
+        //计算票价
+        if(fromsiteId!=null && tositeId!=null){
+            try {
+                //查询起点  //查询终点
+                TblDzbcSiteVo startSite = tblDzbcSiteService.queryById(fromsiteId);
+                TblDzbcSiteVo endSite = tblDzbcSiteService.queryById(tositeId);
+                TblDzbcAreaVo startArea = tblDzbcAreaService.queryById(fromareaId);
+                TblDzbcAreaVo toArea = tblDzbcAreaService.queryById(toareaId);
+                if(!startSite.getAreaId().equals(fromareaId) || !endSite.getAreaId().equals(toareaId) ){
+                    return  R.fail("站点未与区域对应");
+                }
+                if(fromareaId.equals(toareaId)){
+                    return  R.fail("不能是同一区域");
+                }
+                double distanceArea = DistanceCalculator.calculateDistance(startArea.getLocation(),toArea.getLocation());
+                double distanceSite = DistanceCalculator.calculateDistance(startSite.getLocation(),endSite.getLocation());
+
+                Integer price1 = dataObject.getInt("price");
+                if(price1==null) return R.fail("路线价格未设置");
+                //单价 根据区域-区域 单价及站点-站点 计算价格
+                double price = price1*(distanceSite/distanceArea);
+                //计算加价
+                tblDzbcPathSchedulingVo.setPrice((int)Math.round(price+tblDzbcPathSchedulingVo.getPprice()));
+
+            } catch (Exception e) {
+                return  R.fail("站点信息错误");
+            }
+        }
+        return R.ok(tblDzbcPathSchedulingVo);
+    }
 }

+ 2 - 0
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/controller/TblDzbcSiteController.java

@@ -2,6 +2,7 @@ package org.dromara.system.controller;
 
 import java.util.List;
 
+import cn.dev33.satoken.annotation.SaIgnore;
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
@@ -40,6 +41,7 @@ public class TblDzbcSiteController extends BaseController {
      * 查询定制班车-站点列表
      */
     //@SaCheckPermission("system:dzbcSite:list")
+    @SaIgnore
     @GetMapping("/list")
     public TableDataInfo<TblDzbcSiteVo> list(TblDzbcSiteBo bo, PageQuery pageQuery) {
         return tblDzbcSiteService.queryPageList(bo, pageQuery);

+ 2 - 0
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/domain/vo/TblDzbcPathSchedulingVo.java

@@ -100,5 +100,7 @@ public class TblDzbcPathSchedulingVo implements Serializable {
 
     private Integer  pprice;
 
+    private Integer  price;
+
 
 }

+ 70 - 1
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/service/impl/TblDzbcOrderServiceImpl.java

@@ -1,6 +1,8 @@
 package org.dromara.system.service.impl;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.thread.ThreadUtil;
+import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
 import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
@@ -15,8 +17,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.system.domain.TblDzbcOrderLog;
+import org.dromara.system.domain.TblDzbcPathScheduling;
 import org.dromara.system.domain.TblDzbcSite;
 import org.dromara.system.domain.bo.TblDzbcOrderLogBo;
+import org.dromara.system.domain.bo.TblDzbcPathSchedulingBo;
 import org.dromara.system.domain.vo.*;
 import org.dromara.system.mapper.*;
 import org.dromara.util.DistanceCalculator;
@@ -26,6 +30,7 @@ import org.dromara.system.domain.TblDzbcOrder;
 import org.dromara.system.service.ITblDzbcOrderService;
 import org.springframework.util.Assert;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -172,9 +177,73 @@ public class TblDzbcOrderServiceImpl implements ITblDzbcOrderService {
         } catch (Exception e) {
 
         }
+        int c = baseMapper.updateById(update);
+        if(bo.getId()!=null && bo.getStatus()!=null){
+            //跟新路线站点信息
+            ThreadUtil.execAsync(new Runnable() {
+                @Override
+                public void run() {
+                    //获取所有订单为2的订单
+                    //先获取当前点的的路线ID
+                    TblDzbcOrderVo entity = queryById(bo.getId());
+                    if(entity!=null){
+                        TblDzbcOrderBo bo1 = new TblDzbcOrderBo();
+                        bo1.setSchedulingId(entity.getSchedulingId());
+                        List<TblDzbcOrderVo> list = queryList(bo1);
+                        //查出所有订单的startInfo和endInfo
+                        //{"areaInfo": {"id": 1889580334985953281, "addr": "ss", "ext1": "{}", "ext2": "{}", "name": "松罗", "kyzId": 1889579208173600769, "remark": "nulla deserunt minim tempor", "location": "119.61157136502725,27.179696949640462"}, "siteInfo": {"id": 1889579608918376450, "addr": "是多少", "ext1": "{}", "ext2": "{}", "name": "万达公交站", "areaId": 1889580334985953281, "remark": "ut nulla sint", "location": "119.70444636953097,27.142621940313745"}}
 
+                        Map<Long, Object> startSites = new HashMap<>();
+                        Map<Long, Object> endSites = new HashMap<>();
 
-        return baseMapper.updateById(update) > 0;
+
+
+                        for (TblDzbcOrderVo tblDzbcOrderVo : list) {
+                            Map<String,Object> startsite = new HashMap<>();
+                            JSONObject siteJson = JSONUtil.parseObj(tblDzbcOrderVo.getStartInfo()).getJSONObject("siteInfo");
+                            try {
+                                if(startSites.get(siteJson.getLong("id"))!=null){
+                                    startsite = (Map<String, Object>) startSites.get(siteJson.getLong("id"));
+                                }
+                            } catch (Exception e) {
+                            }
+                            startsite.put("siteInfo",siteJson);
+                            startsite.put(StringUtils.format("order-{}", tblDzbcOrderVo.getId().toString()),tblDzbcOrderVo.getExt1());
+                            startSites.put(siteJson.getLong("id"),startsite);
+
+
+
+                            Map<String,Object> endsite = new HashMap<>();
+                            JSONObject siteJson1 = JSONUtil.parseObj(tblDzbcOrderVo.getEndInfo()).getJSONObject("siteInfo");
+                            try {
+                                if(endSites.get(siteJson1.getLong("id"))!=null){
+                                    endsite = (Map<String, Object>) endSites.get(siteJson1.getLong("id"));
+                                }
+                            } catch (Exception e) {
+                            }
+                            endsite.put("siteInfo",siteJson1);
+                            endsite.put(StringUtils.format("order-{}", tblDzbcOrderVo.getId().toString()),tblDzbcOrderVo.getExt1());
+                            endSites.put(siteJson1.getLong("id"),endsite);
+                        }
+                        //跟新路线
+                        TblDzbcPathScheduling sbo1 = new TblDzbcPathScheduling();
+                        sbo1.setId(entity.getSchedulingId());
+                        sbo1.setStartSites(JSONUtil.toJsonStr(startSites));
+                        sbo1.setEndSites(JSONUtil.toJsonStr(endSites));
+                        pathSchedulingMapper.updateById(sbo1);
+
+                    }
+
+
+
+                }
+            });
+
+
+        }
+
+
+        return  c> 0;
     }
 
 

+ 4 - 0
ruoyi-modules/ruoyi-dzbc/src/main/java/org/dromara/system/service/impl/TblDzbcPathSchedulingServiceImpl.java

@@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.redis.utils.CacheUtils;
 import org.dromara.common.redis.utils.RedisUtils;
+import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.system.domain.TblDzbcPath;
 import org.dromara.system.domain.vo.TblDzbcCarVo;
 import org.dromara.system.domain.vo.TblDzbcPathVo;
@@ -87,6 +88,9 @@ public class TblDzbcPathSchedulingServiceImpl implements ITblDzbcPathSchedulingS
             if(params.containsKey("mdate")){
                 lqw.ge(params.get("mdate")!=null, TblDzbcPathScheduling::getMdate, (params.get("mdate").toString()));
             }
+            if(params.containsKey("carId")){
+                lqw.apply(StringUtils.format(" ext1->'$.carInfo.id' = {}", params.get("carId").toString()));
+            }
         }
         return lqw;
     }