From 4676c4f9c32298ce07af841a899394e6374a9964 Mon Sep 17 00:00:00 2001
From: wzp <2040239371@qq.com>
Date: 星期六, 03 五月 2025 11:32:58 +0800
Subject: [PATCH] feat: 新增详情页

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/IDispatchOrdService.java          |   18 +
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/OrderCancelVo.java     |   43 ++
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbOrders.java                      |    9 
 ruoyi-ui/src/api/system/orders.js                                                     |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysClientApp.java                  |   15 +
 ruoyi-system/src/main/resources/mapper/system/SysClientAppMapper.xml                  |    6 
 ruoyi-system/src/main/resources/mapper/system/ServiceOrderMapper.xml                  |    4 
 ruoyi-ui/src/views/system/order/detail.vue                                            |   22 
 ruoyi-system/src/main/resources/mapper/system/TbOrdersMapper.xml                      |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/DispatchOrd.java                   |  266 +++++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/DispatchOrdMapper.java             |   18 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DispatchOrdServiceImpl.java  |   32 ++
 ruoyi-ui/src/views/system/orders/index.vue                                            |   59 ++-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java     |  123 +++++++
 ruoyi-system/src/main/java/com/ruoyi/system/domain/ServiceOrder.java                  |   16 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ServiceOrderServiceImpl.java |    5 
 ruoyi-system/src/main/resources/mapper/system/DispatchOrdMapper.xml                   |   37 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java |  175 +++++++++++
 18 files changed, 821 insertions(+), 42 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java
index 901c977..8c5394c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java
@@ -3,12 +3,20 @@
 import java.util.List;
 import java.util.Objects;
 import java.text.SimpleDateFormat;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.math.BigDecimal;
 
 import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.annotation.DataSource;
 import com.ruoyi.common.constant.HttpStatus;
 
 import com.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.system.domain.DispatchOrd;
+import com.ruoyi.system.domain.TbOrders;
+import com.ruoyi.system.service.IDispatchOrdService;
+import com.ruoyi.system.service.ITbOrdersService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -39,10 +47,16 @@
  */
 @RestController
 @RequestMapping("/system/order")
