From 83ff381c5c0e62c98cb9e3dd8e1d82771b1dc23f Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期四, 30 四月 2026 09:54:42 +0800
Subject: [PATCH] fix

---
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TLineController.java |  119 +++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 83 insertions(+), 36 deletions(-)

diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TLineController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TLineController.java
index 2214c06..346a518 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TLineController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TLineController.java
@@ -454,14 +454,20 @@
     @RequestMapping(value = "/schedulePage")
     public String schedulePage(Integer lineId, Integer companyId, Model model) {
         TLine line = tLineService.selectById(lineId);
-        TCompany company = itCompanyService.selectById(companyId);
-        TLineCompany lineCompany = itLineCompanyService.selectOne(new EntityWrapper<TLineCompany>()
-                .eq("lineId", lineId).eq("companyId", companyId));
+        List<TLineCompany> lineCompanies = getLineCompanies(lineId);
+        TLineCompany currentLineCompany = null;
+        if (companyId != null) {
+            currentLineCompany = checkLineCompany(lineId, companyId);
+        }
+        if (currentLineCompany == null && lineCompanies.size() > 0) {
+            currentLineCompany = lineCompanies.get(0);
+            companyId = currentLineCompany.getCompanyId();
+        }
         model.addAttribute("lineId", lineId);
         model.addAttribute("companyId", companyId);
         model.addAttribute("lineName", line == null ? "" : line.getName());
-        model.addAttribute("companyName", company == null ? "" : company.getName());
-        model.addAttribute("autoPlan", lineCompany == null || lineCompany.getAutoPlan() == null ? 2 : lineCompany.getAutoPlan());
+        model.addAttribute("companyName", getLineCompanyNames(lineCompanies));
+        model.addAttribute("autoPlan", currentLineCompany == null || currentLineCompany.getAutoPlan() == null ? 2 : currentLineCompany.getAutoPlan());
         return PREFIX + "tLine_schedule.html";
     }
 
