From 7feb722a12e26f5572c7df9ccc1ce8c1e26b9f94 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 22 四月 2025 23:30:07 +0800
Subject: [PATCH] 新增加功能

---
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/FinancialStatementController.java      |  268 ++++++++++++++
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html                              |   42 ++
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTaxiMapper.java                                 |   39 ++
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SysCouponRecord.java                                |   10 
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/financialStatement/offlineOrderStatistics/offlineOrderStatistics.html |   59 +++
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponRecordController.java         |   48 ++
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTaxiService.java                           |   32 +
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java                  |   30 +
 ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/offlineOrderStatistics/offlineOrderStatistics.js |  120 ++++++
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java                   |   87 ++++
 ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord.js                                  |   12 
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.html |   63 +++
 ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.js |  125 ++++++
 ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord_info.js                             |  103 +++++
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTaxiMapper.xml                          |   87 ++++
 ManagementOKTravel/guns-admin/src/main/resources/application.yml                                                                        |    2 
 16 files changed, 1,108 insertions(+), 19 deletions(-)

diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/FinancialStatementController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/FinancialStatementController.java
new file mode 100644
index 0000000..63b44a7
--- /dev/null
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/FinancialStatementController.java
@@ -0,0 +1,268 @@
+package com.stylefeng.guns.modular.system.controller.general;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.core.common.constant.factory.PageFactory;
+import com.stylefeng.guns.core.util.DateUtil;
+import com.stylefeng.guns.core.util.ExcelExportUtil;
+import com.stylefeng.guns.core.util.SinataUtil;
+import com.stylefeng.guns.modular.system.service.ITOrderTaxiService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 财务报表
+ * @author zhibing.pu
+ * @Date 2025/4/22 10:55
+ */
+@Controller
+@RequestMapping("/financialStatement")
+public class FinancialStatementController extends BaseController {
+	
+	private String PREFIX = "/system/financialStatement/";
+	
+	@Resource
+	private ITOrderTaxiService orderTaxiService;
+	
+	
+	/**
+	 * 跳转支付订单统计页
+	 * @return
+	 */
+	@GetMapping("/paymentOrderStatistics")
+	public String paymentOrderStatistics(){
+		return PREFIX + "paymentOrderStatistics/paymentOrderStatistics.html";
+	}
+	
+	
+	/**
+	 * 跳转线下订单统计页
+	 * @return
+	 */
+	@GetMapping("/offlineOrderStatistics")
+	public String offlineOrderStatistics(){
+		return PREFIX + "offlineOrderStatistics/offlineOrderStatistics.html";
+	}
+	
+	
+	
+	/**
+	 * 获取支付订单统计列表
+	 * @param paymentCode
+	 * @param orderCode
+	 * @param userPhone
+	 * @param driverPhone
+	 * @param createTime
+	 * @param paymentTime
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/paymentOrderStatisticsList")
+	public Object paymentOrderStatisticsList(String paymentCode, String orderCode, String userPhone,
+	                                         String driverPhone, String createTime, String paymentTime){
+		Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+		List<Map<String, Object>> list = orderTaxiService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime);
+		return super.packForBT(page.setRecords(list));
+	}
+	
+	
+	/**
+	 * 导出支付订单统计列表
+	 * @param paymentCode
+	 * @param orderCode
+	 * @param userPhone
+	 * @param driverPhone
+	 * @param createTime
+	 * @param paymentTime
+	 */
+	@ResponseBody
+	@RequestMapping("/paymentOrderStatisticsList_export")
+	public void paymentOrderStatisticsList_export(String paymentCode, String orderCode, String userPhone,
+	                                              String driverPhone, String createTime, String paymentTime, HttpServletRequest request, HttpServletResponse response){
+		Page<Map<String, Object>> page = new Page(1, 9999);
+		List<Map<String, Object>> list = orderTaxiService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime);
+		
+		// 表格数据【封装】
+		List<List<String>> dataList = new ArrayList<>();
+		
+		// 列【封装】
+		List<String> shellList = new ArrayList<String>();
+		shellList.add("支付流水号");
+		shellList.add("订单号");
+		shellList.add("支付用户手机号");
+		shellList.add("支付金额");
+		shellList.add("接单司机手机号");
+		shellList.add("司机所属机构");
+		shellList.add("扣除司机抽成");
+		shellList.add("下单时间");
+		shellList.add("支付时间");
+		dataList.add(shellList);
+		
+		for (Map<String,Object> object : list){
+			// 详细数据列【封装】
+			shellList = new ArrayList<String>();
+			if(SinataUtil.isNotEmpty(object.get("paymentCode"))){
+				shellList.add(object.get("paymentCode").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("orderNum"))){
+				shellList.add(object.get("orderNum").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("userPhone"))){
+				shellList.add(object.get("userPhone").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("amount"))){
+				shellList.add(object.get("amount").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("driverPhone"))){
+				shellList.add(object.get("driverPhone").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("company"))){
+				shellList.add(object.get("company").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("income"))){
+				shellList.add(object.get("income").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("insertTime"))){
+				shellList.add(object.get("insertTime").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("paymentTime"))){
+				shellList.add(object.get("paymentTime").toString());
+			}else{
+				shellList.add("-");
+			}
+			dataList.add(shellList);
+		}
+		try {
+			// 调用工具类进行导出
+			ExcelExportUtil.easySheet("支付订单统计"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "支付订单统计", dataList,request, response);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+	
+	/**
+	 * 获取线下订单统计
+	 * @param orderCode
+	 * @param userPhone
+	 * @param driverPhone
+	 * @param createTime
+	 * @param orderSource
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/offlineOrderStatisticsList")
+	public Object offlineOrderStatisticsList(String orderCode, String userPhone, String driverPhone,
+	                                         String createTime, Integer orderSource){
+		Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+		List<Map<String, Object>> list = orderTaxiService.offlineOrderStatisticsList(page, orderCode, userPhone, driverPhone, createTime, orderSource);
+		return super.packForBT(page.setRecords(list));
+	}
+	
+	
+	/**
+	 * 导出线下订单统计
+	 * @param orderCode
+	 * @param userPhone
+	 * @param driverPhone
+	 * @param createTime
+	 * @param orderSource
+	 */
+	@ResponseBody
+	@RequestMapping("/offlineOrderStatisticsList_export")
+	public void offlineOrderStatisticsList_export(String orderCode, String userPhone, String driverPhone,
+	                                              String createTime, Integer orderSource, HttpServletRequest request, HttpServletResponse response){
+		Page<Map<String, Object>> page = new Page(1, 9999);
+		List<Map<String, Object>> list = orderTaxiService.offlineOrderStatisticsList(page, orderCode, userPhone, driverPhone, createTime, orderSource);
+		
+		// 表格数据【封装】
+		List<List<String>> dataList = new ArrayList<>();
+		
+		// 列【封装】
+		List<String> shellList = new ArrayList<String>();
+		shellList.add("订单号");
+		shellList.add("用户手机号");
+		shellList.add("打车方式");
+		shellList.add("接单司机手机号");
+		shellList.add("司机所属机构");
+		shellList.add("扣除司机抽成");
+		shellList.add("下单时间");
+		dataList.add(shellList);
+		
+		for (Map<String,Object> object : list){
+			shellList = new ArrayList<String>();
+			// 详细数据列【封装】
+			if(SinataUtil.isNotEmpty(object.get("orderNum"))){
+				shellList.add(object.get("orderNum").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("userPhone"))){
+				shellList.add(object.get("userPhone").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("orderSource"))){
+				shellList.add(object.get("orderSource").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("driverPhone"))){
+				shellList.add(object.get("driverPhone").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("company"))){
+				shellList.add(object.get("company").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("income"))){
+				shellList.add(object.get("income").toString());
+			}else{
+				shellList.add("-");
+			}
+			if(SinataUtil.isNotEmpty(object.get("insertTime"))){
+				shellList.add(object.get("insertTime").toString());
+			}else{
+				shellList.add("-");
+			}
+			dataList.add(shellList);
+		}
+		try {
+			// 调用工具类进行导出
+			ExcelExportUtil.easySheet("线下订单统计"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "线下订单统计", dataList,request, response);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+}
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java
index 52fbfa1..451c965 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/ReportController.java
@@ -2,12 +2,12 @@
 
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.stylefeng.guns.core.shiro.ShiroKit;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.system.model.TCompany;
-import com.stylefeng.guns.modular.system.service.ITCompanyService;
-import com.stylefeng.guns.modular.system.service.IUserActivityDiscount1Service;
-import com.stylefeng.guns.modular.system.service.IUserCouponRecordService;
-import com.stylefeng.guns.modular.system.service.IUserRedPacketRecordService;
+import com.stylefeng.guns.modular.system.model.User;
+import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,6 +42,9 @@
 
     @Autowired
     private IUserActivityDiscount1Service userActivityDiscount1Service;
+    
+    @Autowired
+    private IUserService userService;
 
 
 
@@ -52,7 +55,13 @@
      */
     @RequestMapping("/showOperationalData")
     public String showOperationalData(Model model){
-        List<TCompany> tCompanies = companyService.selectList(new EntityWrapper<TCompany>().eq("state", 0).ne("flag", 3));
+        Wrapper<TCompany> wrapper = new EntityWrapper<TCompany>().eq("state", 0).ne("flag", 3);
+        Integer id = ShiroKit.getUser().getId();
+        User user = userService.selectById(id);
+        if(user.getRoleType() != 1){
+            wrapper.eq("id", user.getObjectId());
+        }
+        List<TCompany> tCompanies = companyService.selectList(wrapper);
         model.addAttribute("company", tCompanies);
         return PREFIX + "operationalData.html";
     }
@@ -107,6 +116,11 @@
                 start = time.split(" - ")[0];
                 end = time.split(" - ")[1];
             }
+            Integer id = ShiroKit.getUser().getId();
+            User user = userService.selectById(id);
+            if(user.getRoleType() != 1){
+                companyId = user.getObjectId();
+            }
             return companyService.queryOperationalData(type, start, end, companyId, offset, limit);
         }catch (Exception e){
             e.printStackTrace();
@@ -131,6 +145,12 @@
                 start = time.split(" - ")[0];
                 end = time.split(" - ")[1];
             }
+    
+            Integer id = ShiroKit.getUser().getId();
+            User user = userService.selectById(id);
+            if(user.getRoleType() != 1){
+                companyId = user.getObjectId();
+            }
             HSSFWorkbook hssfWorkbook = companyService.downloadOperationalData(type, start, end, companyId);
             response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("日常运营数据汇总表.xls", "utf-8"));
             response.setContentType("application/vnd.ms-excel");
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponRecordController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponRecordController.java
index fa1e918..0d9e637 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponRecordController.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponRecordController.java
@@ -1,5 +1,8 @@
 package com.stylefeng.guns.modular.system.controller.general;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