-@DataSource(DataSourceType.SQLSERVER)
+//@DataSource(DataSourceType.SQLSERVER)
 public class ServiceOrderController extends BaseController {
     @Autowired
     private IServiceOrderService serviceOrderService;
+
+    @Autowired
+    private ITbOrdersService tbOrdersService;
+
+    @Autowired
+    private IDispatchOrdService dispatchOrdService;
 
     /**
      * 鑾峰彇鏈嶅姟璁㈠崟鍒楄〃
@@ -75,12 +89,163 @@
     /**
      * 鏍规嵁鏈嶅姟璁㈠崟缂栧彿鑾峰彇璇︾粏淇℃伅
      */
-    @PreAuthorize("@ss.hasPermi('system:order:query')")
+
+    @Anonymous
     @GetMapping(value = "/{serviceOrdId}")
     public AjaxResult getInfo(@PathVariable Long serviceOrdId) {
-        return success(serviceOrderService.selectServiceOrderById(serviceOrdId));
+        TbOrders orderDetail = tbOrdersService.selectTbOrdersByOrderID(serviceOrdId);
+
+        //鏌ヨ鏈嶅姟鍗�
+        ServiceOrder mingServiceOrder = serviceOrderService.selectServiceOrderById(Long.valueOf(orderDetail.getServiceOrdID()));
+        DispatchOrd dispatchOrd = dispatchOrdService.selectDispatchOrdByServiceOrdIDDt(mingServiceOrder.getServiceOrdId().toString());
+
+        
+        Map<String, Object> data = new HashMap<>();
+        
+        // 鏋勫缓璁㈠崟鍩烘湰淇℃伅
+        Map<String, Object> orderInfo = new HashMap<>();
+        orderInfo.put("OrderID", orderDetail.getOrderID());
+        
+        // 鏍煎紡鍖栨椂闂�
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        
+        // 鏍煎紡鍖栧垱寤烘椂闂�
+        String formattedCreateTime = orderDetail.getCreateTime() != null ? 
+            dateFormat.format(orderDetail.getCreateTime()) : "";
+        orderInfo.put("orderTime", formattedCreateTime);
+        
+        // 鏍煎紡鍖栭绾︽椂闂�
+        String formattedBookingTime = orderDetail.getBookingDate() != null ? 
+            dateFormat.format(orderDetail.getBookingDate()) : "";
+        orderInfo.put("appointmentTime", formattedBookingTime);
+
+
+
+
+        if(dispatchOrd!=null) {
+            //瑕佹煡璇㈣皟搴﹀崟
+            // 鏍煎紡鍖栬皟搴︽椂闂�
+            String formattedDispatchTime = dispatchOrd.getDispatchOrdStartDate() != null ?
+                    dateFormat.format(dispatchOrd.getDispatchOrdStartDate()) : "";
+            orderInfo.put("dispatchTime", formattedDispatchTime);
+        }
+        
+        // 璁㈠崟鐘舵�佽浆鎹㈤�昏緫
+        String orderStatus;
+        if (mingServiceOrder.getServiceOrdState() == 4) {
+            orderStatus = "宸插彇娑�";
+        } else if (mingServiceOrder.getServiceOrdState() == 3) {
+            orderStatus = "宸茶皟搴�";
+        } else if (mingServiceOrder.getServiceOrdTraTxnPrice().compareTo(BigDecimal.ZERO) > 0 
+                && mingServiceOrder.getServiceOrdState() <= 1) {
+            orderStatus = "鍜ㄨ鍗�";
+        } else if (mingServiceOrder.getServiceOrdTraTxnPrice().compareTo(BigDecimal.ZERO) > 0 
+                && mingServiceOrder.getServiceOrdState() != 4) {
+            orderStatus = "宸叉姤浠�";
+        } else {
+            orderStatus = "鍜ㄨ鍗�";
+        }
+        
+        orderInfo.put("orderStatus", orderStatus);
+        orderInfo.put("orderSource","骞夸氦闆嗗洟");
+        orderInfo.put("externalNo",orderDetail.getServiceOrdNo());
+
+        if(orderStatus.contains("璋冨害")){
+            orderInfo.put("documentStatus", "璋冨害鍗�");
+        }
+        else{
+            orderInfo.put("documentStatus", "鍜ㄨ鍗�");
+        }
+
+        orderInfo.put("price",mingServiceOrder.getServiceOrdTraTxnPrice());//浠锋牸
+        
+        // 鏋勫缓鎮h�呬俊鎭�
+        Map<String, Object> patientInfo = new HashMap<>();
+        patientInfo.put("contactName", orderDetail.getLinkPerson());
+        patientInfo.put("contactPhone", orderDetail.getLinkTel());
+        patientInfo.put("patientName", orderDetail.getPatientName());
+        patientInfo.put("patientAge", orderDetail.getAge());
+        // 鎬у埆杞崲锛�1鏄敺锛屽叾浠栨槸濂�
+        patientInfo.put("patientGender", "1".equals(orderDetail.getSex()) ? "鐢�" : "濂�");
+        patientInfo.put("patientWeight", orderDetail.getKg());
+        
+        // 鏋勫缓鏈嶅姟淇℃伅
+        Map<String, Object> serviceInfo = new HashMap<>();
+        serviceInfo.put("startAddress", orderDetail.getLocalAddress());
+        serviceInfo.put("startLocation", orderDetail.getLocalLongitude() + "," + orderDetail.getLocalLatitude());
+        serviceInfo.put("endAddress", orderDetail.getSendAddress());
+        serviceInfo.put("endLocation", orderDetail.getSendLongitude() + "," + orderDetail.getSendLatitude());
+        serviceInfo.put("distance", orderDetail.getBookingKM());
+        serviceInfo.put("liftService", orderDetail.getLiftingCode());
+        serviceInfo.put("liftFloor", orderDetail.getLiftingFloor());
+
+
+        //鏋勫缓璋冨害淇℃伅
+        Map<String, Object> dispatchInfo = new HashMap<>();
+        if(dispatchOrd!=null){
+            String dispatchOAEntourage = dispatchOrd.getDispatchOrd_OAEntourage();
+            String dispatchOAName = dispatchOrd.getDispatchOrd_OAName();
+            
+            if (dispatchOAEntourage != null && dispatchOAName != null) {
+                String[] entourages = dispatchOAEntourage.split(",");
+                String[] names = dispatchOAName.split(",");
+                
+                // 鐢ㄤ簬瀛樺偍涓嶅悓瑙掕壊鐨勪汉鍛�
+                Map<String, StringBuilder> roleMap = new HashMap<>();
+                roleMap.put("driver", new StringBuilder());
+                roleMap.put("doctor", new StringBuilder());
+                roleMap.put("nurse", new StringBuilder());
+                
+                // 閬嶅巻鎵惧嚭瀵瑰簲瑙掕壊鐨勪汉鍛�
+                for (int i = 0; i < Math.min(entourages.length, names.length); i++) {
+                    String role = entourages[i].trim();
+                    String name = names[i].trim();
+                    
+                    switch(role) {
+                        case "鍙告満":
+                            appendName(roleMap.get("driver"), name);
+                            break;
+                        case "鍖荤敓":
+                            appendName(roleMap.get("doctor"), name);
+                            break;
+                        case "鎶ゅ+":
+                            appendName(roleMap.get("nurse"), name);
+                            break;
+                    }
+                }
+                
+                // 灏嗘敹闆嗗埌鐨勪汉鍛樹俊鎭斁鍏ispatchInfo
+                dispatchInfo.put("driver", roleMap.get("driver").toString());
+                dispatchInfo.put("doctor", roleMap.get("doctor").toString());
+                dispatchInfo.put("nurse", roleMap.get("nurse").toString());
+
+                //璋冨害鏃堕棿
+                String formattedDispatchTime = dispatchOrd.getDispatchOrdStartDate() != null ?
+                    dateFormat.format(dispatchOrd.getDispatchOrdStartDate()) : "";
+                dispatchInfo.put("dispatchTime", formattedDispatchTime);
+
+                dispatchInfo.put("dispatchStatus","宸茶皟搴�");
+            }
+        }
+
+        data.put("orderInfo", orderInfo);
+        data.put("patientInfo", patientInfo);
+        data.put("serviceInfo", serviceInfo);
+        data.put("medicalInfo", new HashMap<>()); // 鏆傛椂涓虹┖
+        data.put("dispatchInfo", dispatchInfo);  // 鏇存柊涓哄寘鍚汉鍛樹俊鎭殑dispatchInfo
+        data.put("paymentInfo", new ArrayList<>()); // 鏆傛椂涓虹┖
+        data.put("operationInfo", new ArrayList<>()); // 鏆傛椂涓虹┖
+        
+        return AjaxResult.success(data);
     }
 
+    // 娣诲姞杈呭姪鏂规硶鏉ュ鐞嗗悕瀛楃殑鎷兼帴
+    private void appendName(StringBuilder sb, String name) {
+        if (sb.length() > 0) {
+            sb.append(",");
+        }
+        sb.append(name);
+    }
 
     /*
     鏂板璁㈠崟
@@ -111,4 +276,8 @@
     public AjaxResult remove(@PathVariable Long[] serviceOrdIds) {
         return toAjax(serviceOrderService.deleteServiceOrderByIds(serviceOrdIds));
     }
+
+
+
+
 } 
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java
index 192cb71..96ff5a2 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java
@@ -9,7 +9,10 @@
 import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.core.domain.entity.ServiceOrderAppResultVo;
 import com.ruoyi.common.core.domain.entity.ServiceOrderAppVo;
+import com.ruoyi.common.core.domain.entity.ServiceOrderDelVo;
 import com.ruoyi.common.utils.civilAviation.ServiceOrderUtil;
+import com.ruoyi.system.domain.SysClientApp;
+import com.ruoyi.system.service.ISysClientAppService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -29,6 +32,7 @@
 import com.ruoyi.system.service.ITbOrdersService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.entity.OrderCancelVo;
 
 /**
  * ordersController
@@ -42,6 +46,9 @@
 {
     @Autowired
     private ITbOrdersService tbOrdersService;
+
+    @Autowired
+    private ISysClientAppService clientAppService;
 
     /**
      * 鏌ヨorders鍒楄〃
@@ -95,15 +102,14 @@
 
             tbOrders.setCreateTime(new Date());
 
-            int insertNum = tbOrdersService.insertTbOrders(tbOrders);
-            if(insertNum<1)
-            {
-                return AjaxResult.error("涓婁紶澶辫触锛�");
-            }
+            tbOrdersService.insertTbOrders(tbOrders);
+
+            SysClientApp scApp = clientAppService.selectSysClientAppByAppId(1L);
+
 
             ServiceOrderAppVo model = new ServiceOrderAppVo();
             model.setMethod("ServiceOrder_APP"); // 璁剧疆鎺ュ彛鍚嶇О
-            model.setAppId("GDS-000001"); // 璁剧疆鍟嗘埛 APPID
+            model.setAppId(scApp.getMinAppId()); // 璁剧疆鍟嗘埛 APPID
             model.setOrdType(tbOrders.getTypeCode().intValue());
             model.setCoPhone(tbOrders.getLinkTel()); // 瀹㈡埛鑱旂郴鐢佃瘽
             model.setCoName(tbOrders.getLinkPerson()); // 瀹㈡埛濮撳悕
@@ -132,15 +138,120 @@
             ServiceOrderAppResultVo result = ServiceOrderUtil.CreateServiceOrder(model);
 
             if (result.getResult() == 1) {
+                tbOrders.setOrderID(tbOrders.getOrderID());
+                tbOrders.setServiceOrdID(result.getServiceOrdID());
+                tbOrders.setServiceOrdNo(result.getServiceOrdNo());
+                tbOrders.setThirdPartyResult(result.getResult());
+                tbOrders.setUpdateTime(new Date());
+                tbOrders.setOrderStatus(1);
+                tbOrdersService.updateTbOrders(tbOrders);
                 return AjaxResult.success(result);
             } else {
                 return AjaxResult.error("鎻愪氦澶辫触");
             }
         } catch (Exception e) {
+            return AjaxResult.error("鎻愪氦澶辫触:"+e.getMessage());
+        }
+    }
+
+    /**
+     * 閲嶆柊鍙戦�佽鍗�
+     */
+    @PostMapping("/resend/{orderId}")
+    public AjaxResult resendOrder(@PathVariable Long orderId) {
+
+        TbOrders tbOrders = tbOrdersService.selectTbOrdersByOrderID(orderId);
+        if (tbOrders == null) {
+            return AjaxResult.error("璁㈠崟涓嶅瓨鍦�");
+        }
+        if (tbOrders.getOrderStatus() == 2) {
+            return AjaxResult.error("璁㈠崟鐘舵�佸凡鍙栨秷");
+        }
+
+        SysClientApp scApp = clientAppService.selectSysClientAppByAppId(1L);
+
+
+        ServiceOrderAppVo model = new ServiceOrderAppVo();
+        model.setMethod("ServiceOrder_APP"); // 璁剧疆鎺ュ彛鍚嶇О
+        model.setAppId(scApp.getMinAppId()); // 璁剧疆鍟嗘埛 APPID
+        model.setOrdType(tbOrders.getTypeCode().intValue());
+        model.setCoPhone(tbOrders.getLinkTel()); // 瀹㈡埛鑱旂郴鐢佃瘽
+        model.setCoName(tbOrders.getLinkPerson()); // 瀹㈡埛濮撳悕
+//        model.setCoTies("瀹跺睘"); // 闅忔満璁剧疆瀹㈡埛鑱旂郴浜轰笌鎮h�呭叧绯�
+        // 璁剧疆棰勭害鏃堕棿涓轰竴澶╁悗
+        Calendar calendar = Calendar.getInstance();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd%20HH:mm");
+        model.setApptDate(sdf.format(tbOrders.getBookingDate())); // 鏍煎紡鍖栭绾﹁繍閫佹椂闂�
+
+        model.setPtName(tbOrders.getPatientName()); // 鎮h�呭鍚�
+        model.setPtAge(tbOrders.getAge()); // 闅忔満鐢熸垚鎮h�呭勾榫�
+        model.setPtSex(tbOrders.getSex() == 1 ? "鐢�" : "濂�"); // 闅忔満鐢熸垚鎮h�呮�у埆
+//        model.setPtNat("涓浗"); // 璁剧疆鎮h�呭浗绫�
+        model.setOutHosp(tbOrders.getLocalAddress()); // 璁剧疆杞嚭鍖婚櫌
+        model.setInHosp(tbOrders.getSendAddress()); // 璁剧疆杞叆鍖婚櫌
+//        model.setPtServices("绉戝" + (int) (Math.random() * 10)); // 闅忔満璁剧疆鎮h�呮墍鍦ㄧ瀹�
+        model.setPtDiagnosis(tbOrders.getComplaint()); // 璁剧疆璇婃柇淇℃伅
+        model.setCondition(tbOrders.getRemark()); // 璁剧疆澶囨敞淇℃伅
+//        model.setDoctor("鍖荤敓" + (int) (Math.random() * 10)); // 闅忔満璁剧疆鎮h�呭尰鐢�
+//        model.setDoctorPhone("13" + (int) (Math.random() * 900000000 + 100000000)); // 闅忔満鐢熸垚鎮h�呭尰鐢熺數璇�
+        model.setOfferPrice(tbOrders.getBookingPrice().doubleValue()); // 闅忔満鐢熸垚鎶ヤ环
+//        model.setReferrals("鎺ㄤ粙浜�" + (int) (Math.random() * 10)); // 闅忔満璁剧疆鎺ㄤ粙浜轰俊鎭�
+//        model.setUnitRemarks("鍟嗘埛闅忔満澶囨敞淇℃伅"); // 闅忔満璁剧疆鍟嗘埛澶囨敞
+//        model.setPayQRcodeURL("https://example.com/qrcode/" + (int) (Math.random() * 100)); // 闅忔満鐢熸垚澶栭儴鏀粯浜岀淮鐮侀摼鎺�
+
+        ServiceOrderAppResultVo result = ServiceOrderUtil.CreateServiceOrder(model);
+
+        if (result.getResult() == 1) {
+            tbOrders.setOrderID(tbOrders.getOrderID());
+            tbOrders.setServiceOrdID(result.getServiceOrdID());
+            tbOrders.setServiceOrdNo(result.getServiceOrdNo());
+            tbOrders.setThirdPartyResult(result.getResult());
+            tbOrders.setUpdateTime(new Date());
+            tbOrders.setOrderStatus(1);
+            tbOrdersService.updateTbOrders(tbOrders);
+            return AjaxResult.success(result);
+        } else {
             return AjaxResult.error("鎻愪氦澶辫触");
         }
     }
 
+
+
+    @Anonymous
+    @PostMapping("/cancelOrder")
+    public AjaxResult cancelOrder(@RequestBody OrderCancelVo cancelVo)
+    {
+        try {
+            if (cancelVo == null || cancelVo.getOrderID() == null || 
+                cancelVo.getThirdOrderNo() == null || cancelVo.getReason() == null) {
+                return AjaxResult.error("蹇呰鍙傛暟涓嶈兘涓虹┖锛�");
+            }
+
+            SysClientApp scApp = clientAppService.selectSysClientAppByAppId(1L);
+
+            ServiceOrderDelVo model = new ServiceOrderDelVo();
+            model.setMethod("ServiceOrder_DEL"); // 璁剧疆鎺ュ彛鍚嶇О
+            model.setAPPID(scApp.getMinAppId()); // 璁剧疆鍟嗘埛 APPID
+            model.setServiceOrdID(cancelVo.getThirdOrderNo()); // 璁剧疆绗笁鏂硅鍗曞彿
+            model.setDELRemarks(cancelVo.getReason()); // 璁剧疆鍙栨秷鍘熷洜
+
+            ServiceOrderAppResultVo result = ServiceOrderUtil.CancelServiceOrder(model);
+
+            if (result.getResult() == 1) {
+                // 鏇存柊鏈湴璁㈠崟鐘舵��
+                TbOrders tbOrders = new TbOrders();
+                tbOrders.setOrderID(cancelVo.getOrderID());
+                tbOrders.setOrderStatus(2); // 2鏄彇娑�
+                tbOrdersService.updateTbOrders(tbOrders);
+                return AjaxResult.success(result);
+            } else {
+                return AjaxResult.error("鍙栨秷璁㈠崟澶辫触");
+            }
+        } catch (Exception e) {
+            return AjaxResult.error("鍙栨秷璁㈠崟澶辫触:" + e.getMessage());
+        }
+    }
+
     /**
      * 淇敼orders
      */
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/OrderCancelVo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/OrderCancelVo.java
new file mode 100644
index 0000000..b4eb5e3
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/OrderCancelVo.java
@@ -0,0 +1,43 @@
+package com.ruoyi.common.core.domain.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * 璁㈠崟鍙栨秷鍙傛暟VO
+ */
+public class OrderCancelVo {
+
+    @JsonProperty("OrderID")
+    private Long OrderID;
+
+    @JsonProperty("ThirdOrderNo")
+
+    private String ThirdOrderNo;
+
+    @JsonProperty("Reason")
+    private String Reason;
+
+    public Long getOrderID() {
+        return OrderID;
+    }
+
+    public void setOrderID(Long orderID) {
+        OrderID = orderID;
+    }
+
+    public String getThirdOrderNo() {
+        return ThirdOrderNo;
+    }
+
+    public void setThirdOrderNo(String thirdOrderNo) {
+        ThirdOrderNo = thirdOrderNo;
+    }
+
+    public String getReason() {
+        return Reason;
+    }
+
+    public void setReason(String reason) {
+        Reason = reason;
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DispatchOrd.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DispatchOrd.java
new file mode 100644
index 0000000..24c0441
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DispatchOrd.java
@@ -0,0 +1,266 @@
+package com.ruoyi.system.domain;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 璋冨害璁㈠崟瀵硅薄 DispatchOrd
+ *
+ * @author ruoyi
+ */
+@Data
+public class DispatchOrd extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** 璋冨害璁㈠崟ID */
+    private String dispatchOrdID;
+    
+    /** 璋冨害璁㈠崟绫诲埆 */
+    private String dispatchOrdClass;
+    
+    /** 鏈嶅姟璁㈠崟ID */
+    private String serviceOrdIDDt;
+    
+    /** 璋冨害璁㈠崟鐘舵�� */
+    private String dispatchOrdState;
+    
+    /** 鐘舵�佹爣璇� */
+    private Integer stateInt;
+    
+    /** 璋冨害寮�濮嬫棩鏈� */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrdStartDate;
+    
+    /** 璋冨害杩愯緭鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrdTraSDTime;
+    
+    /** 鎶ゅ+ID */
+    private String dispatchOrd_NS_ID;
+    
+    /** 鎶ゅ+鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrd_NS_Time;
+    
+    /** 瀹℃壒浜篒D */
+    private String dispatchOrd_AP_ID;
+    
+    /** 瀹℃壒鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrd_AP_Time;
+    
+    /** 浜屾瀹℃壒浜篒D */
+    private String dispatchOrd_AP2_ID;
+    
+    /** 浜屾瀹℃壒鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrd_AP2_Time;
+    
+    /** 瀹℃壒妫�鏌� */
+    private String dispatchOrd_AP_Check;
+    
+    /** 瀹℃壒鍘熷洜 */
+    private String dispatchOrd_AP_Reason;
+    
+    /** 瀹為檯鏃ユ湡 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrdActualDate;
+    
+    /** 鍒拌揪鏃ユ湡 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrdArriveDate;
+    
+    /** 杩斿洖鏃ユ湡 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrdReturnDate;
+    
+    /** 杩愯緭璺濈 */
+    private BigDecimal dispatchOrdTraDistance;
+    
+    /** 杞﹁締ID */
+    private String dispatchOrdCarID;
+    
+    /** 杩愯緭璧风偣 */
+    private String dispatchOrdTraStreet;
+    
+    /** 杩愯緭缁堢偣 */
+    private String dispatchOrdTraEnd;
+    
+    /** 杩愯緭閫旂粡鐐� */
+    private String dispatchOrdTraVia;
+    
+    /** 鍏徃鍚嶇О */
+    private String dispatchOrdCoName;
+    
+    /** 鍏徃鐢佃瘽 */
+    private String dispatchOrdCoPhone;
+    
+    /** 璧风偣閲岀▼ */
+    private BigDecimal dispatchOrdTraStreetMileage;
+    
+    /** 缁堢偣閲岀▼ */
+    private BigDecimal dispatchOrdTraEndMileage;
+    
+    /** 鎬婚噷绋� */
+    private BigDecimal dispatchOrdMileage;
+    
+    /** 姹芥补閲� */
+    private BigDecimal dispatchOrdGasoline;
+    
+    /** 澶囨敞 */
+    private String dispatchOrdRemarks;
+    
+    /** 缁撴灉 */
+    private String dispatchOrdResult;
+    
+    /** 璺ˉ璐� */
+    private BigDecimal dispatchOrdLuqiaoFee;
+    
+    /** 姹芥补璐� */
+    private BigDecimal dispatchOrdGasolineFee;
+    
+    /** 宸梾璐� */
+    private BigDecimal dispatchOrdTravelFee;
+    
+    /** 鍏朵粬璐圭敤 */
+    private BigDecimal dispatchOrdOtherFee;
+    
+    /** 鍏朵粬璐圭敤璇存槑 */
+    private String dispatchOrdOtherFee_TXT;
+    
+    /** 姘ф皵 */
+    private String dispatchOrdOxygen;
+    
+    /** 鑰楁潗 */
+    private String dispatchOrdConsumables;
+    
+    /** 鑽搧 */
+    private String dispatchOrdDrugs;
+    
+    /** 鏄惁缁撴潫 */
+    private String dispatchOrdIsEnd;
+    
+    /** 缁撴潫鏃ユ湡 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrdIsEndDate;
+    
+    /** 闄悓浜哄憳1 */
+    private String entourageName_aid1;
+    
+    /** 闄悓浜哄憳2 */
+    private String entourageName_aid2;
+    
+    /** 璋冨害鍗曞彿 */
+    private String dispatchOrdNo;
+    
+    /** 璋冨害缁╂晥 */
+    private String dispatchOrdPerfomance;
+    
+    /** 鍙栨秷鍘熷洜 */
+    private String dispatchOrdCancelReason;
+    
+    /** 鍙栨秷鍘熷洜璇存槑 */
+    private String dispatchOrdCancelReasonTXT;
+    
+    /** 寰俊鏃ユ湡 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrdWeixinDate;
+    
+    /** 鎺ㄨ崘杞﹁締 */
+    private String recommendedCar;
+    
+    /** 杞﹁締鐘舵�侀」 */
+    private String carStItm;
+    
+    /** 杞﹁締鐘舵�佹搷浣滃憳ID */
+    private String carStItm_OAId;
+    
+    /** 杞﹁締鐘舵�佹椂闂� */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date carStItm_Time;
+    
+    /** 瀹夊叏甯︽搷浣滃憳ID */
+    private String carSeatBelt_OAId;
+    
+    /** 鎷呮灦璐� */
+    private BigDecimal stretcherMoney;
+    
+    /** 鍥剧墖URL */
+    private String dispatchOrdPicUrl;
+    
+    /** 绋嬪簭鏃堕暱 */
+    private Integer timeLength_Program;
+    
+    /** ICU鏃堕暱 */
+    private Integer timeLength_ICU;
+    
+    /** 绛夊緟鏃堕暱 */
+    private Integer timeLength_Wait;
+    
+    /** 璋冨害鍖荤敓 */
+    private String dispatchDoctor;
+    
+    /** 璋冨害鎶ゅ+ */
+    private String dispatchNurse;
+    
+    /** 璋冨害鍙告満 */
+    private String dispatchDriver;
+    
+    /** 璋冨害浠诲姟澶囨敞 */
+    private String dispatchOrdTaskRemarks;
+    
+    /** 璋冨害鎿嶄綔鍛樺悕绉� */
+    private String dispatchOrd_OAName;
+    
+    /** 璋冨害鎿嶄綔鍛橀櫔鍚� */
+    private String dispatchOrd_OAEntourage;
+    
+    /** 鏇存柊鎿嶄綔鍛業D */
+    private String dispatchOrdUpdateOAid;
+    
+    /** 鏇存柊鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrdUpdateTime;
+    
+    /** 鍦ㄧ嚎鎿嶄綔鍛樺悕绉� */
+    private String dispatchOrdOnlineOAName;
+    
+    /** 璋冨害鍛樺伐缁� */
+    private String dispatchEmployeeGroup;
+    
+    /** 璐㈠姟ID */
+    private String dispatchOrd_FA_ID;
+    
+    /** 璐㈠姟鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchOrd_FA_Time;
+    
+    /** 璐㈠姟妫�鏌� */
+    private String dispatchOrd_FA_Check;
+    
+    /** 璐㈠姟鍘熷洜 */
+    private String dispatchOrd_FA_Reason;
+    
+    /** 鏄惁娑堟瘨 */
+    private String isSterilize;
+    
+    /** 娑堟瘨鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date isSterilize_Time;
+    
+    /** 鏄惁閿佸畾 */
+    private String isLocking;
+    
+    /** 閿佸畾鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date isLocking_Time;
+    
+    /** 娑堟瘨鎿嶄綔鍛業D */
+    private String isSterilize_OAID;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/ServiceOrder.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ServiceOrder.java
index 1310953..29dffbd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/ServiceOrder.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ServiceOrder.java
@@ -117,6 +117,14 @@
     @Excel(name = "澶囨敞")
     private String serviceOrdUnitRemarks;
 
+
+    /** 璋冨害鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "璋冨害鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date serviceOrdCCTime;
+
+
+
     /** 鍒嗛〉鍙傛暟 */
     private Integer pageNum;
     private Integer pageSize;
@@ -338,6 +346,14 @@
         this.pageSize = pageSize;
     }
 
+    public Date getServiceOrdCCTime() {
+        return serviceOrdCCTime;
+    }
+
+    public void setServiceOrdCCTime(Date serviceOrdCCTime) {
+        this.serviceOrdCCTime = serviceOrdCCTime;
+    }   
+
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysClientApp.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysClientApp.java
index f06d5a6..0230ec5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysClientApp.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysClientApp.java
@@ -46,6 +46,13 @@
     /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */
     private String delFlag;
 
+
+    /** min_app_id */
+    @Excel(name = "min_app_id")
+    private String minAppId;
+
+
+
     public Long getAppId() {
         return appId;
     }
@@ -110,6 +117,14 @@
         this.delFlag = delFlag;
     }
 
+    public String getMinAppId() {
+        return minAppId;
+    }
+
+    public void setMinAppId(String minAppId) {
+        this.minAppId = minAppId;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbOrders.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbOrders.java
index de81e9e..2b3c4f9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbOrders.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbOrders.java
@@ -202,6 +202,11 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date UpdateTime;
 
+    /** 璁㈠崟鐘舵�� */
+    @Excel(name = "璁㈠崟鐘舵��")
+    @JsonProperty("OrderStatus")
+    private Integer OrderStatus;
+
     public void setOrderID(Long OrderID) 
     {
         this.OrderID = OrderID;
@@ -378,6 +383,10 @@
 
     public void setUpdateTime(Date UpdateTime){this.UpdateTime =UpdateTime;}
 
+    public void setOrderStatus(Integer OrderStatus){this.OrderStatus =OrderStatus;}
+
+    public Integer getOrderStatus(){return this.OrderStatus;}
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DispatchOrdMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DispatchOrdMapper.java
new file mode 100644
index 0000000..4dff173
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DispatchOrdMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.DispatchOrd;
+
+/**
+ * 璋冨害璁㈠崟Mapper鎺ュ彛
+ * 
+ * @author ruoyi
+ */
+public interface DispatchOrdMapper {
+    /**
+     * 鏍规嵁鏈嶅姟璁㈠崟ID鏌ヨ璋冨害璁㈠崟
+     * 
+     * @param serviceOrdIDDt 鏈嶅姟璁㈠崟ID
+     * @return 璋冨害璁㈠崟淇℃伅
+     */
+    public DispatchOrd selectDispatchOrdByServiceOrdIDDt(String serviceOrdIDDt);
+} 
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDispatchOrdService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDispatchOrdService.java
new file mode 100644
index 0000000..a6f54df
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDispatchOrdService.java
@@ -0,0 +1,18 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.DispatchOrd;
+
+/**
+ * 璋冨害璁㈠崟Service鎺ュ彛
+ * 
+ * @author ruoyi
+ */
+public interface IDispatchOrdService {
+    /**
+     * 鏍规嵁鏈嶅姟璁㈠崟ID鏌ヨ璋冨害璁㈠崟
+     * 
+     * @param serviceOrdIDDt 鏈嶅姟璁㈠崟ID
+     * @return 璋冨害璁㈠崟淇℃伅
+     */
+    public DispatchOrd selectDispatchOrdByServiceOrdIDDt(String serviceOrdIDDt);
+} 
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DispatchOrdServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DispatchOrdServiceImpl.java
new file mode 100644
index 0000000..f6529d4
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DispatchOrdServiceImpl.java
@@ -0,0 +1,32 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.DispatchOrdMapper;
+import com.ruoyi.system.domain.DispatchOrd;
+import com.ruoyi.system.service.IDispatchOrdService;
+
+/**
+ * 璋冨害璁㈠崟Service涓氬姟灞傚鐞�
+ * 
+ * @author ruoyi
+ */
+@DataSource(DataSourceType.SQLSERVER)
+@Service
+public class DispatchOrdServiceImpl implements IDispatchOrdService {
+    @Autowired
+    private DispatchOrdMapper dispatchOrdMapper;
+
+    /**
+     * 鏍规嵁鏈嶅姟璁㈠崟ID鏌ヨ璋冨害璁㈠崟
+     * 
+     * @param serviceOrdIDDt 鏈嶅姟璁㈠崟ID
+     * @return 璋冨害璁㈠崟淇℃伅
+     */
+    @Override
+    public DispatchOrd selectDispatchOrdByServiceOrdIDDt(String serviceOrdIDDt) {
+        return dispatchOrdMapper.selectDispatchOrdByServiceOrdIDDt(serviceOrdIDDt);
+    }
+} 
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ServiceOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ServiceOrderServiceImpl.java
index 5e8f22c..ec075dc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ServiceOrderServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ServiceOrderServiceImpl.java
@@ -1,6 +1,9 @@
 package com.ruoyi.system.service.impl;
 
 import java.util.List;
+
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.system.mapper.ServiceOrderMapper;
@@ -13,6 +16,8 @@
  * 
  * @author ruoyi
  */
+
+@DataSource(DataSourceType.SQLSERVER)
 @Service
 public class ServiceOrderServiceImpl implements IServiceOrderService {
     @Autowired
diff --git a/ruoyi-system/src/main/resources/mapper/system/DispatchOrdMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DispatchOrdMapper.xml
new file mode 100644
index 0000000..66e906a
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/DispatchOrdMapper.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.DispatchOrdMapper">
+    
+    <resultMap type="DispatchOrd" id="DispatchOrdResult">
+        <result property="dispatchOrdID" column="DispatchOrdID"/>
+        <result property="dispatchOrdClass" column="DispatchOrdClass"/>
+        <result property="serviceOrdIDDt" column="ServiceOrdIDDt"/>
+        <result property="dispatchOrdState" column="DispatchOrdState"/>
+        <result property="stateInt" column="StateInt"/>
+        <result property="dispatchOrdStartDate" column="DispatchOrdStartDate"/>
+        <result property="dispatchOrdTraSDTime" column="DispatchOrdTraSDTime"/>
+        <result property="dispatchOrd_NS_ID" column="DispatchOrd_NS_ID"/>
+        <result property="dispatchOrd_NS_Time" column="DispatchOrd_NS_Time"/>
+        <result property="dispatchOrd_AP_ID" column="DispatchOrd_AP_ID"/>
+        <result property="dispatchOrd_AP_Time" column="DispatchOrd_AP_Time"/>
+        <result property="dispatchOrd_AP2_ID" column="DispatchOrd_AP2_ID"/>
+        <result property="dispatchOrd_AP2_Time" column="DispatchOrd_AP2_Time"/>
+        <result property="dispatchOrd_AP_Check" column="DispatchOrd_AP_Check"/>
+        <result property="dispatchOrd_OAName" column="DispatchOrd_OAName"/>
+        <result property="dispatchOrd_OAEntourage" column="DispatchOrd_OAEntourage"/>
+        
+        <!-- ... 鍏朵粬瀛楁鏄犲皠 ... -->
+    </resultMap>
+    
+    <sql id="selectDispatchOrdVo">
+        select * from DispatchOrd
+    </sql>
+    
+    <select id="selectDispatchOrdByServiceOrdIDDt" parameterType="String" resultMap="DispatchOrdResult">
+        <include refid="selectDispatchOrdVo"/>
+        where ServiceOrdIDDt = #{serviceOrdIDDt}
+    </select>
+
+</mapper> 
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/ServiceOrderMapper.xml b/ruoyi-system/src/main/resources/mapper/system/ServiceOrderMapper.xml
index 3320df2..6e1e108 100644
--- a/ruoyi-system/src/main/resources/mapper/system/ServiceOrderMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/ServiceOrderMapper.xml
@@ -30,10 +30,11 @@
         <result property="serviceOrdTraPaidType"    column="ServiceOrdTraPaidType"    />
         <result property="serviceOrdTraPaidPrice"    column="ServiceOrdTraPaidPrice"    />
         <result property="serviceOrdUnitRemarks"    column="ServiceOrdUnitRemarks"    />
+        <result property="serviceOrdCCTime"    column="ServiceOrd_CC_Time"    />
     </resultMap>
 
     <sql id="selectServiceOrderVo">
-        select ServiceOrdID, ServiceOrdUserID, ServiceOrdClass, ServiceOrdType, ServiceOrdState, ServiceOrdStartDate, ServiceOrdApptDate, ServiceOrdCoName, ServiceOrdCoPhone, ServiceOrdPtName, ServiceOrdPtAge, ServiceOrdPtSex, ServiceOrdPtKG, ServiceOrdPtNat, ServiceOrdPtIDCard, ServiceOrdTraProvince, ServiceOrdTraCity, ServiceOrdTraStreet, ServiceOrdTraEnd, ServiceOrdTraDistance, ServiceOrdTraUnitPrice, ServiceOrdTraTxnPrice, ServiceOrdTraPaidType, ServiceOrdTraPaidPrice, ServiceOrdUnitRemarks from ServiceOrder
+        select ServiceOrdID, ServiceOrdUserID, ServiceOrdClass, ServiceOrdType, ServiceOrdState, ServiceOrdStartDate, ServiceOrdApptDate, ServiceOrdCoName, ServiceOrdCoPhone, ServiceOrdPtName, ServiceOrdPtAge, ServiceOrdPtSex, ServiceOrdPtKG, ServiceOrdPtNat, ServiceOrdPtIDCard, ServiceOrdTraProvince, ServiceOrdTraCity, ServiceOrdTraStreet, ServiceOrdTraEnd, ServiceOrdTraDistance, ServiceOrdTraUnitPrice, ServiceOrdTraTxnPrice, ServiceOrdTraPaidType, ServiceOrdTraPaidPrice, ServiceOrdUnitRemarks, ServiceOrd_CC_Time from ServiceOrder
     </sql>
 
     <sql id="selectServiceOrderWhere">
@@ -50,6 +51,7 @@
             <if test="serviceOrder.serviceOrdPtAge != null  and serviceOrder.serviceOrdPtAge != ''"> and ServiceOrdPtAge = #{serviceOrder.serviceOrdPtAge}</if>
             <if test="serviceOrder.serviceOrdPtSex != null  and serviceOrder.serviceOrdPtSex != ''"> and ServiceOrdPtSex = #{serviceOrder.serviceOrdPtSex}</if>
             <if test="serviceOrder.serviceOrdPtIDCard != null  and serviceOrder.serviceOrdPtIDCard != ''"> and ServiceOrdPtIDCard = #{serviceOrder.serviceOrdPtIDCard}</if>
+            <if test="serviceOrder.serviceOrdTraTxnPrice != null  and serviceOrder.serviceOrdTraTxnPrice != ''"> and ServiceOrdTraTxnPrice = #{serviceOrder.serviceOrdTraTxnPrice}</if>
         </where>
     </sql>
 
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysClientAppMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysClientAppMapper.xml
index 951c4eb..9f761e0 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysClientAppMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysClientAppMapper.xml
@@ -18,10 +18,11 @@
         <result property="updateBy"    column="update_by"    />
         <result property="updateTime"    column="update_time"    />
         <result property="remark"    column="remark"    />
+        <result property="minAppId"    column="min_app_id"    />
     </resultMap>
 
     <sql id="selectSysClientAppVo">
-        select app_id, client_name, app_key, security_key, valid_start_time, valid_end_time, status, del_flag, create_by, create_time, update_by, update_time, remark from sys_client_app
+        select app_id, client_name, app_key, security_key, valid_start_time, valid_end_time, status, del_flag, create_by, create_time, update_by, update_time, remark, min_app_id from sys_client_app
     </sql>
 
     <select id="selectSysClientAppList" parameterType="SysClientApp" resultMap="SysClientAppResult">
@@ -60,6 +61,7 @@
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="remark != null">remark,</if>
+            <if test="minAppId != null">min_app_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="clientName != null">#{clientName},</if>
@@ -74,6 +76,7 @@
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="remark != null">#{remark},</if>
+            <if test="minAppId != null">#{minAppId},</if>
          </trim>
     </insert>
 
@@ -87,6 +90,7 @@
             <if test="validEndTime != null">valid_end_time = #{validEndTime},</if>
             <if test="status != null and status != ''">status = #{status},</if>
             <if test="remark != null">remark = #{remark},</if>
+            <if test="minAppId != null">min_app_id = #{minAppId},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             update_time = sysdate()
         </set>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TbOrdersMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbOrdersMapper.xml
index e11e5b3..d4f0640 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TbOrdersMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TbOrdersMapper.xml
@@ -42,10 +42,11 @@
         <result property="ServiceOrdNo"    column="ServiceOrdNo"    />
         <result property="CreateTime"    column="CreateTime"    />
         <result property="UpdateTime"    column="UpdateTime"    />
+        <result property="OrderStatus"    column="OrderStatus"    />
     </resultMap>
 
     <sql id="selectTbOrdersVo">
-        select OrderID, LinkPerson, LinkTel, AlarmTel, PatientName, Sex, Age, Kg, Sense, LocalAddress, LocalLongitude, LocalLatitude, LocalProvince, LocalCity, LocalDistrict, SendAddress, SendLongitude, SendLatitude, SendProvince, SendCity, SendDistrict, BookingPrice, BookingDate, Remark, Complaint, PatientCount, BookingKM, EscortCode, LiftingCode, LiftingFloor, RequirementCode, TypeCode, ThirdPartyResult, ServiceOrdID, ServiceOrdNo, CreateTime, UpdateTime from tb_orders
+        select OrderID, LinkPerson, LinkTel, AlarmTel, PatientName, Sex, Age, Kg, Sense, LocalAddress, LocalLongitude, LocalLatitude, LocalProvince, LocalCity, LocalDistrict, SendAddress, SendLongitude, SendLatitude, SendProvince, SendCity, SendDistrict, BookingPrice, BookingDate, Remark, Complaint, PatientCount, BookingKM, EscortCode, LiftingCode, LiftingFloor, RequirementCode, TypeCode, ThirdPartyResult, ServiceOrdID, ServiceOrdNo, CreateTime, UpdateTime, OrderStatus from tb_orders
     </sql>
 
     <select id="selectTbOrdersList" parameterType="TbOrders" resultMap="TbOrdersResult">
@@ -87,6 +88,7 @@
             <if test="ServiceOrdNo != null  and ServiceOrdNo != ''"> and ServiceOrdNo = #{ServiceOrdNo}</if>
             <if test="CreateTime != null "> and CreateTime = #{CreateTime}</if>
             <if test="UpdateTime != null "> and UpdateTime = #{UpdateTime}</if>
+            <if test="OrderStatus != null "> and OrderStatus = #{OrderStatus}</if>
         </where>
     </select>
     
@@ -135,6 +137,7 @@
             <if test="ServiceOrdNo != null">ServiceOrdNo,</if>
             <if test="CreateTime != null">CreateTime,</if>
             <if test="UpdateTime != null">UpdateTime,</if>
+            <if test="OrderStatus != null">OrderStatus,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="OrderID != null">#{OrderID},</if>
@@ -174,6 +177,7 @@
             <if test="ServiceOrdNo != null">#{ServiceOrdNo},</if>
             <if test="CreateTime != null">#{CreateTime},</if>
             <if test="UpdateTime != null">#{UpdateTime},</if>
+            <if test="OrderStatus != null">#{OrderStatus},</if>
          </trim>
     </insert>
 
@@ -216,6 +220,7 @@
             <if test="ServiceOrdNo != null">ServiceOrdNo = #{ServiceOrdNo},</if>
             <if test="CreateTime != null">CreateTime = #{CreateTime},</if>
             <if test="UpdateTime != null">UpdateTime = #{UpdateTime},</if>
+            <if test="OrderStatus != null">OrderStatus = #{OrderStatus},</if>
         </trim>
         where OrderID = #{OrderID}
     </update>
diff --git a/ruoyi-ui/src/api/system/orders.js b/ruoyi-ui/src/api/system/orders.js
index 99d3781..b921c62 100644
--- a/ruoyi-ui/src/api/system/orders.js
+++ b/ruoyi-ui/src/api/system/orders.js
@@ -42,3 +42,11 @@
     method: 'delete'
   })
 }
+
+// 閲嶆柊鍙戦�佽鍗�
+export function resendOrder(orderId) {
+  return request({
+    url: '/system/orders/resend/' + orderId,
+    method: 'post'
+  })
+}
diff --git a/ruoyi-ui/src/views/system/order/detail.vue b/ruoyi-ui/src/views/system/order/detail.vue
index 2dad341..d09d496 100644
--- a/ruoyi-ui/src/views/system/order/detail.vue
+++ b/ruoyi-ui/src/views/system/order/detail.vue
@@ -2,9 +2,8 @@
   <div class="app-container">
     <el-card class="box-card">
       <div slot="header" class="clearfix">
-        <span>璁㈠崟缂栧彿锛歿{ orderInfo.orderNo }}</span>
+        <span>璁㈠崟缂栧彿锛歿{ orderInfo.OrderID }}</span>
       </div>