@@ -472,9 +478,8 @@
     @ResponseBody
     public Object scheduleMonth(Integer lineId, Integer companyId, String month) {
         try {
-            TLineCompany lineCompany = checkLineCompany(lineId, companyId);
-            if (lineCompany == null) {
-                return ResultUtil.error("线路未关联该企业");
+            if (!hasLineCompanies(lineId)) {
+                return ResultUtil.error("线路未关联企业");
             }
             if (SinataUtil.isEmpty(month)) {
                 month = new SimpleDateFormat("yyyy-MM").format(new Date());
@@ -489,8 +494,7 @@
             cal.set(Calendar.DAY_OF_MONTH, maxDay);
             String monthEnd = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
 
-            Integer companyType = getCompanyType(companyId);
-            List<Map<String, Object>> stats = lineShiftDriverMapper.getMonthScheduleStats(lineId, monthStart, monthEnd, companyId, companyType);
+            List<Map<String, Object>> stats = lineShiftDriverMapper.getMonthScheduleStats(lineId, monthStart, monthEnd, companyId, null);
             Map<String, Integer> dayAssignMap = new HashMap<>();
             for (Map<String, Object> stat : stats) {
                 dayAssignMap.put(String.valueOf(stat.get("dayStr")), Integer.parseInt(String.valueOf(stat.get("assignNum"))));
@@ -542,15 +546,13 @@
     @ResponseBody
     public Object scheduleDayDetail(Integer lineId, Integer companyId, String day) {
         try {
-            TLineCompany lineCompany = checkLineCompany(lineId, companyId);
-            if (lineCompany == null) {
-                return ResultUtil.error("线路未关联该企业");
+            if (!hasLineCompanies(lineId)) {
+                return ResultUtil.error("线路未关联企业");
             }
-            Integer companyType = getCompanyType(companyId);
-            List<Map<String, Object>> shiftList = lineShiftDriverMapper.getDayShiftSchedule(lineId, day, companyId, companyType);
+            List<Map<String, Object>> shiftList = lineShiftDriverMapper.getDayShiftSchedule(lineId, day, companyId, null);
             for (Map<String, Object> shift : shiftList) {
                 Integer lineShiftId = Integer.valueOf(String.valueOf(shift.get("lineShiftId")));
-                List<Map<String, Object>> drivers = lineShiftDriverMapper.getDayShiftDrivers(lineShiftId, day, companyId, companyType);
+                List<Map<String, Object>> drivers = lineShiftDriverMapper.getDayShiftDrivers(lineShiftId, day, companyId, null);
                 int carNum = shift.get("carNum") == null ? 0 : Integer.parseInt(String.valueOf(shift.get("carNum")));
                 int assignNum = shift.get("assignNum") == null ? 0 : Integer.parseInt(String.valueOf(shift.get("assignNum")));
                 shift.put("drivers", drivers);
@@ -571,12 +573,10 @@
     @ResponseBody
     public Object scheduleDrivers(Integer lineId, Integer companyId, Integer lineShiftId, String day) {
         try {
-            TLineCompany lineCompany = checkLineCompany(lineId, companyId);
-            if (lineCompany == null) {
-                return ResultUtil.error("线路未关联该企业");
+            if (!hasLineCompanies(lineId)) {
+                return ResultUtil.error("线路未关联企业");
             }
-            Integer companyType = getCompanyType(companyId);
-            return ResultUtil.success(lineShiftDriverMapper.getAvailableDrivers(lineId, lineShiftId, day, companyId, companyType));
+            return ResultUtil.success(lineShiftDriverMapper.getAvailableDrivers(lineId, lineShiftId, day, companyId, null));
         } catch (Exception ex) {
             ex.printStackTrace();
             return ResultUtil.runErr();
@@ -590,17 +590,15 @@
     @ResponseBody
     public Object scheduleAdd(Integer lineId, Integer companyId, Integer lineShiftId, String day, @RequestParam String driverIds) {
         try {
-            TLineCompany lineCompany = checkLineCompany(lineId, companyId);
-            if (lineCompany == null) {
-                return ResultUtil.error("线路未关联该企业");
+            if (!hasLineCompanies(lineId)) {
+                return ResultUtil.error("线路未关联企业");
             }
             TLineShift shift = itLineShiftService.selectById(lineShiftId);
             if (shift == null || shift.getState() == 3 || !shift.getLineId().equals(lineId)) {
                 return ResultUtil.error("班次不存在");
             }
             Date dayDate = parseDay(day);
-            Integer companyType = getCompanyType(companyId);
-            List<Map<String, Object>> currentDrivers = lineShiftDriverMapper.getDayShiftDrivers(lineShiftId, day, companyId, companyType);
+            List<Map<String, Object>> currentDrivers = lineShiftDriverMapper.getDayShiftDrivers(lineShiftId, day, companyId, null);
             int currentAssignNum = currentDrivers == null ? 0 : currentDrivers.size();
             int carNum = shift.getCarNum() == null ? 0 : shift.getCarNum();
             if (currentAssignNum >= carNum) {
@@ -611,7 +609,7 @@
             if (driverIdList.size() <= 0) {
                 return ResultUtil.error("请选择司机");
             }
-            List<Map<String, Object>> availableDrivers = lineShiftDriverMapper.getAvailableDrivers(lineId, lineShiftId, day, companyId, companyType);
+            List<Map<String, Object>> availableDrivers = lineShiftDriverMapper.getAvailableDrivers(lineId, lineShiftId, day, companyId, null);
             Map<Integer, Integer> seatMap = new HashMap<>();
             for (Map<String, Object> driver : availableDrivers) {
                 Integer driverId = Integer.valueOf(String.valueOf(driver.get("driverId")));
@@ -665,9 +663,8 @@
     @ResponseBody
     public Object scheduleDelete(Integer scheduleId, Integer lineId, Integer companyId) {
         try {
-            TLineCompany lineCompany = checkLineCompany(lineId, companyId);
-            if (lineCompany == null) {
-                return ResultUtil.error("线路未关联该企业");
+            if (!hasLineCompanies(lineId)) {
+                return ResultUtil.error("线路未关联企业");
             }
             LineShiftDriver record = lineShiftDriverMapper.selectById(scheduleId);
             if (record == null) {
@@ -681,7 +678,7 @@
                 return ResultUtil.error("排班记录线路不匹配");
             }
             TDriver driver = tDriverService.selectById(record.getDriverId());
-            if (driver == null || !checkDriverBelongCompany(driver, companyId)) {
+            if (driver == null || !checkDriverBelongLineCompanies(driver, lineId)) {
                 return ResultUtil.error("司机企业信息不匹配");
             }
             lineShiftDriverMapper.deleteById(scheduleId);
@@ -699,9 +696,8 @@
     @ResponseBody
     public Object scheduleCopy(Integer lineId, Integer companyId, String sourceStart, String sourceEnd, String targetStart) {
         try {
-            TLineCompany lineCompany = checkLineCompany(lineId, companyId);
-            if (lineCompany == null) {
-                return ResultUtil.error("线路未关联该企业");
+            if (!hasLineCompanies(lineId)) {
+                return ResultUtil.error("线路未关联企业");
             }
             Date sourceStartDate = parseDay(sourceStart);
             Date sourceEndDate = parseDay(sourceEnd);
@@ -709,8 +705,7 @@
             if (sourceEndDate.before(sourceStartDate)) {
                 return ResultUtil.error("复制结束日期不能早于开始日期");
             }
-            Integer companyType = getCompanyType(companyId);
-            List<LineShiftDriver> sourceList = lineShiftDriverMapper.getManualSchedulesForCopy(lineId, sourceStart, sourceEnd, companyId, companyType);
+            List<LineShiftDriver> sourceList = lineShiftDriverMapper.getManualSchedulesForCopy(lineId, sourceStart, sourceEnd, companyId, null);
             int addNum = 0;
             int skipNum = 0;
             for (LineShiftDriver source : sourceList) {
@@ -752,6 +747,9 @@
     public Object scheduleAutoPlan(Integer lineId, Integer companyId, Integer autoPlan) {
         if (autoPlan == null || (autoPlan != 1 && autoPlan != 2)) {
             return ResultUtil.error("智能排班参数错误");
+        }
+        if (companyId == null) {
+            companyId = getDefaultLineCompanyId(lineId);
         }
         TLineCompany lineCompany = checkLineCompany(lineId, companyId);
         if (lineCompany == null) {
@@ -944,6 +942,42 @@
         return itLineCompanyService.selectOne(new EntityWrapper<TLineCompany>().eq("lineId", lineId).eq("companyId", companyId));
     }
 
+    private List<TLineCompany> getLineCompanies(Integer lineId) {
+        if (lineId == null) {
+            return new ArrayList<>();
+        }
+        return itLineCompanyService.selectList(new EntityWrapper<TLineCompany>().eq("lineId", lineId).orderBy("id", true));
+    }
+
+    private boolean hasLineCompanies(Integer lineId) {
+        return getLineCompanies(lineId).size() > 0;
+    }
+
+    private Integer getDefaultLineCompanyId(Integer lineId) {
+        List<TLineCompany> lineCompanies = getLineCompanies(lineId);
+        if (lineCompanies.size() <= 0) {
+            return null;
+        }
+        return lineCompanies.get(0).getCompanyId();
+    }
+
+    private String getLineCompanyNames(List<TLineCompany> lineCompanies) {
+        if (lineCompanies == null || lineCompanies.size() <= 0) {
+            return "";
+        }
+        List<String> names = new ArrayList<>();
+        for (TLineCompany lineCompany : lineCompanies) {
+            if (lineCompany == null || lineCompany.getCompanyId() == null) {
+                continue;
+            }
+            TCompany company = itCompanyService.selectById(lineCompany.getCompanyId());
+            if (company != null && SinataUtil.isNotEmpty(company.getName())) {
+                names.add(company.getName());
+            }
+        }
+        return String.join("、", names);
+    }
+
     private Integer getCompanyType(Integer companyId) {
         TCompany company = itCompanyService.selectById(companyId);
         return company == null ? null : company.getType();
@@ -966,6 +1000,19 @@
         return false;
     }
 
+    private boolean checkDriverBelongLineCompanies(TDriver driver, Integer lineId) {
+        if (driver == null || lineId == null) {
+            return false;
+        }
+        List<TLineCompany> lineCompanies = getLineCompanies(lineId);
+        for (TLineCompany lineCompany : lineCompanies) {
+            if (checkDriverBelongCompany(driver, lineCompany.getCompanyId())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     private Date parseDay(String day) throws Exception {
         return new SimpleDateFormat("yyyy-MM-dd").parse(day);
     }

--
Gitblit v1.7.1