@@ -9,6 +12,8 @@
 import com.stylefeng.guns.core.util.DateUtil;
 import com.stylefeng.guns.core.util.SinataUtil;
 import com.stylefeng.guns.modular.system.model.SysRedPacketRecord;
+import com.stylefeng.guns.modular.system.model.TRegion;
+import com.stylefeng.guns.modular.system.service.ITRegionService;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -21,7 +26,9 @@
 import com.stylefeng.guns.modular.system.service.ISysCouponRecordService;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * 控制器
@@ -37,6 +44,9 @@
 
     @Autowired
     private ISysCouponRecordService sysCouponRecordService;
+    
+    @Autowired
+    private ITRegionService tRegionService;
 
     /**
      * 跳转到首页
@@ -50,7 +60,9 @@
      * 跳转到添加
      */
     @RequestMapping("/sysCouponRecord_add")
-    public String sysCouponRecordAdd() {
+    public String sysCouponRecordAdd(Model model) {
+        List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
+        model.addAttribute("provinceList",provinceList);
         return PREFIX + "sysCouponRecord_add.html";
     }
 
@@ -62,6 +74,8 @@
         SysCouponRecord sysCouponRecord = sysCouponRecordService.selectById(sysCouponRecordId);
         model.addAttribute("item",sysCouponRecord);
         LogObjectHolder.me().set(sysCouponRecord);
+        List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
+        model.addAttribute("provinceList",provinceList);
         return PREFIX + "sysCouponRecord_edit.html";
     }
 