-      
       <el-row :gutter="20">
         <!-- 璁㈠崟鍩烘湰淇℃伅 -->
         <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
@@ -82,7 +81,7 @@
               <el-descriptions-item label="鍙告満">{{ dispatchInfo.driver }}</el-descriptions-item>
               <el-descriptions-item label="杞︾墝">{{ dispatchInfo.carNo }}</el-descriptions-item>
               <el-descriptions-item label="鍖荤敓">{{ dispatchInfo.doctor }}</el-descriptions-item>
-              <el-descriptions-item label="鑱屼綅">{{ dispatchInfo.doctorPosition }}</el-descriptions-item>
+              <!-- <el-descriptions-item label="鑱屼綅">{{ dispatchInfo.doctorPosition }}</el-descriptions-item> -->
               <el-descriptions-item label="鎶ゅ+">{{ dispatchInfo.nurse }}</el-descriptions-item>
             </el-descriptions>
           </el-card>
@@ -92,9 +91,9 @@
         <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
           <el-card class="inner-card">
             <div slot="header"><b>鏀舵淇℃伅</b></div>
-            <el-table 
-              :data="paymentInfo" 
-              border 
+            <el-table
+              :data="paymentInfo"
+              border
               style="width: 100%"
               :size="isMobile ? 'mini' : 'medium'"
               class="responsive-table">
@@ -116,9 +115,9 @@
               <b>杩愯鎯呭喌</b>
               <span style="float: right">绮102311</span>
             </div>
-            <el-table 
-              :data="operationInfo" 
-              border 
+            <el-table
+              :data="operationInfo"
+              border
               style="width: 100%"
               :size="isMobile ? 'mini' : 'medium'"
               class="responsive-table">
@@ -180,6 +179,9 @@
         this.dispatchInfo = data.dispatchInfo || {}
         this.paymentInfo = data.paymentInfo || []
         this.operationInfo = data.operationInfo || []
+
+        console.log(this.orderInfo)
+
       })
     },
     // 澶勭悊绐楀彛澶у皬鍙樺寲
@@ -218,4 +220,4 @@
   .el-descriptions-item { padding: 8px !important; }
   .el-descriptions-item__label { width: 100px !important; }
 }
-</style> 
\ No newline at end of file
+</style>
diff --git a/ruoyi-ui/src/views/system/orders/index.vue b/ruoyi-ui/src/views/system/orders/index.vue
index c5135d1..9bb9b8b 100644
--- a/ruoyi-ui/src/views/system/orders/index.vue
+++ b/ruoyi-ui/src/views/system/orders/index.vue
@@ -87,7 +87,15 @@
 
     <el-table v-loading="loading" :data="ordersList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="ID" align="center" prop="OrderID" />