@@ -105,6 +119,22 @@
         sysCouponRecord.setInsertTime(new Date());
         sysCouponRecord.setCompanyId(ShiroKit.getUser().getObjectId());
         sysCouponRecord.setCompanyType(ShiroKit.getUser().getRoleType());
+        String citys = sysCouponRecord.getCitys();
+        JSONArray jsonArray = JSON.parseArray(citys);
+        JSONArray citys_list = new JSONArray();
+        List<TRegion> tRegions = tRegionService.selectList(null);
+        for (int i = 0; i < jsonArray.size(); i++) {
+            Integer integer = jsonArray.getInteger(i);
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("code", integer);
+            Optional<TRegion> first = tRegions.stream().filter(s->s.getCode().equals(integer.toString())).findFirst();
+            if(first.isPresent()){
+                TRegion tRegion = first.get();
+                jsonObject.put("name", tRegion.getName());
+            }
+            citys_list.add(jsonObject);
+        }
+        sysCouponRecord.setCitys(citys_list.toString());
         sysCouponRecordService.insert(sysCouponRecord);
         return SUCCESS_TIP;
     }
@@ -125,6 +155,22 @@
     @RequestMapping(value = "/update")
     @ResponseBody
     public Object update(SysCouponRecord sysCouponRecord) {
+        String citys = sysCouponRecord.getCitys();
+        JSONArray jsonArray = JSON.parseArray(citys);
+        JSONArray citys_list = new JSONArray();
+        List<TRegion> tRegions = tRegionService.selectList(null);
+        for (int i = 0; i < jsonArray.size(); i++) {
+            Integer integer = jsonArray.getInteger(i);
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("code", integer);
+            Optional<TRegion> first = tRegions.stream().filter(s->s.getCode().equals(integer.toString())).findFirst();
+            if(first.isPresent()){
+                TRegion tRegion = first.get();
+                jsonObject.put("name", tRegion.getName());
+            }
+            citys_list.add(jsonObject);
+        }
+        sysCouponRecord.setCitys(citys_list.toString());
         sysCouponRecordService.updateById(sysCouponRecord);
         return SUCCESS_TIP;
     }
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTaxiMapper.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTaxiMapper.java
index 41c9a48..4a34172 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTaxiMapper.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTaxiMapper.java
@@ -1,8 +1,8 @@
 package com.stylefeng.guns.modular.system.dao;
 
+import com.baomidou.mybatisplus.mapper.BaseMapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.stylefeng.guns.modular.system.model.TOrderTaxi;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -76,4 +76,41 @@
      * @return
      */
     Double getAllIncomeMoney(@Param("companyId") Integer companyId,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
+    
+    
+    /**
+     * 获取支付订单统计
+     * @param page
+     * @param paymentCode
+     * @param orderCode
+     * @param userPhone
+     * @param driverPhone
+     * @param createTimeStart
+     * @param createTimeEnd
+     * @param paymentTimeStart
+     * @param paymentTimeEnd
+     * @return
+     */
+    List<Map<String, Object>> paymentOrderStatisticsList(Page<Map<String, Object>> page, @Param("paymentCode") String paymentCode,
+                                                         @Param("orderCode") String orderCode, @Param("userPhone") String userPhone,
+                                                         @Param("driverPhone") String driverPhone, @Param("createTimeStart") String createTimeStart,
+                                                         @Param("createTimeEnd") String createTimeEnd, @Param("paymentTimeStart") String paymentTimeStart,
+                                                         @Param("paymentTimeEnd") String paymentTimeEnd);
+    
+    
+    /**
+     * 获取线下订单统计
+     * @param page
+     * @param orderCode
+     * @param userPhone
+     * @param driverPhone
+     * @param createTimeStart
+     * @param createTimeEnd
+     * @param orderSource
+     * @return
+     */
+    List<Map<String, Object>> offlineOrderStatisticsList(Page<Map<String, Object>> page, @Param("orderCode") String orderCode,
+                                                         @Param("userPhone") String userPhone, @Param("driverPhone") String driverPhone,
+                                                         @Param("createTimeStart") String createTimeStart, @Param("createTimeEnd") String createTimeEnd,
+                                                         @Param("orderSource") Integer orderSource);
 }
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTaxiMapper.xml b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTaxiMapper.xml
index 208cb8f..a624639 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTaxiMapper.xml
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTaxiMapper.xml
@@ -262,6 +262,91 @@
         </if>
     </select>
 