+      <el-table-column label="璁㈠崟ID" align="center" prop="OrderID" />
+      <el-table-column label="璁㈠崟鐘舵��" align="center" prop="OrderStatus">
+        <template slot-scope="scope">
+          <el-tag v-if="scope.row.OrderStatus === 0" type="warning">宸叉彁浜�</el-tag>
+          <el-tag v-else-if="scope.row.OrderStatus === 1" type="success">澶勭悊鎴愬姛</el-tag>
+          <el-tag v-else-if="scope.row.OrderStatus === 2" type="info">宸插彇娑�</el-tag>
+          <el-tag v-else type="danger">鏈煡鐘舵��</el-tag>
+        </template>
+      </el-table-column>
       <el-table-column label="鑱旂郴浜�" align="center" prop="LinkPerson" />
       <el-table-column label="鑱旂郴鐢佃瘽" align="center" prop="LinkTel" />
       <el-table-column label="鍙楃悊鐢佃瘽" align="center" prop="AlarmTel" />
@@ -111,7 +119,7 @@
       <el-table-column label="棰勪及閲戦" align="center" prop="BookingPrice" />
       <el-table-column label="棰勭害鏃堕棿" align="center" prop="BookingDate" width="180">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.BookingDate, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.BookingDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
         </template>
       </el-table-column>
       <el-table-column label="澶囨敞" align="center" prop="Remark" />
@@ -123,37 +131,37 @@
       <el-table-column label="妤煎眰" align="center" prop="LiftingFloor" />
       <el-table-column label="鐩戞姢锛岄噸鐥�" align="center" prop="RequirementCode" />
       <el-table-column label="杞繍绫诲瀷" align="center" prop="TypeCode" />
-      <el-table-column label="绗笁鏂硅皟鐢ㄧ粨鏋�" align="center" prop="ThirdPartyResult" />
+      <el-table-column label="绗笁鏂硅皟鐢ㄧ粨鏋�" align="center" prop="ThirdPartyResult">
+        <template slot-scope="scope">
+          <el-tag v-if="scope.row.ThirdPartyResult === 1" type="success">璋冪敤鎴愬姛</el-tag>
+          <el-tag v-else-if="scope.row.ThirdPartyResult === 2" type="danger">璋冪敤澶辫触</el-tag>
+          <el-tag v-else type="info">鏈煡鐘舵��</el-tag>
+        </template>
+      </el-table-column>
       <el-table-column label="绗笁鏂规湇鍔D" align="center" prop="ServiceOrdID" />
       <el-table-column label="绗笁鏂规湇鍔″崟鍙�" align="center" prop="ServiceOrdNo" />
       <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="CreateTime" width="180">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.CreateTime, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.CreateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
         </template>
       </el-table-column>
       <el-table-column label="鏇存柊鏃堕棿" align="center" prop="UpdateTime" width="180">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.UpdateTime, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.UpdateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
         </template>
       </el-table-column>