+    
+    <select id="paymentOrderStatisticsList" resultType="map">
+        select
+            a.id,
+            b.code as paymentCode,
+            a.orderNum,
+            c.phone as userPhone,
+            b.amount,
+            d.phone as driverPhone,
+            e.name as company,
+            f.money as income,
+            DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s') as insertTime,
+            DATE_FORMAT(b.insertTime, '%Y-%m-%d %H:%i:%s') as paymentTime
+        from t_order_taxi a
+        left join t_payment_record b on (a.id = b.orderId and b.orderType = 2 and b.state = 2)
+        left join t_user c on (a.userId = c.id)
+        left join t_driver d on (a.driverId = d.id)
+        left join t_company e on (d.companyId = e.id)
+        left join t_pub_transaction_details f on (a.id = f.orderId and f.orderType = 2 and f.userType = 2)
+        where a.state in (8, 9) and a.isDelete = 1 and a.payManner = 1
+        <if test="null != paymentCode and '' != paymentCode">
+            and b.code like CONCAT('%', #{paymentCode}, '%')
+        </if>
+        <if test="null != orderCode and '' != orderCode">
+            and a.orderNum like CONCAT('%', #{orderCode}, '%')
+        </if>
+        <if test="null != userPhone and '' != userPhone">
+            and c.phone like CONCAT('%', #{userPhone}, '%')
+        </if>
+        <if test="null != driverPhone and '' != driverPhone">
+            and d.phone like CONCAT('%', #{driverPhone}, '%')
+        </if>
+        <if test="null != createTimeStart and '' != createTimeStart and null != createTimeEnd and '' != createTimeEnd">
+            and a.insertTime between #{createTimeStart} and #{createTimeEnd}
+        </if>
+        <if test="null != paymentTimeStart and '' != paymentTimeStart and null != paymentTimeEnd and '' != paymentTimeEnd">
+            and b.insertTime between #{paymentTimeStart} and #{paymentTimeEnd}
+        </if>
+        order by a.insertTime desc
+    </select>
 
-
+    
+    
+    <select id="offlineOrderStatisticsList" resultType="map">
+        select
+        a.id,
+        a.orderNum,
+        c.phone as userPhone,
+        d.phone as driverPhone,
+        e.name as company,
+        f.money as income,
+        DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s') as insertTime,
+        a.orderSource,
+        a.oldPeople,
+        a.payManner
+        from t_order_taxi a
+        left join t_user c on (a.userId = c.id)
+        left join t_driver d on (a.driverId = d.id)
+        left join t_company e on (d.companyId = e.id)
+        left join t_pub_transaction_details f on (a.id = f.orderId and f.orderType = 2 and f.userType = 2)
+        where a.state in (8, 9) and a.isDelete = 1 and (a.orderSource in (5, 6) or a.oldPeople = 1 or a.payManner = 2)
+        <if test="null != orderCode and '' != orderCode">
+            and a.orderNum like CONCAT('%', #{orderCode}, '%')
+        </if>
+        <if test="null != userPhone and '' != userPhone">
+            and c.phone like CONCAT('%', #{userPhone}, '%')
+        </if>
+        <if test="null != driverPhone and '' != driverPhone">
+            and d.phone like CONCAT('%', #{driverPhone}, '%')
+        </if>
+        <if test="null != createTimeStart and '' != createTimeStart and null != createTimeEnd and '' != createTimeEnd">
+            and a.insertTime between #{createTimeStart} and #{createTimeEnd}
+        </if>
+        <if test="null != orderSource and 1 == orderSource">
+            and a.orderSource = 6
+        </if>
+        <if test="null != orderSource and 2 == orderSource">
+            and a.oldPeople = 1
+        </if>
+        <if test="null != orderSource and 3 == orderSource">
+            and a.payManner = 2
+        </if>
+        <if test="null != orderSource and 4 == orderSource">
+            and a.orderSource = 5
+        </if>
+        order by a.insertTime desc
+    </select>
 </mapper>
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SysCouponRecord.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SysCouponRecord.java
index d88df58..0dc8925 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SysCouponRecord.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SysCouponRecord.java
@@ -59,6 +59,10 @@
      * 1=平台 2=分公司 3=加盟商
      */
     private Integer companyType;
+    /**
+     * 适用城市
+     */
+    private String citys;
 
     public Integer getCompanyType() {
         return companyType;
@@ -139,7 +143,11 @@
     public void setEffective(Integer effective) {
         this.effective = effective;
     }
-
+    public String getCitys() {
+        return citys;
+    }public void setCitys(String citys) {
+        this.citys = citys;
+    }
     @Override
     protected Serializable pkVal() {
         return this.id;
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTaxiService.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTaxiService.java
index f73bd6e..73177eb 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTaxiService.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTaxiService.java
@@ -1,9 +1,8 @@
 package com.stylefeng.guns.modular.system.service;
 
 import com.baomidou.mybatisplus.plugins.Page;
-import com.stylefeng.guns.modular.system.model.TOrderTaxi;
 import com.baomidou.mybatisplus.service.IService;
-import com.stylefeng.guns.modular.system.util.ResultUtil;
+import com.stylefeng.guns.modular.system.model.TOrderTaxi;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -77,5 +76,34 @@
      * @return
      */
     Double getAllIncomeMoney(@Param("companyId") Integer companyId,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
+    
+    
+    /**
+     * 获取支付订单统计数据
+     * @param page
+     * @param paymentCode
+     * @param orderCode
+     * @param userPhone
+     * @param driverPhone
+     * @param createTime
+     * @param paymentTime
+     * @return
+     */
+    List<Map<String, Object>> paymentOrderStatisticsList(Page<Map<String, Object>> page, String paymentCode, String orderCode, String userPhone,
+                                                         String driverPhone, String createTime, String paymentTime);
+    
+    
+    /**
+     * 获取线下订单统计数据
+     * @param page
+     * @param orderCode
+     * @param userPhone
+     * @param driverPhone
+     * @param createTime
+     * @param orderSource
+     * @return
+     */
+    List<Map<String, Object>> offlineOrderStatisticsList(Page<Map<String, Object>> page, String orderCode, String userPhone, String driverPhone,
+                                                         String createTime, Integer orderSource);
 
 }
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java
index 3dcf708..10d2742 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java
@@ -1,12 +1,11 @@
 package com.stylefeng.guns.modular.system.service.impl;
 
 import com.baomidou.mybatisplus.plugins.Page;
-import com.stylefeng.guns.modular.system.model.TOrderPosition;
-import com.stylefeng.guns.modular.system.model.TOrderTaxi;
-import com.stylefeng.guns.modular.system.dao.TOrderTaxiMapper;
-import com.stylefeng.guns.modular.system.service.ITOrderTaxiService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import com.stylefeng.guns.modular.system.util.ResultUtil;
+import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.dao.TOrderTaxiMapper;
+import com.stylefeng.guns.modular.system.model.TOrderTaxi;
+import com.stylefeng.guns.modular.system.service.ITOrderTaxiService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -52,5 +51,81 @@
     public Double getAllIncomeMoney(Integer companyId, String beginTime, String endTime) {
         return this.baseMapper.getAllIncomeMoney(companyId, beginTime, endTime);
     }
-
+    
+    
+    /**
+     * 获取支付订单统计数据
+     * @param page
+     * @param paymentCode
+     * @param orderCode
+     * @param userPhone
+     * @param driverPhone
+     * @param createTime
+     * @param paymentTime
+     * @return
+     */
+    @Override
+	public List<Map<String, Object>> paymentOrderStatisticsList(Page<Map<String, Object>> page, String paymentCode, String orderCode, String userPhone, String driverPhone, String createTime, String paymentTime) {
+        String createTimeStart = null;
+        String createTimeEnd = null;
+        String paymentTimeStart = null;
+        String paymentTimeEnd = null;
+        if(ToolUtil.isNotEmpty(createTime)){
+            String[] split = createTime.split(" - ");
+            createTimeStart = split[0];
+            createTimeEnd = split[1];
+        }
+        if(ToolUtil.isNotEmpty(paymentTime)){
+            String[] split = paymentTime.split(" - ");
+            paymentTimeStart = split[0];
+            paymentTimeEnd = split[1];
+        }
+		return this.baseMapper.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTimeStart, createTimeEnd, paymentTimeStart, paymentTimeEnd);
+	}
+    
+    /**
+     * 获取线下订单统计数据
+     * @param page
+     * @param orderCode
+     * @param userPhone
+     * @param driverPhone
+     * @param createTime
+     * @param orderSource
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> offlineOrderStatisticsList(Page<Map<String, Object>> page, String orderCode, String userPhone, String driverPhone, String createTime, Integer orderSource) {
+        String createTimeStart = null;
+        String createTimeEnd = null;
+        if(ToolUtil.isNotEmpty(createTime)){
+            String[] split = createTime.split(" - ");
+            createTimeStart = split[0];
+            createTimeEnd = split[1];
+        }
+        List<Map<String, Object>> list = this.baseMapper.offlineOrderStatisticsList(page, orderCode, userPhone, driverPhone, createTimeStart, createTimeEnd, orderSource);
+        for (Map<String, Object> map : list) {
+            Integer orderSource1 = null;
+            if(null != map.get("orderSource")){
+                orderSource1 = Integer.valueOf(map.get("orderSource").toString());
+            }
+            Integer oldPeople = null;
+            if(null != map.get("oldPeople")){
+                oldPeople = Integer.valueOf(map.get("oldPeople").toString());
+            }
+            Integer payManner = null;
+            if(null != map.get("payManner")){
+                payManner = Integer.valueOf(map.get("payManner").toString());
+            }
+            if(6 == orderSource1){
+                map.put("orderSource", "电话订单");
+            }else if(5 == orderSource1){
+                map.put("orderSource", "平台下单");
+            }else if(1 == oldPeople){
+                map.put("orderSource", "一键下单");
+            }else if(2 == payManner){
+                map.put("orderSource", "普通订单-打表计费");
+            }
+        }
+        return list;
+    }
 }
diff --git a/ManagementOKTravel/guns-admin/src/main/resources/application.yml b/ManagementOKTravel/guns-admin/src/main/resources/application.yml
index d3689f4..93e074b 100644
--- a/ManagementOKTravel/guns-admin/src/main/resources/application.yml
+++ b/ManagementOKTravel/guns-admin/src/main/resources/application.yml
@@ -71,7 +71,7 @@
 #    password: XianNing@2024!
 #    db-name: guns #用来搜集数据库的所有表
 #    filters: wall,mergeStat
-    url: jdbc:mysql://127.0.0.1:3306/xianning?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
+    url: jdbc:mysql://127.0.0.1:3306/xianning_1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
     username: root
     password: 123456
 #    db-name: guns #用来搜集数据库的所有表
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/financialStatement/offlineOrderStatistics/offlineOrderStatistics.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/financialStatement/offlineOrderStatistics/offlineOrderStatistics.html
new file mode 100644
index 0000000..8551249
--- /dev/null
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/financialStatement/offlineOrderStatistics/offlineOrderStatistics.html
@@ -0,0 +1,59 @@
+@layout("/common/_container.html"){
+<div class="row">
+	<div class="col-sm-12">
+		<div class="ibox float-e-margins">
+			<div class="ibox-title">
+				<h5>线下订单统计</h5>
+			</div>
+			<div class="ibox-content">
+				<div class="row row-lg">
+					<div class="col-sm-12">
+						<div class="row">
+							<div class="col-sm-3">
+								<#NameCon id="orderCode" name="订单号" />
+							</div>
+							<div class="col-sm-3">
+								<#NameCon id="userPhone" name="支付用户手机号" />
+							</div>
+							<div class="col-sm-3">
+								<#NameCon id="driverPhone" name="接单司机手机号" />
+							</div>
+							<div class="col-sm-3">
+								<#TimeCon id="createTime" name="下单时间" isTime="false"/>
+							</div>
+							<div class="col-sm-3">
+								<#SelectCon id="orderSource" name="打车方式" >
+									<option value="">全部</option>
+									<option value="1">电话订单</option>
+									<option value="2">一键下单</option>
+									<option value="3">普通订单-打表计费</option>
+									<option value="4">平台下单</option>
+								</#SelectCon>
+							</div>
+							<div class="col-sm-3">
+								<#button name="搜索" icon="fa-search" clickFun="OfflineOrderStatistics.search()"/>
+								<#button name="重置" icon="fa-trash" clickFun="OfflineOrderStatistics.resetSearch()" space="true"/>
+							</div>
+						</div>
+						<div class="hidden-xs" id="OfflineOrderStatisticsTableToolbar" role="group">
+							@if(shiro.hasPermission("/offlineOrderStatistics/export")){
+							<#button name="导出" icon="" clickFun="OfflineOrderStatistics.export()" space="true"/>
+							@}
+						</div>
+						<#table id="OfflineOrderStatisticsTable"/>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+<script src="${ctxPath}/static/modular/system/financialStatement/offlineOrderStatistics/offlineOrderStatistics.js"></script>
+<script>
+	laydate.render({
+		elem: '#createTime'
+		,type: 'date'
+		,range: true
+		,format: 'yyyy-MM-dd'
+	});
+</script>
+@}
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.html
new file mode 100644
index 0000000..74bda2e
--- /dev/null
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.html
@@ -0,0 +1,63 @@
+@layout("/common/_container.html"){
+<div class="row">
+	<div class="col-sm-12">
+		<div class="ibox float-e-margins">
+			<div class="ibox-title">
+				<h5>支付订单统计</h5>
+			</div>
+			<div class="ibox-content">
+				<div class="row row-lg">
+					<div class="col-sm-12">
+						<div class="row">
+							<div class="col-sm-3">
+								<#NameCon id="paymentCode" name="支付流水号"/>
+							</div>
+							<div class="col-sm-3">
+								<#NameCon id="orderCode" name="订单号" />
+							</div>
+							<div class="col-sm-3">
+								<#NameCon id="userPhone" name="支付用户手机号" />
+							</div>
+							<div class="col-sm-3">
+								<#NameCon id="driverPhone" name="接单司机手机号" />
+							</div>
+							<div class="col-sm-3">
+								<#TimeCon id="createTime" name="下单时间" isTime="false"/>
+							</div>
+							<div class="col-sm-3">
+								<#TimeCon id="paymentTime" name="支付时间" isTime="false"/>
+							</div>
+							<div class="col-sm-3">
+								<#button name="搜索" icon="fa-search" clickFun="PaymentOrderStatistics.search()"/>
+								<#button name="重置" icon="fa-trash" clickFun="PaymentOrderStatistics.resetSearch()" space="true"/>
+							</div>
+						</div>
+						<div class="hidden-xs" id="PaymentOrderStatisticsTableToolbar" role="group">
+							@if(shiro.hasPermission("/paymentOrderStatistics/export")){
+							<#button name="导出" icon="" clickFun="PaymentOrderStatistics.export()" space="true"/>
+							@}
+						</div>
+						<#table id="PaymentOrderStatisticsTable"/>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+<script src="${ctxPath}/static/modular/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.js"></script>
+<script>
+	laydate.render({
+		elem: '#createTime'
+		,type: 'date'
+		,range: true
+		,format: 'yyyy-MM-dd'
+	});
+	
+	laydate.render({
+		elem: '#paymentTime'
+		,type: 'date'
+		,range: true
+		,format: 'yyyy-MM-dd'
+	});
+</script>
+@}
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html
index 1479513..6a4a929 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html
@@ -27,6 +27,48 @@
                             <input class="form-control" id="fullMoney" name="fullMoney" >
                         </div>
                     </div>
+		            <div class="form-group">
+			            <label class="col-sm-3 control-label">适用城市:</label>
+			            <div class="col-sm-2">
+				            <select class="form-control" id="province" onchange="SysCouponRecordInfoDlg.provinceChange(this)">
+					            <option value="">选择省</option>
+					            @for(obj in provinceList){
+					            <option value="${obj.code}">${obj.name}</option>
+					            @}
+				            </select>
+			            </div>
+			            <div class="col-sm-2">
+				            <select class="form-control" id="city" onchange="SysCouponRecordInfoDlg.cityChage(this)">
+					            <option value="">选择市</option>
+				            </select>
+			            </div>
+			            <div class="col-sm-2">
+				            <select class="form-control" id="area">
+					            <option value="">选择区</option>
+				            </select>
+			            </div>
+			            <div class="col-sm-1">
+				            <#button btnCss="info" name="添加" id="ensure" icon="fa-check" clickFun="SysCouponRecordInfoDlg.addScope()"/>
+			            </div>
+		            </div>
+		            <div class="form-group">
+			            <label class="col-sm-3 control-label"></label>
+			            <div class="col-sm-9">
+				            <div style="height: 200px; border: 1px solid #e5e6e7;overflow-y: auto;">
+					            <table class="table table-striped table-bordered table-hover table-condensed">
+						            <thead>
+						            <tr>
+							            <th style="width: 300px;">城市</th>
+							            <th style="width: 200px;">操作</th>
+						            </tr>
+						            </thead>
+						            <tbody id="conn">
+						
+						            </tbody>
+					            </table>
+				            </div>
+			            </div>
+		            </div>
                 </div>
             </div>
 
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/offlineOrderStatistics/offlineOrderStatistics.js b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/offlineOrderStatistics/offlineOrderStatistics.js
new file mode 100644
index 0000000..b79aaef
--- /dev/null
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/offlineOrderStatistics/offlineOrderStatistics.js
@@ -0,0 +1,120 @@
+/**
+ * 管理初始化
+ */
+var OfflineOrderStatistics = {
+	id: "OfflineOrderStatisticsTable",	//表格id
+	seItem: null,		//选中的条目
+	table: null,
+	layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+OfflineOrderStatistics.initColumn = function () {
+	return [
+		{field: 'selectItem', radio: true},
+		{title: '', field: 'id', visible: false, align: 'center', valign: 'middle'},
+		{title: '订单号', field: 'orderNum', visible: true, align: 'center', valign: 'middle'},
+		{title: '用户手机号', field: 'userPhone', visible: true, align: 'center', valign: 'middle'},
+		{title: '打车方式', field: 'orderSource', visible: true, align: 'center', valign: 'middle'},
+		{title: '接单司机手机号', field: 'driverPhone', visible: true, align: 'center', valign: 'middle'},
+		{title: '司机所属机构', field: 'company', visible: true, align: 'center', valign: 'middle'},
+		{title: '扣除司机抽成', field: 'income', visible: true, align: 'center', valign: 'middle'},
+		{title: '下单时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'},
+		{title: '操作', field: 'id', visible: true, align: 'center', valign: 'middle',
+			formatter: function (value, row) {
+				return '<a onclick="OfflineOrderStatistics.openOfflineOrderStatisticsDetail(' + value + ')" style="color: blue;">订单详情</a>';
+			}
+		}
+	];
+};
+
+/**
+ * 检查是否选中
+ */
+OfflineOrderStatistics.check = function (type) {
+	var selected = $('#' + this.id).bootstrapTable('getSelections');
+	if(selected.length == 0){
+		Feng.info("请先选中表格中的某一记录!");
+		return false;
+	}else{
+		//验证类型null删除,1=审核,2=编辑,3=启动/暂停
+		if(type==null){
+			OfflineOrderStatistics.seItem = selected[0];
+			return true;
+		}else if(type==3 && selected[0].status!=3 && selected[0].status!=4){
+			Feng.info("当前状态不能暂停/启动!");
+			return false;
+		}else if(type==3 && selected[0].status==3 && (selected[0].startTime>new Date() || new Date()>selected[0].endTime)){
+			Feng.info("当前状态不能暂停/启动!");
+			return false;
+		}else if(type==1 && selected[0].status!=1){
+			Feng.info("当前状态不能审核!");
+			return false;
+		}else if(type==2 && selected[0].status!=2){
+			Feng.info("当前状态不能编辑!");
+			return false;
+		}
+		OfflineOrderStatistics.seItem = selected[0];
+		return true;
+	}
+};
+/**
+ * 打开查看详情
+ */
+OfflineOrderStatistics.openOfflineOrderStatisticsDetail = function (id) {
+	var index = layer.open({
+		type: 2,
+		title: '出租车订单详情',
+		area: ['100%', '100%'], //宽高
+		fix: false, //不固定
+		maxmin: true,
+		content: Feng.ctxPath + '/tOrderTaxi/tOrderTaxi_update/' + TOrderTaxi.seItem.id
+	});
+	this.layerIndex = index;
+};
+
+
+OfflineOrderStatistics.export = function (){
+	let orderCode = $("#orderCode").val();
+	let userPhone = $("#userPhone").val();
+	let driverPhone = $("#driverPhone").val();
+	let createTime = $("#createTime").val();
+	let orderSource = $("#orderSource").val();
+	window.location.href = Feng.ctxPath + '/financialStatement/offlineOrderStatisticsList_export?orderCode=' + orderCode +
+			"&userPhone=" + userPhone + "&driverPhone=" + driverPhone + "&createTime=" + createTime + "&orderSource=" + orderSource
+}
+
+
+
+/**
+ * 查询列表
+ */
+OfflineOrderStatistics.search = function () {
+	var queryData = {};
+	queryData['orderCode'] = $("#orderCode").val();
+	queryData['userPhone'] = $("#userPhone").val();
+	queryData['driverPhone'] = $("#driverPhone").val();
+	queryData['createTime'] = $("#createTime").val();
+	queryData['orderSource'] = $("#orderSource").val();
+	OfflineOrderStatistics.table.refresh({query: queryData});
+};
+
+
+OfflineOrderStatistics.resetSearch = function () {
+	$("#orderCode").val("");
+	$("#userPhone").val("");
+	$("#driverPhone").val("");
+	$("#createTime").val("");
+	$("#orderSource").val("");
+	OfflineOrderStatistics.search();
+};
+
+
+$(function () {
+	var defaultColunms = OfflineOrderStatistics.initColumn();
+	var table = new BSTable(OfflineOrderStatistics.id, "/financialStatement/offlineOrderStatisticsList", defaultColunms);
+	table.setPaginationType("server");
+	OfflineOrderStatistics.table = table.init();
+});
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.js b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.js
new file mode 100644
index 0000000..119c0f3
--- /dev/null
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.js
@@ -0,0 +1,125 @@
+/**
+ * 管理初始化
+ */
+var PaymentOrderStatistics = {
+	id: "PaymentOrderStatisticsTable",	//表格id
+	seItem: null,		//选中的条目
+	table: null,
+	layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+PaymentOrderStatistics.initColumn = function () {
+	return [
+		{field: 'selectItem', radio: true},
+		{title: '', field: 'id', visible: false, align: 'center', valign: 'middle'},
+		{title: '支付流水号', field: 'paymentCode', visible: true, align: 'center', valign: 'middle'},
+		{title: '订单号', field: 'orderNum', visible: true, align: 'center', valign: 'middle'},
+		{title: '支付用户手机号', field: 'userPhone', visible: true, align: 'center', valign: 'middle'},
+		{title: '支付金额', field: 'amount', visible: true, align: 'center', valign: 'middle'},
+		{title: '接单司机手机号', field: 'driverPhone', visible: true, align: 'center', valign: 'middle'},
+		{title: '司机所属机构', field: 'company', visible: true, align: 'center', valign: 'middle'},
+		{title: '扣除司机抽成', field: 'income', visible: true, align: 'center', valign: 'middle'},
+		{title: '下单时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'},
+		{title: '支付时间', field: 'paymentTime', visible: true, align: 'center', valign: 'middle'},
+		{title: '操作', field: 'id', visible: true, align: 'center', valign: 'middle',
+			formatter: function (value, row) {
+				return '<a onclick="PaymentOrderStatistics.openPaymentOrderStatisticsDetail(' + value + ')" style="color: blue;">订单详情</a>';
+			}
+		}
+	];
+};
+
+/**
+ * 检查是否选中
+ */
+PaymentOrderStatistics.check = function (type) {
+	var selected = $('#' + this.id).bootstrapTable('getSelections');
+	if(selected.length == 0){
+		Feng.info("请先选中表格中的某一记录!");
+		return false;
+	}else{
+		//验证类型null删除,1=审核,2=编辑,3=启动/暂停
+		if(type==null){
+			PaymentOrderStatistics.seItem = selected[0];
+			return true;
+		}else if(type==3 && selected[0].status!=3 && selected[0].status!=4){
+			Feng.info("当前状态不能暂停/启动!");
+			return false;
+		}else if(type==3 && selected[0].status==3 && (selected[0].startTime>new Date() || new Date()>selected[0].endTime)){
+			Feng.info("当前状态不能暂停/启动!");
+			return false;
+		}else if(type==1 && selected[0].status!=1){
+			Feng.info("当前状态不能审核!");
+			return false;
+		}else if(type==2 && selected[0].status!=2){
+			Feng.info("当前状态不能编辑!");
+			return false;
+		}
+		PaymentOrderStatistics.seItem = selected[0];
+		return true;
+	}
+};
+/**
+ * 打开查看详情
+ */
+PaymentOrderStatistics.openPaymentOrderStatisticsDetail = function (id) {
+	var index = layer.open({
+		type: 2,
+		title: '出租车订单详情',
+		area: ['100%', '100%'], //宽高
+		fix: false, //不固定
+		maxmin: true,
+		content: Feng.ctxPath + '/tOrderTaxi/tOrderTaxi_update/' + TOrderTaxi.seItem.id
+	});
+	this.layerIndex = index;
+};
+
+
+PaymentOrderStatistics.export = function (){
+	let paymentCode = $("#paymentCode").val();
+	let orderCode = $("#orderCode").val();
+	let userPhone = $("#userPhone").val();
+	let driverPhone = $("#driverPhone").val();
+	let createTime = $("#createTime").val();
+	let paymentTime = $("#paymentTime").val();
+	window.location.href = Feng.ctxPath + '/financialStatement/paymentOrderStatisticsList_export?paymentCode=' + paymentCode + "&orderCode=" + orderCode +
+			"&userPhone=" + userPhone + "&driverPhone=" + driverPhone + "&createTime=" + createTime + "&paymentTime=" + paymentTime
+}
+
+
+
+/**
+ * 查询列表
+ */
+PaymentOrderStatistics.search = function () {
+	var queryData = {};
+	queryData['paymentCode'] = $("#paymentCode").val();
+	queryData['orderCode'] = $("#orderCode").val();
+	queryData['userPhone'] = $("#userPhone").val();
+	queryData['driverPhone'] = $("#driverPhone").val();
+	queryData['createTime'] = $("#createTime").val();
+	queryData['paymentTime'] = $("#paymentTime").val();
+	PaymentOrderStatistics.table.refresh({query: queryData});
+};
+
+
+PaymentOrderStatistics.resetSearch = function () {
+	$("#paymentCode").val("");
+	$("#orderCode").val("");
+	$("#userPhone").val("");
+	$("#driverPhone").val("");
+	$("#createTime").val("");
+	$("#paymentTime").val("");
+	PaymentOrderStatistics.search();
+};
+
+
+$(function () {
+	var defaultColunms = PaymentOrderStatistics.initColumn();
+	var table = new BSTable(PaymentOrderStatistics.id, "/financialStatement/paymentOrderStatisticsList", defaultColunms);
+	table.setPaginationType("server");
+	PaymentOrderStatistics.table = table.init();
+});
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord.js b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord.js
index 630e6d6..ab8650a 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord.js
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord.js
@@ -43,6 +43,18 @@
                         return "";
                     }
                 }
+            },
+            {title: '适用城市', field: 'citys', visible: true, align: 'center', valign: 'middle',
+                formatter: function (value, row) {
+                    if(null != value && '' != value){
+                        let cityList = JSON.parse(value);
+                        var names = "";
+                        for (let i = 0; i < cityList.length; i++) {
+                            names += cityList[i].name + ",";
+                        }
+                        return '' == names ? names : names.substring(0, names.length - 1);
+                    }
+                }
             }
     ];
 };
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord_info.js b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord_info.js
index 8192792..2a96512 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord_info.js
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord_info.js
@@ -106,6 +106,15 @@
         Feng.info("金额最多不能超过4位数");
         return;
     }
+    var subArr=[];
+    $(".timeClass").each(function () {
+        subArr.push($(this).find("input[name*='code']").val())
+    });
+    if(subArr.length <= 0){
+        Feng.error("请选择适用城市");
+        return;
+    }
+    this.sysCouponRecordInfoData.citys = JSON.stringify(subArr);
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/sysCouponRecord/add", function(data){
         Feng.success("添加成功!");
@@ -118,6 +127,89 @@
     ajax.start();
 }
 
+
+//省改变
+SysCouponRecordInfoDlg.provinceChange = function (e) {
+    var provinceCode=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tCompany/change", function(data){
+        if(data!=null){
+            var content='<option value="">选择市</option>';
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.code+"'>"+v.name+"</option>";
+            });
+            $("#city").empty().append(content);
+            $("#area").empty().append('<option value="">选择区</option>');
+        }
+    });
+    ajax.set("code",provinceCode);
+    ajax.start();
+}
+//市改变
+SysCouponRecordInfoDlg.cityChage = function (e) {
+    var cityCode=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tCompany/change", function(data){
+        if(data!=null){
+            var content='<option value="">选择区</option>';
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.code+"'>"+v.name+"</option>";
+            });
+            $("#area").empty().append(content);
+        }
+    });
+    ajax.set("code",cityCode);
+    ajax.start();
+}
+//添加区域
+SysCouponRecordInfoDlg.addScope = function () {
+    var subCode = '';
+    var area = $("#area").val();
+    if(null == area || '' == area){
+        var city = $("#city").val();
+        if(null == city || '' == city){
+            var province = $("#province").val();
+            subCode = province;
+        }else{
+            subCode = city;
+        }
+    }else{
+        subCode = area;
+    }
+    
+    if ("" == subCode){
+        Feng.info("请选择适用城市");
+        return;
+    }
+    var subArr=[];
+    $(".timeClass").each(function () {
+        subArr.push($(this).find("input[name*='code']").val())
+    });
+    for(var i=0;i<subArr.length;i++){
+        var code = subArr[i];
+        if (subCode == code) {
+            Feng.info("适用城市已存在,请重新选择");
+            return;
+        }
+    }
+    var provinceValue = $("#province option:selected").text();
+    var cityValue = "";
+    if (city != ""){
+        cityValue = $("#city option:selected").text();
+    }
+    var areaValue = "";
+    if (area != ""){
+        areaValue = $("#area option:selected").text();
+    }
+    
+    var str = '<tr class="timeClass"><td>' +
+            '<input type="hidden" id="code" name="code" value="'+subCode+'">'+provinceValue+cityValue+areaValue+'</td>' +
+            '<td><button onclick="deleteSub(this)">移除</button></td></tr>';
+    $("#conn").append(str);
+}
+
+function deleteSub(e) {
+    $(e).parent().parent().remove();
+}
+
 /**
  * 提交修改
  */
@@ -125,7 +217,16 @@
 
     this.clearData();
     this.collectData();
-
+    
+    var subArr=[];
+    $(".timeClass").each(function () {
+        subArr.push($(this).find("input[name*='code']").val())
+    });
+    if(subArr.length <= 0){
+        Feng.error("请选择适用城市");
+        return;
+    }
+    this.sysCouponRecordInfoData.citys = JSON.stringify(subArr);
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/sysCouponRecord/update", function(data){
         Feng.success("修改成功!");

--
Gitblit v1.7.1