-      <!-- <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+
+      <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
+            v-if="scope.row.ThirdPartyResult === 2 || scope.row.OrderStatus === 0"
             size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:orders:edit']"
-          >淇敼</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:orders:remove']"
-          >鍒犻櫎</el-button>
+            type="primary"
+            icon="el-icon-refresh"
+            @click="handleResend(scope.row)"
+          >閲嶆柊鍙戦��</el-button>
         </template>
-      </el-table-column> -->
+      </el-table-column>
     </el-table>
     <pagination
       v-show="total>0"
@@ -280,7 +288,7 @@
 </template>
 
 <script>
-import { listOrders, getOrders, delOrders, addOrders, updateOrders } from "@/api/system/orders";
+import { listOrders, getOrders, delOrders, addOrders, updateOrders, resendOrder } from "@/api/system/orders";
 
 export default {
   name: "Orders",
@@ -480,6 +488,17 @@
       this.download('system/orders/export', {
         ...this.queryParams
       }, `orders_${new Date().getTime()}.xlsx`)
+    },
+    /** 閲嶆柊鍙戦�佹寜閽搷浣� */
+    handleResend(row) {
+      this.$modal.confirm('鏄惁纭閲嶆柊鍙戦�佽璁㈠崟锛�').then(() => {
+        // 杩欓噷璋冪敤閲嶆柊鍙戦�佺殑API
+        // TODO: 闇�瑕佸湪鍚庣瀹炵幇閲嶆柊鍙戦�佺殑鎺ュ彛
+        resendOrder(row.OrderID).then(response => {
+          this.$modal.msgSuccess("閲嶆柊鍙戦�佹垚鍔�");
+          this.getList();
+        }).catch(() => {});
+      }).catch(() => {});
     }
   }
 };

--
Gitblit v1.9.1