Commit 4f0d16f3515399c12867dde38401c1a66f8a82fc
Merge branch 'minhang' of http://192.168.168.201:8888/panzhaov5/bsth_control into minhang
Showing
29 changed files
with
1635 additions
and
639 deletions
src/main/java/com/bsth/controller/realcontrol/BasicDataController.java
| 1 | package com.bsth.controller.realcontrol; | 1 | package com.bsth.controller.realcontrol; |
| 2 | 2 | ||
| 3 | -import java.util.HashMap; | ||
| 4 | -import java.util.List; | ||
| 5 | -import java.util.Map; | ||
| 6 | - | ||
| 7 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
| 8 | -import org.springframework.web.bind.annotation.RestController; | ||
| 9 | - | ||
| 10 | import com.alibaba.fastjson.JSON; | 3 | import com.alibaba.fastjson.JSON; |
| 11 | import com.alibaba.fastjson.serializer.PropertyFilter; | 4 | import com.alibaba.fastjson.serializer.PropertyFilter; |
| 12 | import com.bsth.data.BasicData; | 5 | import com.bsth.data.BasicData; |
| 6 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 7 | +import org.springframework.web.bind.annotation.RestController; | ||
| 8 | + | ||
| 9 | +import java.util.HashMap; | ||
| 10 | +import java.util.List; | ||
| 11 | +import java.util.Map; | ||
| 13 | 12 | ||
| 14 | @RestController | 13 | @RestController |
| 15 | @RequestMapping("/basic") | 14 | @RequestMapping("/basic") |
src/main/java/com/bsth/controller/schedule/basicinfo/CarDeviceController.java
| 1 | -package com.bsth.controller.schedule.basicinfo; | ||
| 2 | - | ||
| 3 | -import com.bsth.common.ResponseCode; | ||
| 4 | -import com.bsth.controller.schedule.BController; | ||
| 5 | -import com.bsth.entity.CarDevice; | ||
| 6 | -import com.bsth.service.schedule.CarDeviceService; | ||
| 7 | -import com.bsth.service.schedule.ScheduleException; | ||
| 8 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 9 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
| 10 | -import org.springframework.web.bind.annotation.RequestMethod; | ||
| 11 | -import org.springframework.web.bind.annotation.RequestParam; | ||
| 12 | -import org.springframework.web.bind.annotation.RestController; | ||
| 13 | - | ||
| 14 | -import java.util.HashMap; | ||
| 15 | -import java.util.Map; | ||
| 16 | - | ||
| 17 | -/** | ||
| 18 | - * Created by xu on 16/12/15. | ||
| 19 | - */ | ||
| 20 | -@RestController(value = "carDeviceController_sc") | ||
| 21 | -@RequestMapping("cde_sc") | ||
| 22 | -public class CarDeviceController extends BController<CarDevice, Long> { | ||
| 23 | - @Autowired | ||
| 24 | - private CarDeviceService carDeviceService; | ||
| 25 | - | ||
| 26 | - @RequestMapping(value = "/validate_qyrq", method = RequestMethod.GET) | ||
| 27 | - public Map<String, Object> validate_qyrq(@RequestParam Map<String, Object> param) { | ||
| 28 | - Map<String, Object> rtn = new HashMap<>(); | ||
| 29 | - | ||
| 30 | - try { | ||
| 31 | - // 启用日期验证 | ||
| 32 | - CarDevice carDevice = new CarDevice( | ||
| 33 | - param.get("id_eq"), | ||
| 34 | - param.get("xl_eq"), | ||
| 35 | - param.get("cl_eq"), | ||
| 36 | - param.get("qyrq_eq") | ||
| 37 | - ); | ||
| 38 | - carDeviceService.validate_qyrq(carDevice); | ||
| 39 | - rtn.put("status", ResponseCode.SUCCESS); | ||
| 40 | - } catch (ScheduleException exp) { | ||
| 41 | - rtn.put("status", ResponseCode.ERROR); | ||
| 42 | - rtn.put("msg", exp.getMessage()); | ||
| 43 | - } | ||
| 44 | - | ||
| 45 | - return rtn; | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | -} | 1 | +package com.bsth.controller.schedule.basicinfo; |
| 2 | + | ||
| 3 | +import com.bsth.common.ResponseCode; | ||
| 4 | +import com.bsth.controller.schedule.BController; | ||
| 5 | +import com.bsth.entity.CarDevice; | ||
| 6 | +import com.bsth.service.schedule.CarDeviceService; | ||
| 7 | +import com.bsth.service.schedule.ScheduleException; | ||
| 8 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 9 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 10 | +import org.springframework.web.bind.annotation.RequestMethod; | ||
| 11 | +import org.springframework.web.bind.annotation.RequestParam; | ||
| 12 | +import org.springframework.web.bind.annotation.RestController; | ||
| 13 | + | ||
| 14 | +import java.util.HashMap; | ||
| 15 | +import java.util.Map; | ||
| 16 | + | ||
| 17 | +/** | ||
| 18 | + * Created by xu on 16/12/15. | ||
| 19 | + */ | ||
| 20 | +@RestController(value = "carDeviceController_sc") | ||
| 21 | +@RequestMapping("cde_sc") | ||
| 22 | +public class CarDeviceController extends BController<CarDevice, Long> { | ||
| 23 | + @Autowired | ||
| 24 | + private CarDeviceService carDeviceService; | ||
| 25 | + | ||
| 26 | + @RequestMapping(value = "/validate_qyrq", method = RequestMethod.GET) | ||
| 27 | + public Map<String, Object> validate_qyrq(@RequestParam Map<String, Object> param) { | ||
| 28 | + Map<String, Object> rtn = new HashMap<>(); | ||
| 29 | + | ||
| 30 | + try { | ||
| 31 | + // 启用日期验证 | ||
| 32 | + CarDevice carDevice = new CarDevice( | ||
| 33 | + param.get("id_eq"), | ||
| 34 | + param.get("xl_eq"), | ||
| 35 | + param.get("cl_eq"), | ||
| 36 | + param.get("qyrq_eq") | ||
| 37 | + ); | ||
| 38 | + carDeviceService.validate_qyrq(carDevice); | ||
| 39 | + rtn.put("status", ResponseCode.SUCCESS); | ||
| 40 | + } catch (ScheduleException exp) { | ||
| 41 | + rtn.put("status", ResponseCode.ERROR); | ||
| 42 | + rtn.put("msg", exp.getMessage()); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + return rtn; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | +} |
src/main/java/com/bsth/controller/schedule/basicinfo/EmployeeController.java
| 1 | -package com.bsth.controller.schedule.basicinfo; | ||
| 2 | - | ||
| 3 | -import com.bsth.common.ResponseCode; | ||
| 4 | -import com.bsth.controller.schedule.BController; | ||
| 5 | -import com.bsth.entity.Personnel; | ||
| 6 | -import com.bsth.service.schedule.EmployeeService; | ||
| 7 | -import com.bsth.service.schedule.ScheduleException; | ||
| 8 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 9 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
| 10 | -import org.springframework.web.bind.annotation.RequestMethod; | ||
| 11 | -import org.springframework.web.bind.annotation.RequestParam; | ||
| 12 | -import org.springframework.web.bind.annotation.RestController; | ||
| 13 | - | ||
| 14 | -import java.util.HashMap; | ||
| 15 | -import java.util.Map; | ||
| 16 | - | ||
| 17 | -/** | ||
| 18 | - * 人员基础信息Controller | ||
| 19 | - */ | ||
| 20 | -@RestController | ||
| 21 | -@RequestMapping("ee") | ||
| 22 | -public class EmployeeController extends BController<Personnel, Integer> { | ||
| 23 | - @Autowired | ||
| 24 | - private EmployeeService employeeService; | ||
| 25 | - | ||
| 26 | - @RequestMapping(value = "/validate_gh", method = RequestMethod.GET) | ||
| 27 | - public Map<String, Object> validate_gh(@RequestParam Map<String, Object> param) { | ||
| 28 | - Map<String, Object> rtn = new HashMap<>(); | ||
| 29 | - try { | ||
| 30 | - // 工号验证 | ||
| 31 | - Personnel personnel = new Personnel( | ||
| 32 | - param.get("id_eq"), | ||
| 33 | - param.get("companyCode_eq"), | ||
| 34 | - param.get("jobCode_eq") | ||
| 35 | - ); | ||
| 36 | - employeeService.validate_gh(personnel); | ||
| 37 | - rtn.put("status", ResponseCode.SUCCESS); | ||
| 38 | - } catch (ScheduleException exp) { | ||
| 39 | - rtn.put("status", ResponseCode.ERROR); | ||
| 40 | - rtn.put("msg", exp.getMessage()); | ||
| 41 | - } | ||
| 42 | - | ||
| 43 | - return rtn; | ||
| 44 | - } | ||
| 45 | -} | 1 | +package com.bsth.controller.schedule.basicinfo; |
| 2 | + | ||
| 3 | +import com.bsth.common.ResponseCode; | ||
| 4 | +import com.bsth.controller.schedule.BController; | ||
| 5 | +import com.bsth.entity.Personnel; | ||
| 6 | +import com.bsth.service.schedule.EmployeeService; | ||
| 7 | +import com.bsth.service.schedule.ScheduleException; | ||
| 8 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 9 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 10 | +import org.springframework.web.bind.annotation.RequestMethod; | ||
| 11 | +import org.springframework.web.bind.annotation.RequestParam; | ||
| 12 | +import org.springframework.web.bind.annotation.RestController; | ||
| 13 | + | ||
| 14 | +import java.util.HashMap; | ||
| 15 | +import java.util.Map; | ||
| 16 | + | ||
| 17 | +/** | ||
| 18 | + * 人员基础信息Controller | ||
| 19 | + */ | ||
| 20 | +@RestController | ||
| 21 | +@RequestMapping("ee") | ||
| 22 | +public class EmployeeController extends BController<Personnel, Integer> { | ||
| 23 | + @Autowired | ||
| 24 | + private EmployeeService employeeService; | ||
| 25 | + | ||
| 26 | + @RequestMapping(value = "/validate_gh", method = RequestMethod.GET) | ||
| 27 | + public Map<String, Object> validate_gh(@RequestParam Map<String, Object> param) { | ||
| 28 | + Map<String, Object> rtn = new HashMap<>(); | ||
| 29 | + try { | ||
| 30 | + // 工号验证 | ||
| 31 | + Personnel personnel = new Personnel( | ||
| 32 | + param.get("id_eq"), | ||
| 33 | + param.get("companyCode_eq"), | ||
| 34 | + param.get("jobCode_eq") | ||
| 35 | + ); | ||
| 36 | + employeeService.validate_gh(personnel); | ||
| 37 | + rtn.put("status", ResponseCode.SUCCESS); | ||
| 38 | + } catch (ScheduleException exp) { | ||
| 39 | + rtn.put("status", ResponseCode.ERROR); | ||
| 40 | + rtn.put("msg", exp.getMessage()); | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + return rtn; | ||
| 44 | + } | ||
| 45 | +} |
src/main/java/com/bsth/entity/realcontrol/ChildTaskPlan.java
| 1 | package com.bsth.entity.realcontrol; | 1 | package com.bsth.entity.realcontrol; |
| 2 | 2 | ||
| 3 | -import javax.persistence.Entity; | ||
| 4 | -import javax.persistence.FetchType; | ||
| 5 | -import javax.persistence.GeneratedValue; | ||
| 6 | -import javax.persistence.Id; | ||
| 7 | -import javax.persistence.ManyToOne; | ||
| 8 | -import javax.persistence.NamedAttributeNode; | ||
| 9 | -import javax.persistence.NamedEntityGraph; | ||
| 10 | -import javax.persistence.NamedEntityGraphs; | ||
| 11 | -import javax.persistence.Table; | ||
| 12 | - | ||
| 13 | import com.fasterxml.jackson.annotation.JsonIgnore; | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; |
| 14 | 4 | ||
| 5 | +import javax.persistence.*; | ||
| 6 | +import java.util.Date; | ||
| 7 | + | ||
| 15 | 8 | ||
| 16 | /** | 9 | /** |
| 17 | * | 10 | * |
| @@ -95,6 +88,10 @@ public class ChildTaskPlan { | @@ -95,6 +88,10 @@ public class ChildTaskPlan { | ||
| 95 | */ | 88 | */ |
| 96 | private String destroyReason; | 89 | private String destroyReason; |
| 97 | 90 | ||
| 91 | + /** 创建日期 */ | ||
| 92 | + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") | ||
| 93 | + private Date createDate; | ||
| 94 | + | ||
| 98 | /** | 95 | /** |
| 99 | * 主排班计划 | 96 | * 主排班计划 |
| 100 | */ | 97 | */ |
| @@ -233,4 +230,12 @@ public class ChildTaskPlan { | @@ -233,4 +230,12 @@ public class ChildTaskPlan { | ||
| 233 | public boolean equals(Object obj) { | 230 | public boolean equals(Object obj) { |
| 234 | return this.id.equals(((ChildTaskPlan)obj).getId()); | 231 | return this.id.equals(((ChildTaskPlan)obj).getId()); |
| 235 | } | 232 | } |
| 233 | + | ||
| 234 | + public Date getCreateDate() { | ||
| 235 | + return createDate; | ||
| 236 | + } | ||
| 237 | + | ||
| 238 | + public void setCreateDate(Date createDate) { | ||
| 239 | + this.createDate = createDate; | ||
| 240 | + } | ||
| 236 | } | 241 | } |
src/main/java/com/bsth/entity/schedule/BEntity.java
| 1 | -package com.bsth.entity.schedule; | ||
| 2 | - | ||
| 3 | -import com.bsth.entity.sys.SysUser; | ||
| 4 | - | ||
| 5 | -import javax.persistence.*; | ||
| 6 | -import java.util.Date; | ||
| 7 | - | ||
| 8 | -/** | ||
| 9 | - * Created by xu on 16/12/14. | ||
| 10 | - */ | ||
| 11 | -@MappedSuperclass | ||
| 12 | -public class BEntity { | ||
| 13 | - | ||
| 14 | - /** 创建人 */ | ||
| 15 | - @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) | ||
| 16 | - private SysUser createBy; | ||
| 17 | - /** 修改人 */ | ||
| 18 | - @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) | ||
| 19 | - private SysUser updateBy; | ||
| 20 | - | ||
| 21 | - /** 创建日期 */ | ||
| 22 | - @Column(updatable = false, name = "create_date") | ||
| 23 | - private Date createDate; | ||
| 24 | - /** 修改日期 */ | ||
| 25 | - @Column(name = "update_date") | ||
| 26 | - private Date updateDate; | ||
| 27 | - | ||
| 28 | - public SysUser getCreateBy() { | ||
| 29 | - return createBy; | ||
| 30 | - } | ||
| 31 | - | ||
| 32 | - public void setCreateBy(SysUser createBy) { | ||
| 33 | - this.createBy = createBy; | ||
| 34 | - } | ||
| 35 | - | ||
| 36 | - public SysUser getUpdateBy() { | ||
| 37 | - return updateBy; | ||
| 38 | - } | ||
| 39 | - | ||
| 40 | - public void setUpdateBy(SysUser updateBy) { | ||
| 41 | - this.updateBy = updateBy; | ||
| 42 | - } | ||
| 43 | - | ||
| 44 | - public Date getCreateDate() { | ||
| 45 | - return createDate; | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | - public void setCreateDate(Date createDate) { | ||
| 49 | - this.createDate = createDate; | ||
| 50 | - } | ||
| 51 | - | ||
| 52 | - public Date getUpdateDate() { | ||
| 53 | - return updateDate; | ||
| 54 | - } | ||
| 55 | - | ||
| 56 | - public void setUpdateDate(Date updateDate) { | ||
| 57 | - this.updateDate = updateDate; | ||
| 58 | - } | ||
| 59 | -} | 1 | +package com.bsth.entity.schedule; |
| 2 | + | ||
| 3 | +import com.bsth.entity.sys.SysUser; | ||
| 4 | + | ||
| 5 | +import javax.persistence.*; | ||
| 6 | +import java.util.Date; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * Created by xu on 16/12/14. | ||
| 10 | + */ | ||
| 11 | +@MappedSuperclass | ||
| 12 | +public class BEntity { | ||
| 13 | + | ||
| 14 | + /** 创建人 */ | ||
| 15 | + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) | ||
| 16 | + private SysUser createBy; | ||
| 17 | + /** 修改人 */ | ||
| 18 | + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) | ||
| 19 | + private SysUser updateBy; | ||
| 20 | + | ||
| 21 | + /** 创建日期 */ | ||
| 22 | + @Column(updatable = false, name = "create_date") | ||
| 23 | + private Date createDate; | ||
| 24 | + /** 修改日期 */ | ||
| 25 | + @Column(name = "update_date") | ||
| 26 | + private Date updateDate; | ||
| 27 | + | ||
| 28 | + public SysUser getCreateBy() { | ||
| 29 | + return createBy; | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + public void setCreateBy(SysUser createBy) { | ||
| 33 | + this.createBy = createBy; | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + public SysUser getUpdateBy() { | ||
| 37 | + return updateBy; | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + public void setUpdateBy(SysUser updateBy) { | ||
| 41 | + this.updateBy = updateBy; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + public Date getCreateDate() { | ||
| 45 | + return createDate; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + public void setCreateDate(Date createDate) { | ||
| 49 | + this.createDate = createDate; | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + public Date getUpdateDate() { | ||
| 53 | + return updateDate; | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + public void setUpdateDate(Date updateDate) { | ||
| 57 | + this.updateDate = updateDate; | ||
| 58 | + } | ||
| 59 | +} |
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
| 1 | package com.bsth.repository.realcontrol; | 1 | package com.bsth.repository.realcontrol; |
| 2 | 2 | ||
| 3 | -import java.util.List; | ||
| 4 | -import java.util.Map; | ||
| 5 | - | ||
| 6 | -import javax.transaction.Transactional; | ||
| 7 | - | 3 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 4 | +import com.bsth.repository.BaseRepository; | ||
| 8 | import org.springframework.data.jpa.repository.EntityGraph; | 5 | import org.springframework.data.jpa.repository.EntityGraph; |
| 9 | import org.springframework.data.jpa.repository.Modifying; | 6 | import org.springframework.data.jpa.repository.Modifying; |
| 10 | import org.springframework.data.jpa.repository.Query; | 7 | import org.springframework.data.jpa.repository.Query; |
| 11 | import org.springframework.stereotype.Repository; | 8 | import org.springframework.stereotype.Repository; |
| 12 | 9 | ||
| 13 | -import com.bsth.entity.realcontrol.ScheduleRealInfo; | ||
| 14 | -import com.bsth.repository.BaseRepository; | 10 | +import javax.transaction.Transactional; |
| 11 | +import java.util.List; | ||
| 12 | +import java.util.Map; | ||
| 15 | 13 | ||
| 16 | @Repository | 14 | @Repository |
| 17 | public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealInfo, Long>{ | 15 | public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealInfo, Long>{ |
| @@ -35,11 +33,13 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI | @@ -35,11 +33,13 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI | ||
| 35 | + " s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 group by clZbh,jGh,jName") | 33 | + " s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 group by clZbh,jGh,jName") |
| 36 | List<Map<String, Object>> dailyInfo(String line,String date); | 34 | List<Map<String, Object>> dailyInfo(String line,String date); |
| 37 | 35 | ||
| 38 | - @Query(value="SELECT r.xl_name,r.lp_name,r.cl_zbh,d.sender,d.timestamp," | ||
| 39 | - + " d.txt_content FROM bsth_c_s_sp_info_real r RIGHT JOIN bsth_v_directive_60 " | ||
| 40 | - + "d ON r.id = d.sch WHERE d.is_dispatch = 1 AND r.xl_bm like %?1% AND " | ||
| 41 | - + " DATE_FORMAT(r.schedule_date,'%Y-%m-%d') = ?2 and r.cl_zbh like %?3% order by d.timestamp",nativeQuery=true) | ||
| 42 | - List<Object[]> historyMessage(String line,String date,String code); | 36 | + @Query(value="select t.car_code,d.sender,d.txt_content,d.timestamp,0 as xlbm from (" |
| 37 | + + " select equipment_code,car_code from bsth_c_cars where id in(" | ||
| 38 | + + " select cl from bsth_c_s_ccinfo where xl in ( " | ||
| 39 | + + " select id from bsth_c_line where line_code=?1 ))) t" | ||
| 40 | + + " left join bsth_v_directive_60 d on t.equipment_code=d.device_id " | ||
| 41 | + + " where d.timestamp >=?2 and d.timestamp <=?3 and t.car_code like %?4% ",nativeQuery=true) | ||
| 42 | + List<Object[]> historyMessage(String line,long d,long t,String code); | ||
| 43 | 43 | ||
| 44 | @Query(value="SELECT r.xl_name,r.lp_name,r.cl_zbh,count(*) as cs " | 44 | @Query(value="SELECT r.xl_name,r.lp_name,r.cl_zbh,count(*) as cs " |
| 45 | + " FROM bsth_c_s_sp_info_real r RIGHT JOIN bsth_v_directive_60 d " | 45 | + " FROM bsth_c_s_sp_info_real r RIGHT JOIN bsth_v_directive_60 d " |
| @@ -113,13 +113,13 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI | @@ -113,13 +113,13 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI | ||
| 113 | @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 ORDER BY xlBm,lpName,clZbh,xlDir") | 113 | @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 ORDER BY xlBm,lpName,clZbh,xlDir") |
| 114 | List<ScheduleRealInfo> setLD(String date); | 114 | List<ScheduleRealInfo> setLD(String date); |
| 115 | 115 | ||
| 116 | - @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm,lpName,clZbh ORDER BY xlBm,lpName,clZbh") | ||
| 117 | - List<ScheduleRealInfo> setLDGroup(String date); | 116 | + @Query(value="select new map(xlBm as xlBm,lpName as lpName,clZbh as clZbh) from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm,lpName,clZbh ORDER BY xlBm,lpName,clZbh") |
| 117 | + List<Map<String,Object>> setLDGroup(String date); | ||
| 118 | 118 | ||
| 119 | - @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm,clZbh ORDER BY xlBm,clZbh") | ||
| 120 | - List<ScheduleRealInfo> setLCYHGroup(String date); | 119 | + @Query(value="select new map(xlBm as xlBm,clZbh as clZbh) from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm,clZbh ORDER BY xlBm,clZbh") |
| 120 | + List<Map<String,Object>> setLCYHGroup(String date); | ||
| 121 | 121 | ||
| 122 | - @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm ORDER BY xlBm") | ||
| 123 | - List<ScheduleRealInfo> setDDRBGroup(String date); | 122 | + @Query(value="select new map(xlBm as xlBm) from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm ORDER BY xlBm") |
| 123 | + List<Map<String,Object>> setDDRBGroup(String date); | ||
| 124 | 124 | ||
| 125 | } | 125 | } |
src/main/java/com/bsth/service/forms/CommonService.java
0 → 100644
| 1 | +package com.bsth.service.forms; | ||
| 2 | + | ||
| 3 | +import java.util.Map; | ||
| 4 | + | ||
| 5 | +import org.springframework.stereotype.Service; | ||
| 6 | + | ||
| 7 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | ||
| 8 | +import com.bsth.service.BaseService; | ||
| 9 | + | ||
| 10 | +@Service | ||
| 11 | +public interface CommonService{ | ||
| 12 | + | ||
| 13 | + Map<String,Object> findKMBC1(String jName,String clZbh, String date,String enddate); | ||
| 14 | + | ||
| 15 | + Map<String,Object> findKMBC2(String jName,String clZbh,String date); | ||
| 16 | +} |
src/main/java/com/bsth/service/forms/impl/CommonServiceImpl.java
0 → 100644
| 1 | +package com.bsth.service.forms.impl; | ||
| 2 | + | ||
| 3 | +import java.text.DecimalFormat; | ||
| 4 | +import java.util.HashMap; | ||
| 5 | +import java.util.Iterator; | ||
| 6 | +import java.util.List; | ||
| 7 | +import java.util.Map; | ||
| 8 | +import java.util.Set; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.stereotype.Service; | ||
| 11 | +import com.bsth.entity.realcontrol.ChildTaskPlan; | ||
| 12 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | ||
| 13 | +import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | ||
| 14 | +import com.bsth.service.forms.CommonService; | ||
| 15 | + | ||
| 16 | +@Service | ||
| 17 | +public class CommonServiceImpl implements CommonService{ | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + @Autowired | ||
| 21 | + ScheduleRealInfoRepository scheduleRealInfoRepository; | ||
| 22 | + | ||
| 23 | + @Override | ||
| 24 | + public Map<String, Object> findKMBC1(String jName, String clZbh, | ||
| 25 | + String date, String enddate) { | ||
| 26 | + | ||
| 27 | + String sql=" select s from bsth_c_s_sp_info_real s " | ||
| 28 | + + " where s.j_gh ='" + jName + "' and s.cl_zbh ='" + clZbh + "' and " | ||
| 29 | + + " to_days(s.schedule_date) BETWEEN to_days('" + date + "') and to_days('" + enddate + "')" | ||
| 30 | + + " order by bcs"; | ||
| 31 | + | ||
| 32 | + | ||
| 33 | + List<ScheduleRealInfo> list = scheduleRealInfoRepository.queryListWaybill4(jName, clZbh, date, enddate); | ||
| 34 | + DecimalFormat format = new DecimalFormat("0.00"); | ||
| 35 | +// int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName); | ||
| 36 | +// int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName); | ||
| 37 | + int jhbc = 0,cjbc = 0,ljbc = 0; | ||
| 38 | + double jhlc = 0, yygl = 0, ksgl = 0,tempJhlc = 0; | ||
| 39 | + float addMileage = 0l,remMileage = 0l; | ||
| 40 | + Map<String,Object> map = new HashMap<String, Object>(); | ||
| 41 | + for(ScheduleRealInfo scheduleRealInfo : list){ | ||
| 42 | + if(scheduleRealInfo != null){ | ||
| 43 | + //计划里程(主任务过滤掉临加班次), | ||
| 44 | + //烂班里程(主任务烂班), | ||
| 45 | + //临加里程(主任务临加), | ||
| 46 | + //计划班次,烂班班次,增加班次 | ||
| 47 | + tempJhlc = scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc(); | ||
| 48 | + if(scheduleRealInfo.isSflj()){ | ||
| 49 | + addMileage += tempJhlc; | ||
| 50 | + ljbc++; | ||
| 51 | + }else{ | ||
| 52 | + jhlc += tempJhlc; | ||
| 53 | + jhbc++; | ||
| 54 | + if(scheduleRealInfo.getStatus() == -1){ | ||
| 55 | + remMileage += tempJhlc; | ||
| 56 | + cjbc++; | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); | ||
| 60 | + //计算营运里程,空驶里程 | ||
| 61 | + if(childTaskPlans.isEmpty()){ | ||
| 62 | + if(scheduleRealInfo.getBcType().equals("in") || scheduleRealInfo.getBcType().equals("out") | ||
| 63 | + || scheduleRealInfo.getBcType().equals("venting")){ | ||
| 64 | + ksgl += tempJhlc; | ||
| 65 | + }else{ | ||
| 66 | + yygl += tempJhlc; | ||
| 67 | + } | ||
| 68 | + }else{ | ||
| 69 | + Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); | ||
| 70 | + while(it.hasNext()){ | ||
| 71 | + ChildTaskPlan childTaskPlan = it.next(); | ||
| 72 | + if(childTaskPlan.getMileageType().equals("empty")){ | ||
| 73 | + ksgl += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); | ||
| 74 | + }else{ | ||
| 75 | + yygl += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); | ||
| 76 | + } | ||
| 77 | + } | ||
| 78 | + } | ||
| 79 | + } | ||
| 80 | + } | ||
| 81 | + map.put("jhlc", format.format(jhlc)); | ||
| 82 | + map.put("remMileage", format.format(remMileage)); | ||
| 83 | + map.put("addMileage", format.format(addMileage)); | ||
| 84 | + map.put("yygl", format.format(yygl)); | ||
| 85 | + map.put("ksgl", format.format(ksgl)); | ||
| 86 | + map.put("realMileage", format.format(yygl+ksgl)); | ||
| 87 | + map.put("jhbc", jhbc); | ||
| 88 | + map.put("cjbc", cjbc); | ||
| 89 | + map.put("ljbc", ljbc); | ||
| 90 | + map.put("sjbc", jhbc-cjbc+ljbc); | ||
| 91 | + return map; | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + | ||
| 95 | + @Override | ||
| 96 | + public Map<String, Object> findKMBC2(String jName, String clZbh,String date) { | ||
| 97 | + | ||
| 98 | + String sql=" select s from bsth_c_s_sp_info_real s " | ||
| 99 | + + " where s.j_gh ='" + jName + "' and s.cl_zbh ='" + clZbh + "' and " | ||
| 100 | + + " to_days(s.schedule_date) =to_days('" + date + "')" | ||
| 101 | + + " order by bcs"; | ||
| 102 | + | ||
| 103 | + | ||
| 104 | + List<ScheduleRealInfo> list = scheduleRealInfoRepository.queryListWaybill3(jName, clZbh , date); | ||
| 105 | + | ||
| 106 | + DecimalFormat format = new DecimalFormat("0.00"); | ||
| 107 | +// int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName); | ||
| 108 | +// int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName); | ||
| 109 | + int jhbc = 0,cjbc = 0,ljbc = 0; | ||
| 110 | + double jhlc = 0, yygl = 0, ksgl = 0,tempJhlc = 0; | ||
| 111 | + float addMileage = 0l,remMileage = 0l; | ||
| 112 | + String j_Name=""; | ||
| 113 | + Map<String,Object> map = new HashMap<String, Object>(); | ||
| 114 | + for(ScheduleRealInfo scheduleRealInfo : list){ | ||
| 115 | + if(scheduleRealInfo != null){ | ||
| 116 | + j_Name=scheduleRealInfo.getjName(); | ||
| 117 | + //计划里程(主任务过滤掉临加班次), | ||
| 118 | + //烂班里程(主任务烂班), | ||
| 119 | + //临加里程(主任务临加), | ||
| 120 | + //计划班次,烂班班次,增加班次 | ||
| 121 | + tempJhlc = scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc(); | ||
| 122 | + if(scheduleRealInfo.isSflj()){ | ||
| 123 | + addMileage += tempJhlc; | ||
| 124 | + ljbc++; | ||
| 125 | + }else{ | ||
| 126 | + jhlc += tempJhlc; | ||
| 127 | + jhbc++; | ||
| 128 | + if(scheduleRealInfo.getStatus() == -1){ | ||
| 129 | + remMileage += tempJhlc; | ||
| 130 | + cjbc++; | ||
| 131 | + } | ||
| 132 | + } | ||
| 133 | + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); | ||
| 134 | + //计算营运里程,空驶里程 | ||
| 135 | + if(childTaskPlans.isEmpty()){ | ||
| 136 | + if(scheduleRealInfo.getBcType().equals("in") || scheduleRealInfo.getBcType().equals("out") | ||
| 137 | + || scheduleRealInfo.getBcType().equals("venting")){ | ||
| 138 | + ksgl += tempJhlc; | ||
| 139 | + }else{ | ||
| 140 | + yygl += tempJhlc; | ||
| 141 | + } | ||
| 142 | + }else{ | ||
| 143 | + Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); | ||
| 144 | + while(it.hasNext()){ | ||
| 145 | + ChildTaskPlan childTaskPlan = it.next(); | ||
| 146 | + if(childTaskPlan.getMileageType().equals("empty")){ | ||
| 147 | + ksgl += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); | ||
| 148 | + }else{ | ||
| 149 | + yygl += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); | ||
| 150 | + } | ||
| 151 | + } | ||
| 152 | + } | ||
| 153 | + } | ||
| 154 | + } | ||
| 155 | + map.put("j_name", j_Name); | ||
| 156 | + map.put("jhlc", format.format(jhlc)); | ||
| 157 | + map.put("remMileage", format.format(remMileage)); | ||
| 158 | + map.put("addMileage", format.format(addMileage)); | ||
| 159 | + map.put("yygl", format.format(yygl)); | ||
| 160 | + map.put("ksgl", format.format(ksgl)); | ||
| 161 | + map.put("realMileage", format.format(yygl+ksgl)); | ||
| 162 | + map.put("jhbc", jhbc); | ||
| 163 | + map.put("cjbc", cjbc); | ||
| 164 | + map.put("ljbc", ljbc); | ||
| 165 | + map.put("sjbc", jhbc-cjbc+ljbc); | ||
| 166 | + return map; | ||
| 167 | + } | ||
| 168 | + | ||
| 169 | + | ||
| 170 | + | ||
| 171 | + | ||
| 172 | +} |
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
| @@ -24,7 +24,6 @@ import org.slf4j.LoggerFactory; | @@ -24,7 +24,6 @@ import org.slf4j.LoggerFactory; | ||
| 24 | import org.springframework.beans.factory.annotation.Autowired; | 24 | import org.springframework.beans.factory.annotation.Autowired; |
| 25 | import org.springframework.data.domain.Sort; | 25 | import org.springframework.data.domain.Sort; |
| 26 | import org.springframework.data.domain.Sort.Direction; | 26 | import org.springframework.data.domain.Sort.Direction; |
| 27 | -import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; | ||
| 28 | import org.springframework.stereotype.Service; | 27 | import org.springframework.stereotype.Service; |
| 29 | 28 | ||
| 30 | import java.io.BufferedOutputStream; | 29 | import java.io.BufferedOutputStream; |
| @@ -104,9 +103,6 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | @@ -104,9 +103,6 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | ||
| 104 | @Autowired | 103 | @Autowired |
| 105 | private ScheduleRealInfoRepository scheduleRealInfoRepository; | 104 | private ScheduleRealInfoRepository scheduleRealInfoRepository; |
| 106 | 105 | ||
| 107 | - @Autowired | ||
| 108 | - NamedParameterJdbcTemplate jdbcTemplate; | ||
| 109 | - | ||
| 110 | 106 | ||
| 111 | // 运管处接口 | 107 | // 运管处接口 |
| 112 | private InternalPortType portType = new Internal().getInternalHttpSoap11Endpoint(); | 108 | private InternalPortType portType = new Internal().getInternalHttpSoap11Endpoint(); |
| @@ -308,31 +304,31 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | @@ -308,31 +304,31 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | ||
| 308 | try { | 304 | try { |
| 309 | sf.append("<DLDS>"); | 305 | sf.append("<DLDS>"); |
| 310 | List<ScheduleRealInfo> list = scheduleRealInfoRepository.setLD(date); | 306 | List<ScheduleRealInfo> list = scheduleRealInfoRepository.setLD(date); |
| 311 | - List<ScheduleRealInfo> listGroup = scheduleRealInfoRepository.setLDGroup(date); | 307 | + List<Map<String,Object>> listGroup = scheduleRealInfoRepository.setLDGroup(date); |
| 312 | Map<String,Object> map = new HashMap<String,Object>(); | 308 | Map<String,Object> map = new HashMap<String,Object>(); |
| 313 | - for(ScheduleRealInfo schRealInfo:listGroup){ | 309 | + for(Map<String,Object> schRealInfo:listGroup){ |
| 314 | if(schRealInfo != null){ | 310 | if(schRealInfo != null){ |
| 315 | //根据车辆自编号查询车牌号 | 311 | //根据车辆自编号查询车牌号 |
| 316 | - map.put("insideCode_eq", schRealInfo.getClZbh()); | 312 | + map.put("insideCode_eq", schRealInfo.get("clZbh")+""); |
| 317 | Cars car = carsRepository.findOne(new CustomerSpecs<Cars>(map)); | 313 | Cars car = carsRepository.findOne(new CustomerSpecs<Cars>(map)); |
| 318 | // 获取线路是否使用标识,如果未使用,则不查该线路数据 | 314 | // 获取线路是否使用标识,如果未使用,则不查该线路数据 |
| 319 | - line = lineRepository.findByLineCode(schRealInfo.getXlBm()); | 315 | + line = lineRepository.findByLineCode(schRealInfo.get("xlBm")+""); |
| 320 | if(line.getInUse() == null || line.getInUse() == 0){ | 316 | if(line.getInUse() == null || line.getInUse() == 0){ |
| 321 | continue; | 317 | continue; |
| 322 | } | 318 | } |
| 323 | sf.append("<DLD>"); | 319 | sf.append("<DLD>"); |
| 324 | - sf.append("<RQ>"+schRealInfo.getScheduleDateStr()+"</RQ>"); | ||
| 325 | - sf.append("<XLBM>"+BasicData.lineCode2ShangHaiCodeMap.get(schRealInfo.getXlBm())+"</XLBM>"); | ||
| 326 | - sf.append("<LPBH>"+schRealInfo.getLpName()+"</LPBH>"); | 320 | + sf.append("<RQ>"+date+"</RQ>"); |
| 321 | + sf.append("<XLBM>"+BasicData.lineCode2ShangHaiCodeMap.get(schRealInfo.get("xlBm")+"")+"</XLBM>"); | ||
| 322 | + sf.append("<LPBH>"+schRealInfo.get("lpName")+"</LPBH>"); | ||
| 327 | sf.append("<CPH>"+car.getCarPlate()+"</CPH>"); | 323 | sf.append("<CPH>"+car.getCarPlate()+"</CPH>"); |
| 328 | - sf.append("<UPDT>"+sdfnyrsfm.format(schRealInfo.getUpdateDate())+"</UPDT>"); | 324 | + sf.append("<UPDT>"+sdfnyrsfm.format(new Date())+"</UPDT>"); |
| 329 | sf.append("<LDList>"); | 325 | sf.append("<LDList>"); |
| 330 | 326 | ||
| 331 | int seqNumber = 0; | 327 | int seqNumber = 0; |
| 332 | for(ScheduleRealInfo scheduleRealInfo:list){ | 328 | for(ScheduleRealInfo scheduleRealInfo:list){ |
| 333 | - if(schRealInfo.getXlBm().equals(scheduleRealInfo.getXlBm()) && schRealInfo.getLpName() | 329 | + if((schRealInfo.get("xlBm")+"").equals(scheduleRealInfo.getXlBm()) && (schRealInfo.get("lpName")+"") |
| 334 | .equals(scheduleRealInfo.getLpName()) | 330 | .equals(scheduleRealInfo.getLpName()) |
| 335 | - && schRealInfo.getClZbh().equals(scheduleRealInfo.getClZbh())){ | 331 | + && (schRealInfo.get("clZbh")+"").equals(scheduleRealInfo.getClZbh())){ |
| 336 | if(scheduleRealInfo.getFcsjActual() == null ||scheduleRealInfo.getBcType().equals("in") | 332 | if(scheduleRealInfo.getFcsjActual() == null ||scheduleRealInfo.getBcType().equals("in") |
| 337 | || scheduleRealInfo.getBcType().equals("out")){ | 333 | || scheduleRealInfo.getBcType().equals("out")){ |
| 338 | continue; | 334 | continue; |
| @@ -390,22 +386,22 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | @@ -390,22 +386,22 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | ||
| 390 | StringBuffer sf = new StringBuffer(); | 386 | StringBuffer sf = new StringBuffer(); |
| 391 | try { | 387 | try { |
| 392 | sf.append("<LCYHS>"); | 388 | sf.append("<LCYHS>"); |
| 393 | - List<ScheduleRealInfo> listGroup = scheduleRealInfoRepository.setLCYHGroup(date); | 389 | + List<Map<String,Object>> listGroup = scheduleRealInfoRepository.setLCYHGroup(date); |
| 394 | List<ScheduleRealInfo> list = scheduleRealInfoRepository.findByDate(date); | 390 | List<ScheduleRealInfo> list = scheduleRealInfoRepository.findByDate(date); |
| 395 | Map<String,Object> map = new HashMap<String,Object>(); | 391 | Map<String,Object> map = new HashMap<String,Object>(); |
| 396 | - for(ScheduleRealInfo schRealInfo:listGroup){ | 392 | + for(Map<String,Object> schRealInfo:listGroup){ |
| 397 | if(schRealInfo != null){ | 393 | if(schRealInfo != null){ |
| 398 | //计算总公里和空驶公里,营运公里=总公里-空驶公里 | 394 | //计算总公里和空驶公里,营运公里=总公里-空驶公里 |
| 399 | double totalKilometers = 0,emptyKilometers =0; | 395 | double totalKilometers = 0,emptyKilometers =0; |
| 400 | sf.append("<LCYH>"); | 396 | sf.append("<LCYH>"); |
| 401 | - map.put("insideCode_eq", schRealInfo.getClZbh()); | 397 | + map.put("insideCode_eq", schRealInfo.get("clZbh")+""); |
| 402 | Cars car = carsRepository.findOne(new CustomerSpecs<Cars>(map)); | 398 | Cars car = carsRepository.findOne(new CustomerSpecs<Cars>(map)); |
| 403 | // Cars car = carsRepository.findCarByClzbh(schRealInfo.getClZbh()); | 399 | // Cars car = carsRepository.findCarByClzbh(schRealInfo.getClZbh()); |
| 404 | - sf.append("<RQ>"+schRealInfo.getScheduleDateStr()+"</RQ>"); | ||
| 405 | - sf.append("<XLBM>"+BasicData.lineCode2ShangHaiCodeMap.get(schRealInfo.getXlBm())+"</XLBM>"); | 400 | + sf.append("<RQ>"+date+"</RQ>"); |
| 401 | + sf.append("<XLBM>"+BasicData.lineCode2ShangHaiCodeMap.get(schRealInfo.get("xlBm"))+"</XLBM>"); | ||
| 406 | sf.append("<CPH>"+car.getCarPlate()+"</CPH>"); | 402 | sf.append("<CPH>"+car.getCarPlate()+"</CPH>"); |
| 407 | for(ScheduleRealInfo scheduleRealInfo:list){ | 403 | for(ScheduleRealInfo scheduleRealInfo:list){ |
| 408 | - if(schRealInfo.getXlBm().equals(scheduleRealInfo.getXlBm()) && schRealInfo.getClZbh() | 404 | + if((schRealInfo.get("xlBm")+"").equals(scheduleRealInfo.getXlBm()) && (schRealInfo.get("clZbh")+"") |
| 409 | .equals(scheduleRealInfo.getClZbh())){ | 405 | .equals(scheduleRealInfo.getClZbh())){ |
| 410 | Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); | 406 | Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); |
| 411 | //如果没有子任务,里程就是已执行(Status=2);有子任务的,忽略主任务,子任务的烂班 | 407 | //如果没有子任务,里程就是已执行(Status=2);有子任务的,忽略主任务,子任务的烂班 |
| @@ -436,7 +432,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | @@ -436,7 +432,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | ||
| 436 | sf.append("<YH>"+""+"</YH>"); | 432 | sf.append("<YH>"+""+"</YH>"); |
| 437 | sf.append("<JZYL>"+""+"</JZYL>"); | 433 | sf.append("<JZYL>"+""+"</JZYL>"); |
| 438 | sf.append("<DH>"+""+"</DH>"); | 434 | sf.append("<DH>"+""+"</DH>"); |
| 439 | - sf.append("<UPDT>"+sdfnyrsfm.format(schRealInfo.getUpdateDate())+"</UPDT>"); | 435 | + sf.append("<UPDT>"+sdfnyrsfm.format(new Date())+"</UPDT>"); |
| 440 | sf.append("<BBSCBZ>"+0+"</BBSCBZ>"); | 436 | sf.append("<BBSCBZ>"+0+"</BBSCBZ>"); |
| 441 | sf.append("</LCYH>"); | 437 | sf.append("</LCYH>"); |
| 442 | } | 438 | } |
| @@ -466,18 +462,18 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | @@ -466,18 +462,18 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | ||
| 466 | StringBuffer sf = new StringBuffer(); | 462 | StringBuffer sf = new StringBuffer(); |
| 467 | try { | 463 | try { |
| 468 | sf.append("<DDRBS>"); | 464 | sf.append("<DDRBS>"); |
| 469 | - List<ScheduleRealInfo> listGroup = scheduleRealInfoRepository.setDDRBGroup(date); | 465 | + List<Map<String,Object>> listGroup = scheduleRealInfoRepository.setDDRBGroup(date); |
| 470 | List<ScheduleRealInfo> list = scheduleRealInfoRepository.findByDate(date); | 466 | List<ScheduleRealInfo> list = scheduleRealInfoRepository.findByDate(date); |
| 471 | - for(ScheduleRealInfo schRealInfo:listGroup){ | 467 | + for(Map<String,Object> schRealInfo:listGroup){ |
| 472 | if(schRealInfo != null){ | 468 | if(schRealInfo != null){ |
| 473 | double jhlc = 0,zlc = 0,jhkslc = 0,sjkslc = 0; | 469 | double jhlc = 0,zlc = 0,jhkslc = 0,sjkslc = 0; |
| 474 | int jhbc = 0,sjbc = 0,jhzgfbc = 0,sjzgfbc = 0,jhwgfbc = 0,sjwgfbc = 0; | 470 | int jhbc = 0,sjbc = 0,jhzgfbc = 0,sjzgfbc = 0,jhwgfbc = 0,sjwgfbc = 0; |
| 475 | sf.append("<DDRB>"); | 471 | sf.append("<DDRB>"); |
| 476 | - sf.append("<RQ>"+schRealInfo.getScheduleDateStr()+"</RQ>"); | ||
| 477 | - sf.append("<XLBM>"+BasicData.lineCode2ShangHaiCodeMap.get(schRealInfo.getXlBm())+"</XLBM>"); | 472 | + sf.append("<RQ>"+date+"</RQ>"); |
| 473 | + sf.append("<XLBM>"+BasicData.lineCode2ShangHaiCodeMap.get(schRealInfo.get("xlBm"))+"</XLBM>"); | ||
| 478 | for(ScheduleRealInfo scheduleRealInfo:list){ | 474 | for(ScheduleRealInfo scheduleRealInfo:list){ |
| 479 | if(scheduleRealInfo != null){ | 475 | if(scheduleRealInfo != null){ |
| 480 | - if(scheduleRealInfo.getXlBm().equals(scheduleRealInfo.getXlBm())){ | 476 | + if((schRealInfo.get("xlBm")+"").equals(scheduleRealInfo.getXlBm())){ |
| 481 | //计划 | 477 | //计划 |
| 482 | if(!scheduleRealInfo.isSflj()){ | 478 | if(!scheduleRealInfo.isSflj()){ |
| 483 | jhlc += scheduleRealInfo.getJhlc()==null?0.0:scheduleRealInfo.getJhlc(); | 479 | jhlc += scheduleRealInfo.getJhlc()==null?0.0:scheduleRealInfo.getJhlc(); |
| @@ -540,7 +536,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | @@ -540,7 +536,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ | ||
| 540 | sf.append("<SJZGFBC>"+sjzgfbc+"</SJZGFBC>"); | 536 | sf.append("<SJZGFBC>"+sjzgfbc+"</SJZGFBC>"); |
| 541 | sf.append("<JHWGFBC>"+jhwgfbc+"</JHWGFBC>"); | 537 | sf.append("<JHWGFBC>"+jhwgfbc+"</JHWGFBC>"); |
| 542 | sf.append("<SJWGFBC>"+sjwgfbc+"</SJWGFBC>"); | 538 | sf.append("<SJWGFBC>"+sjwgfbc+"</SJWGFBC>"); |
| 543 | - sf.append("<UPDT>"+sdfnyrsfm.format(schRealInfo.getUpdateDate())+"</UPDT>"); | 539 | + sf.append("<UPDT>"+sdfnyrsfm.format(new Date())+"</UPDT>"); |
| 544 | sf.append("<RBSCBZ>"+0+"</RBSCBZ>"); | 540 | sf.append("<RBSCBZ>"+0+"</RBSCBZ>"); |
| 545 | sf.append("</DDRB>"); | 541 | sf.append("</DDRB>"); |
| 546 | } | 542 | } |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| @@ -613,11 +613,32 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -613,11 +613,32 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 613 | 613 | ||
| 614 | @Override | 614 | @Override |
| 615 | public List<Object[]> historyMessage(String line, String date, String code) { | 615 | public List<Object[]> historyMessage(String line, String date, String code) { |
| 616 | + | ||
| 617 | + String sql="select t.car_code,d.sender,d.txt_content,d.timestamp from (" | ||
| 618 | + + " select equipment_code,car_code from bsth_c_cars where id in(" | ||
| 619 | + + " select cl from bsth_c_s_ccinfo where xl in ( " | ||
| 620 | + + " select id from bsth_c_line where line_code=?1 ))) t" | ||
| 621 | + + " left join bsth_v_directive_60 d on t.equipment_code=d.device_id " | ||
| 622 | + + " where d.timestamp >=?2 and d.timestamp <=?3 and t.car_code like '%?4%'"; | ||
| 616 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 623 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| 617 | - List<Object[]> list = scheduleRealInfoRepository.historyMessage(line, date, code); | 624 | + long d= 0; |
| 625 | + long t=0; | ||
| 626 | + if(date.length()>0){ | ||
| 627 | + try { | ||
| 628 | + d=sdf.parse(date+" 00:00:00").getTime(); | ||
| 629 | + t=sdf.parse(date+" 23:59:59").getTime(); | ||
| 630 | + } catch (ParseException e) { | ||
| 631 | + // TODO Auto-generated catch block | ||
| 632 | + e.printStackTrace(); | ||
| 633 | + } | ||
| 634 | + | ||
| 635 | + } | ||
| 636 | + | ||
| 637 | + List<Object[]> list = scheduleRealInfoRepository.historyMessage(line,d,t, code); | ||
| 618 | for(Object[] obj:list){ | 638 | for(Object[] obj:list){ |
| 619 | if(obj != null){ | 639 | if(obj != null){ |
| 620 | - obj[4] = sdf.format(new Date(Long.parseLong(obj[4].toString()))); | 640 | + obj[3] = sdf.format(new Date(Long.parseLong(obj[3].toString()))); |
| 641 | + obj[4] = BasicData.lineCode2NameMap.get(line); | ||
| 621 | } | 642 | } |
| 622 | } | 643 | } |
| 623 | return list; | 644 | return list; |
| @@ -1129,10 +1150,12 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -1129,10 +1150,12 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 1129 | addMileage += tempJhlc; | 1150 | addMileage += tempJhlc; |
| 1130 | ljbc++; | 1151 | ljbc++; |
| 1131 | }else{ | 1152 | }else{ |
| 1132 | - if(scheduleRealInfo.getBcType().equals("normal")){ | 1153 | + if( !(scheduleRealInfo.getBcType().equals("in") |
| 1154 | + ||scheduleRealInfo.getBcType().equals("out")) ){ | ||
| 1133 | jhbc++; | 1155 | jhbc++; |
| 1156 | + jhlc += tempJhlc; | ||
| 1134 | } | 1157 | } |
| 1135 | - jhlc += tempJhlc; | 1158 | + |
| 1136 | if(scheduleRealInfo.getStatus() == -1){ | 1159 | if(scheduleRealInfo.getStatus() == -1){ |
| 1137 | remMileage += tempJhlc; | 1160 | remMileage += tempJhlc; |
| 1138 | cjbc++; | 1161 | cjbc++; |
| @@ -1143,11 +1166,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -1143,11 +1166,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 1143 | if(childTaskPlans.isEmpty()){ | 1166 | if(childTaskPlans.isEmpty()){ |
| 1144 | if(scheduleRealInfo.getBcType().equals("in") || | 1167 | if(scheduleRealInfo.getBcType().equals("in") || |
| 1145 | scheduleRealInfo.getBcType().equals("out")){ | 1168 | scheduleRealInfo.getBcType().equals("out")){ |
| 1146 | - ksgl += tempJhlc; | ||
| 1147 | jcclc +=tempJhlc; | 1169 | jcclc +=tempJhlc; |
| 1148 | - }else if(scheduleRealInfo.getBcType().equals("venting")){ | ||
| 1149 | - ksgl += tempJhlc; | ||
| 1150 | - }else{ | 1170 | + } |
| 1171 | + //主任务 放空班次属于营运 | ||
| 1172 | +// else if(scheduleRealInfo.getBcType().equals("venting")){ | ||
| 1173 | +// ksgl += tempJhlc; | ||
| 1174 | +// } | ||
| 1175 | + else{ | ||
| 1151 | if(scheduleRealInfo.getStatus() != -1){ | 1176 | if(scheduleRealInfo.getStatus() != -1){ |
| 1152 | yygl += tempJhlc; | 1177 | yygl += tempJhlc; |
| 1153 | } | 1178 | } |
| @@ -1160,8 +1185,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -1160,8 +1185,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 1160 | ksgl += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); | 1185 | ksgl += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); |
| 1161 | }else{ | 1186 | }else{ |
| 1162 | if(childTaskPlan.isDestroy()){ | 1187 | if(childTaskPlan.isDestroy()){ |
| 1163 | - remMileage += tempJhlc; | ||
| 1164 | - cjbc++; | 1188 | + remMileage += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); |
| 1189 | +// cjbc++; | ||
| 1165 | }else{ | 1190 | }else{ |
| 1166 | yygl += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); | 1191 | yygl += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); |
| 1167 | } | 1192 | } |
| @@ -1175,12 +1200,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -1175,12 +1200,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 1175 | map.put("addMileage", format.format(addMileage)); | 1200 | map.put("addMileage", format.format(addMileage)); |
| 1176 | map.put("yygl", format.format(yygl)); | 1201 | map.put("yygl", format.format(yygl)); |
| 1177 | map.put("ksgl", format.format(ksgl)); | 1202 | map.put("ksgl", format.format(ksgl)); |
| 1178 | - map.put("realMileage", format.format(yygl+ksgl)); | 1203 | + map.put("realMileage", format.format(yygl+ksgl+jcclc)); |
| 1179 | map.put("jhbc", jhbc); | 1204 | map.put("jhbc", jhbc); |
| 1180 | map.put("cjbc", cjbc); | 1205 | map.put("cjbc", cjbc); |
| 1181 | map.put("ljbc", ljbc); | 1206 | map.put("ljbc", ljbc); |
| 1182 | map.put("sjbc", jhbc-cjbc+ljbc); | 1207 | map.put("sjbc", jhbc-cjbc+ljbc); |
| 1183 | map.put("jcclc", jcclc); | 1208 | map.put("jcclc", jcclc); |
| 1209 | + map.put("zkslc", ksgl+jcclc); | ||
| 1184 | return map; | 1210 | return map; |
| 1185 | } | 1211 | } |
| 1186 | 1212 | ||
| @@ -1259,115 +1285,121 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -1259,115 +1285,121 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 1259 | Map<String,Object> map = new HashMap<String, Object>(); | 1285 | Map<String,Object> map = new HashMap<String, Object>(); |
| 1260 | for(ScheduleRealInfo scheduleRealInfo: list){ | 1286 | for(ScheduleRealInfo scheduleRealInfo: list){ |
| 1261 | if(scheduleRealInfo != null){ | 1287 | if(scheduleRealInfo != null){ |
| 1262 | - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); | ||
| 1263 | - //计算实际里程,少驶里程,计划里程=实际里程+少驶里程 | ||
| 1264 | - if(childTaskPlans.isEmpty()){ | ||
| 1265 | - tempJhlc = scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc(); | ||
| 1266 | - jhlc += tempJhlc; | ||
| 1267 | - if(scheduleRealInfo.getStatus() == 2){ | ||
| 1268 | - sjgl += tempJhlc; | ||
| 1269 | - }else if(scheduleRealInfo.getStatus() == -1){ | ||
| 1270 | - ssgl += tempJhlc; | ||
| 1271 | - if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("路阻") != -1){ | ||
| 1272 | - ssgl_lz += tempJhlc; | ||
| 1273 | - }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("吊慢") != -1){ | ||
| 1274 | - ssgl_dm += tempJhlc; | ||
| 1275 | - }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("故障") != -1){ | ||
| 1276 | - ssgl_gz += tempJhlc; | ||
| 1277 | - }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("纠纷") != -1){ | ||
| 1278 | - ssgl_jf += tempJhlc; | ||
| 1279 | - }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("肇事") != -1){ | ||
| 1280 | - ssgl_zs += tempJhlc; | ||
| 1281 | - }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("缺人") != -1){ | ||
| 1282 | - ssgl_qr += tempJhlc; | ||
| 1283 | - }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("缺车") != -1){ | ||
| 1284 | - ssgl_qc += tempJhlc; | ||
| 1285 | - }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("客稀") != -1){ | ||
| 1286 | - ssgl_kx += tempJhlc; | ||
| 1287 | - }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("气候") != -1){ | ||
| 1288 | - ssgl_qh += tempJhlc; | ||
| 1289 | - }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("援外") != -1){ | ||
| 1290 | - ssgl_yw += tempJhlc; | ||
| 1291 | - }else{ | ||
| 1292 | - ssgl_other += tempJhlc; | ||
| 1293 | - } | ||
| 1294 | - | 1288 | + |
| 1289 | + if(!(scheduleRealInfo.getBcType().equals("in") | ||
| 1290 | + ||scheduleRealInfo.getBcType().equals("out")) ){ | ||
| 1291 | + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); | ||
| 1292 | + //计算实际里程,少驶里程,计划里程=实际里程+少驶里程 | ||
| 1293 | + if(childTaskPlans.isEmpty()){ | ||
| 1294 | + tempJhlc = scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc(); | ||
| 1295 | //临加公里 | 1295 | //临加公里 |
| 1296 | if(scheduleRealInfo.isSflj()){ | 1296 | if(scheduleRealInfo.isSflj()){ |
| 1297 | ljgl += tempJhlc; | 1297 | ljgl += tempJhlc; |
| 1298 | + }else{ | ||
| 1299 | + jhlc += tempJhlc; | ||
| 1298 | } | 1300 | } |
| 1299 | - }else{ | ||
| 1300 | - ssgl += tempJhlc; | ||
| 1301 | - ssgl_other += tempJhlc; | ||
| 1302 | - } | ||
| 1303 | - }else{ | ||
| 1304 | - Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); | ||
| 1305 | - while(it.hasNext()){ | ||
| 1306 | - ChildTaskPlan childTaskPlan = it.next(); | ||
| 1307 | - childMileage = childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); | ||
| 1308 | - jhlc += childMileage; | ||
| 1309 | - if(childTaskPlan.isDestroy()){ | ||
| 1310 | - ssgl += childMileage; | ||
| 1311 | - if(childTaskPlan.getDestroyReason().equals("路阻")){ | ||
| 1312 | - ssgl_lz += childTaskPlan.getMileage(); | ||
| 1313 | - }else if(childTaskPlan.getDestroyReason().equals("吊慢")){ | ||
| 1314 | - ssgl_dm += childTaskPlan.getMileage(); | ||
| 1315 | - }else if(childTaskPlan.getDestroyReason().equals("故障")){ | ||
| 1316 | - ssgl_gz += childTaskPlan.getMileage(); | ||
| 1317 | - }else if(childTaskPlan.getDestroyReason().equals("纠纷")){ | ||
| 1318 | - ssgl_jf += childTaskPlan.getMileage(); | ||
| 1319 | - }else if(childTaskPlan.getDestroyReason().equals("肇事")){ | ||
| 1320 | - ssgl_zs += childTaskPlan.getMileage(); | ||
| 1321 | - }else if(childTaskPlan.getDestroyReason().equals("缺人")){ | ||
| 1322 | - ssgl_qr += childTaskPlan.getMileage(); | ||
| 1323 | - }else if(childTaskPlan.getDestroyReason().equals("缺车")){ | ||
| 1324 | - ssgl_qc += childTaskPlan.getMileage(); | ||
| 1325 | - }else if(childTaskPlan.getDestroyReason().equals("客稀")){ | ||
| 1326 | - ssgl_kx += childTaskPlan.getMileage(); | ||
| 1327 | - }else if(childTaskPlan.getDestroyReason().equals("气候")){ | ||
| 1328 | - ssgl_qh += childTaskPlan.getMileage(); | ||
| 1329 | - }else if(childTaskPlan.getDestroyReason().equals("援外")){ | ||
| 1330 | - ssgl_yw += childTaskPlan.getMileage(); | 1301 | + if(scheduleRealInfo.getStatus() == 2){ |
| 1302 | + sjgl += tempJhlc; | ||
| 1303 | + }else if(scheduleRealInfo.getStatus() == -1){ | ||
| 1304 | + ssgl += tempJhlc; | ||
| 1305 | + if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("路阻") != -1){ | ||
| 1306 | + ssgl_lz += tempJhlc; | ||
| 1307 | + }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("吊慢") != -1){ | ||
| 1308 | + ssgl_dm += tempJhlc; | ||
| 1309 | + }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("故障") != -1){ | ||
| 1310 | + ssgl_gz += tempJhlc; | ||
| 1311 | + }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("纠纷") != -1){ | ||
| 1312 | + ssgl_jf += tempJhlc; | ||
| 1313 | + }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("肇事") != -1){ | ||
| 1314 | + ssgl_zs += tempJhlc; | ||
| 1315 | + }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("缺人") != -1){ | ||
| 1316 | + ssgl_qr += tempJhlc; | ||
| 1317 | + }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("缺车") != -1){ | ||
| 1318 | + ssgl_qc += tempJhlc; | ||
| 1319 | + }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("客稀") != -1){ | ||
| 1320 | + ssgl_kx += tempJhlc; | ||
| 1321 | + }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("气候") != -1){ | ||
| 1322 | + ssgl_qh += tempJhlc; | ||
| 1323 | + }else if((scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks()).indexOf("援外") != -1){ | ||
| 1324 | + ssgl_yw += tempJhlc; | ||
| 1331 | }else{ | 1325 | }else{ |
| 1332 | - ssgl_other += childTaskPlan.getMileage(); | 1326 | + ssgl_other += tempJhlc; |
| 1333 | } | 1327 | } |
| 1328 | + | ||
| 1329 | + | ||
| 1334 | }else{ | 1330 | }else{ |
| 1335 | - sjgl += childMileage; | 1331 | + ssgl += tempJhlc; |
| 1332 | + ssgl_other += tempJhlc; | ||
| 1333 | + } | ||
| 1334 | + }else{ | ||
| 1335 | + Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); | ||
| 1336 | + while(it.hasNext()){ | ||
| 1337 | + ChildTaskPlan childTaskPlan = it.next(); | ||
| 1338 | + childMileage = childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); | ||
| 1339 | + jhlc += childMileage; | ||
| 1340 | + if(childTaskPlan.isDestroy()){ | ||
| 1341 | + ssgl += childMileage; | ||
| 1342 | + if(childTaskPlan.getDestroyReason().equals("路阻")){ | ||
| 1343 | + ssgl_lz += childTaskPlan.getMileage(); | ||
| 1344 | + }else if(childTaskPlan.getDestroyReason().equals("吊慢")){ | ||
| 1345 | + ssgl_dm += childTaskPlan.getMileage(); | ||
| 1346 | + }else if(childTaskPlan.getDestroyReason().equals("故障")){ | ||
| 1347 | + ssgl_gz += childTaskPlan.getMileage(); | ||
| 1348 | + }else if(childTaskPlan.getDestroyReason().equals("纠纷")){ | ||
| 1349 | + ssgl_jf += childTaskPlan.getMileage(); | ||
| 1350 | + }else if(childTaskPlan.getDestroyReason().equals("肇事")){ | ||
| 1351 | + ssgl_zs += childTaskPlan.getMileage(); | ||
| 1352 | + }else if(childTaskPlan.getDestroyReason().equals("缺人")){ | ||
| 1353 | + ssgl_qr += childTaskPlan.getMileage(); | ||
| 1354 | + }else if(childTaskPlan.getDestroyReason().equals("缺车")){ | ||
| 1355 | + ssgl_qc += childTaskPlan.getMileage(); | ||
| 1356 | + }else if(childTaskPlan.getDestroyReason().equals("客稀")){ | ||
| 1357 | + ssgl_kx += childTaskPlan.getMileage(); | ||
| 1358 | + }else if(childTaskPlan.getDestroyReason().equals("气候")){ | ||
| 1359 | + ssgl_qh += childTaskPlan.getMileage(); | ||
| 1360 | + }else if(childTaskPlan.getDestroyReason().equals("援外")){ | ||
| 1361 | + ssgl_yw += childTaskPlan.getMileage(); | ||
| 1362 | + }else{ | ||
| 1363 | + ssgl_other += childTaskPlan.getMileage(); | ||
| 1364 | + } | ||
| 1365 | + }else{ | ||
| 1366 | + sjgl += childMileage; | ||
| 1367 | + } | ||
| 1336 | } | 1368 | } |
| 1337 | } | 1369 | } |
| 1338 | - } | ||
| 1339 | - | ||
| 1340 | - //班次 | ||
| 1341 | - jhbc++; | ||
| 1342 | - String[] fcsj = scheduleRealInfo.getFcsj().split(":"); | ||
| 1343 | - String[] fcsjActual = (scheduleRealInfo.getFcsjActual()==null?"0:00":scheduleRealInfo.getFcsjActual()).split(":"); | ||
| 1344 | - if((Integer.parseInt(fcsj[0])*60+Integer.parseInt(fcsj[1])) > sj_0 && (Integer.parseInt(fcsj[0])*60+Integer.parseInt(fcsj[1])) < sj_1){ | ||
| 1345 | - jhbc_m++; | ||
| 1346 | - }else if((Integer.parseInt(fcsj[0])*60+Integer.parseInt(fcsj[1])) > sj_2 && (Integer.parseInt(fcsj[0])*60+Integer.parseInt(fcsj[1])) < sj_3){ | ||
| 1347 | - jhbc_a++; | ||
| 1348 | - } | ||
| 1349 | - if(scheduleRealInfo.getStatus() == 2){ | ||
| 1350 | - sjbc++; | ||
| 1351 | - if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_1){ | ||
| 1352 | - sjbc_m++; | ||
| 1353 | - }else if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_3){ | ||
| 1354 | - sjbc_a++; | 1370 | + |
| 1371 | + //班次 | ||
| 1372 | + jhbc++; | ||
| 1373 | + String[] fcsj = scheduleRealInfo.getFcsj().split(":"); | ||
| 1374 | + String[] fcsjActual = (scheduleRealInfo.getFcsjActual()==null?"0:00":scheduleRealInfo.getFcsjActual()).split(":"); | ||
| 1375 | + if((Integer.parseInt(fcsj[0])*60+Integer.parseInt(fcsj[1])) > sj_0 && (Integer.parseInt(fcsj[0])*60+Integer.parseInt(fcsj[1])) < sj_1){ | ||
| 1376 | + jhbc_m++; | ||
| 1377 | + }else if((Integer.parseInt(fcsj[0])*60+Integer.parseInt(fcsj[1])) > sj_2 && (Integer.parseInt(fcsj[0])*60+Integer.parseInt(fcsj[1])) < sj_3){ | ||
| 1378 | + jhbc_a++; | ||
| 1355 | } | 1379 | } |
| 1356 | - } | ||
| 1357 | - if(scheduleRealInfo.isSflj()){ | ||
| 1358 | - ljbc++; | ||
| 1359 | - if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_1){ | ||
| 1360 | - ljbc_m++; | ||
| 1361 | - }else if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_3){ | ||
| 1362 | - ljbc_a++; | 1380 | + if(scheduleRealInfo.getStatus() == 2){ |
| 1381 | + sjbc++; | ||
| 1382 | + if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_1){ | ||
| 1383 | + sjbc_m++; | ||
| 1384 | + }else if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_3){ | ||
| 1385 | + sjbc_a++; | ||
| 1386 | + } | ||
| 1363 | } | 1387 | } |
| 1364 | - } | ||
| 1365 | - if(scheduleRealInfo.getBcType().equals("venting")){ | ||
| 1366 | - fzbc++; | ||
| 1367 | - if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_1){ | ||
| 1368 | - fzbc_m++; | ||
| 1369 | - }else if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_3){ | ||
| 1370 | - fzbc_a++; | 1388 | + if(scheduleRealInfo.isSflj()){ |
| 1389 | + ljbc++; | ||
| 1390 | + if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_1){ | ||
| 1391 | + ljbc_m++; | ||
| 1392 | + }else if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_3){ | ||
| 1393 | + ljbc_a++; | ||
| 1394 | + } | ||
| 1395 | + } | ||
| 1396 | + if(scheduleRealInfo.getBcType().equals("venting")){ | ||
| 1397 | + fzbc++; | ||
| 1398 | + if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_1){ | ||
| 1399 | + fzbc_m++; | ||
| 1400 | + }else if((Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0])*60+Integer.parseInt(fcsjActual[1])) < sj_3){ | ||
| 1401 | + fzbc_a++; | ||
| 1402 | + } | ||
| 1371 | } | 1403 | } |
| 1372 | } | 1404 | } |
| 1373 | } | 1405 | } |
src/main/java/com/bsth/service/schedule/CarDeviceService.java
| 1 | -package com.bsth.service.schedule; | ||
| 2 | - | ||
| 3 | -import com.bsth.entity.CarDevice; | ||
| 4 | - | ||
| 5 | -/** | ||
| 6 | - * Created by xu on 16/12/15. | ||
| 7 | - */ | ||
| 8 | -public interface CarDeviceService extends BService<CarDevice, Long> { | ||
| 9 | - void validate_qyrq(CarDevice carDevice) throws ScheduleException; | ||
| 10 | -} | 1 | +package com.bsth.service.schedule; |
| 2 | + | ||
| 3 | +import com.bsth.entity.CarDevice; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * Created by xu on 16/12/15. | ||
| 7 | + */ | ||
| 8 | +public interface CarDeviceService extends BService<CarDevice, Long> { | ||
| 9 | + void validate_qyrq(CarDevice carDevice) throws ScheduleException; | ||
| 10 | +} |
src/main/java/com/bsth/service/schedule/EmployeeService.java
| 1 | -package com.bsth.service.schedule; | ||
| 2 | - | ||
| 3 | -import com.bsth.entity.Personnel; | ||
| 4 | - | ||
| 5 | -/** | ||
| 6 | - * Created by xu on 16/12/15. | ||
| 7 | - */ | ||
| 8 | -public interface EmployeeService extends BService<Personnel, Integer> { | ||
| 9 | - public void validate_gh(Personnel personnel) throws ScheduleException; | ||
| 10 | -} | 1 | +package com.bsth.service.schedule; |
| 2 | + | ||
| 3 | +import com.bsth.entity.Personnel; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * Created by xu on 16/12/15. | ||
| 7 | + */ | ||
| 8 | +public interface EmployeeService extends BService<Personnel, Integer> { | ||
| 9 | + public void validate_gh(Personnel personnel) throws ScheduleException; | ||
| 10 | +} |
src/main/java/com/bsth/service/schedule/impl/CarDeviceServiceImpl.java
| 1 | -package com.bsth.service.schedule.impl; | ||
| 2 | - | ||
| 3 | -import com.bsth.entity.CarDevice; | ||
| 4 | -import com.bsth.entity.Cars; | ||
| 5 | -import com.bsth.service.CarsService; | ||
| 6 | -import com.bsth.service.schedule.CarDeviceService; | ||
| 7 | -import com.bsth.service.schedule.ScheduleException; | ||
| 8 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 9 | -import org.springframework.stereotype.Service; | ||
| 10 | -import org.springframework.transaction.annotation.Transactional; | ||
| 11 | -import org.springframework.util.CollectionUtils; | ||
| 12 | - | ||
| 13 | -import java.util.HashMap; | ||
| 14 | -import java.util.Map; | ||
| 15 | - | ||
| 16 | -/** | ||
| 17 | - * Created by xu on 16/12/15. | ||
| 18 | - */ | ||
| 19 | -@Service(value = "carDeviceServiceImpl_sc") | ||
| 20 | -public class CarDeviceServiceImpl extends BServiceImpl<CarDevice, Long> implements CarDeviceService { | ||
| 21 | - @Autowired | ||
| 22 | - private CarsService carsService; | ||
| 23 | - | ||
| 24 | - @Transactional | ||
| 25 | - @Override | ||
| 26 | - public CarDevice save(CarDevice carDevice) { | ||
| 27 | - // 查找对应的车辆基础信息,更新设备编号数据 | ||
| 28 | - Cars cars = carsService.findById(carDevice.getCl()); | ||
| 29 | - cars.setEquipmentCode(carDevice.getNewDeviceNo()); | ||
| 30 | - return super.save(carDevice); | ||
| 31 | - } | ||
| 32 | - | ||
| 33 | - @Transactional | ||
| 34 | - @Override | ||
| 35 | - public void validate_qyrq(CarDevice carDevice) throws ScheduleException { | ||
| 36 | - if (carDevice.getXl() == null) { | ||
| 37 | - throw new ScheduleException("线路未选择"); | ||
| 38 | - } | ||
| 39 | - if (carDevice.getCl() == null) { | ||
| 40 | - throw new ScheduleException("车辆未选择"); | ||
| 41 | - } | ||
| 42 | - Map<String, Object> param = new HashMap<>(); | ||
| 43 | - if (carDevice.getId() != null) { | ||
| 44 | - param.put("id_ne", carDevice.getId()); | ||
| 45 | - } | ||
| 46 | - param.put("xl_eq", carDevice.getXl()); | ||
| 47 | - param.put("cl_eq", carDevice.getCl()); | ||
| 48 | - param.put("qyrq_ge", carDevice.getQyrq()); | ||
| 49 | - if (!CollectionUtils.isEmpty(list(param))) { | ||
| 50 | - throw new ScheduleException("启用日期必须比历史的启用日期大"); | ||
| 51 | - } | ||
| 52 | - } | ||
| 53 | - | ||
| 54 | - @Transactional | ||
| 55 | - @Override | ||
| 56 | - public void delete(Long aLong) throws ScheduleException { | ||
| 57 | - toggleCancel(aLong); | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | - @Transactional | ||
| 61 | - public void toggleCancel(Long id) throws ScheduleException { | ||
| 62 | - CarDevice carDevice = findById(id); | ||
| 63 | - if (carDevice.getIsCancel()) { | ||
| 64 | - carDevice.setIsCancel(false); | ||
| 65 | - } else { | ||
| 66 | - carDevice.setIsCancel(true); | ||
| 67 | - } | ||
| 68 | - } | ||
| 69 | -} | 1 | +package com.bsth.service.schedule.impl; |
| 2 | + | ||
| 3 | +import com.bsth.entity.CarDevice; | ||
| 4 | +import com.bsth.entity.Cars; | ||
| 5 | +import com.bsth.service.CarsService; | ||
| 6 | +import com.bsth.service.schedule.CarDeviceService; | ||
| 7 | +import com.bsth.service.schedule.ScheduleException; | ||
| 8 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 9 | +import org.springframework.stereotype.Service; | ||
| 10 | +import org.springframework.transaction.annotation.Transactional; | ||
| 11 | +import org.springframework.util.CollectionUtils; | ||
| 12 | + | ||
| 13 | +import java.util.HashMap; | ||
| 14 | +import java.util.Map; | ||
| 15 | + | ||
| 16 | +/** | ||
| 17 | + * Created by xu on 16/12/15. | ||
| 18 | + */ | ||
| 19 | +@Service(value = "carDeviceServiceImpl_sc") | ||
| 20 | +public class CarDeviceServiceImpl extends BServiceImpl<CarDevice, Long> implements CarDeviceService { | ||
| 21 | + @Autowired | ||
| 22 | + private CarsService carsService; | ||
| 23 | + | ||
| 24 | + @Transactional | ||
| 25 | + @Override | ||
| 26 | + public CarDevice save(CarDevice carDevice) { | ||
| 27 | + // 查找对应的车辆基础信息,更新设备编号数据 | ||
| 28 | + Cars cars = carsService.findById(carDevice.getCl()); | ||
| 29 | + cars.setEquipmentCode(carDevice.getNewDeviceNo()); | ||
| 30 | + return super.save(carDevice); | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + @Transactional | ||
| 34 | + @Override | ||
| 35 | + public void validate_qyrq(CarDevice carDevice) throws ScheduleException { | ||
| 36 | + if (carDevice.getXl() == null) { | ||
| 37 | + throw new ScheduleException("线路未选择"); | ||
| 38 | + } | ||
| 39 | + if (carDevice.getCl() == null) { | ||
| 40 | + throw new ScheduleException("车辆未选择"); | ||
| 41 | + } | ||
| 42 | + Map<String, Object> param = new HashMap<>(); | ||
| 43 | + if (carDevice.getId() != null) { | ||
| 44 | + param.put("id_ne", carDevice.getId()); | ||
| 45 | + } | ||
| 46 | + param.put("xl_eq", carDevice.getXl()); | ||
| 47 | + param.put("cl_eq", carDevice.getCl()); | ||
| 48 | + param.put("qyrq_ge", carDevice.getQyrq()); | ||
| 49 | + if (!CollectionUtils.isEmpty(list(param))) { | ||
| 50 | + throw new ScheduleException("启用日期必须比历史的启用日期大"); | ||
| 51 | + } | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + @Transactional | ||
| 55 | + @Override | ||
| 56 | + public void delete(Long aLong) throws ScheduleException { | ||
| 57 | + toggleCancel(aLong); | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + @Transactional | ||
| 61 | + public void toggleCancel(Long id) throws ScheduleException { | ||
| 62 | + CarDevice carDevice = findById(id); | ||
| 63 | + if (carDevice.getIsCancel()) { | ||
| 64 | + carDevice.setIsCancel(false); | ||
| 65 | + } else { | ||
| 66 | + carDevice.setIsCancel(true); | ||
| 67 | + } | ||
| 68 | + } | ||
| 69 | +} |
src/main/java/com/bsth/service/schedule/impl/EmployeeServiceImpl.java
| 1 | -package com.bsth.service.schedule.impl; | ||
| 2 | - | ||
| 3 | -import com.bsth.entity.Personnel; | ||
| 4 | -import com.bsth.service.schedule.EmployeeService; | ||
| 5 | -import com.bsth.service.schedule.ScheduleException; | ||
| 6 | -import org.springframework.stereotype.Service; | ||
| 7 | -import org.springframework.transaction.annotation.Transactional; | ||
| 8 | -import org.springframework.util.CollectionUtils; | ||
| 9 | - | ||
| 10 | -import java.util.HashMap; | ||
| 11 | -import java.util.Map; | ||
| 12 | - | ||
| 13 | -/** | ||
| 14 | - * Created by xu on 16/12/15. | ||
| 15 | - */ | ||
| 16 | -@Service | ||
| 17 | -public class EmployeeServiceImpl extends BServiceImpl<Personnel, Integer> implements EmployeeService { | ||
| 18 | - @Override | ||
| 19 | - @Transactional | ||
| 20 | - public void validate_gh(Personnel personnel) throws ScheduleException { | ||
| 21 | - // 查询条件 | ||
| 22 | - Map<String, Object> param = new HashMap<>(); | ||
| 23 | - if (personnel.getId() != null) { | ||
| 24 | - param.put("id_ne", personnel.getId()); | ||
| 25 | - } | ||
| 26 | - param.put("companyCode_eq", personnel.getCompanyCode()); | ||
| 27 | - param.put("jobCode_eq", personnel.getJobCode()); | ||
| 28 | - if (!CollectionUtils.isEmpty(list(param))) { | ||
| 29 | - throw new ScheduleException("相同公司工号重复"); | ||
| 30 | - } | ||
| 31 | - } | ||
| 32 | -} | 1 | +package com.bsth.service.schedule.impl; |
| 2 | + | ||
| 3 | +import com.bsth.entity.Personnel; | ||
| 4 | +import com.bsth.service.schedule.EmployeeService; | ||
| 5 | +import com.bsth.service.schedule.ScheduleException; | ||
| 6 | +import org.springframework.stereotype.Service; | ||
| 7 | +import org.springframework.transaction.annotation.Transactional; | ||
| 8 | +import org.springframework.util.CollectionUtils; | ||
| 9 | + | ||
| 10 | +import java.util.HashMap; | ||
| 11 | +import java.util.Map; | ||
| 12 | + | ||
| 13 | +/** | ||
| 14 | + * Created by xu on 16/12/15. | ||
| 15 | + */ | ||
| 16 | +@Service | ||
| 17 | +public class EmployeeServiceImpl extends BServiceImpl<Personnel, Integer> implements EmployeeService { | ||
| 18 | + @Override | ||
| 19 | + @Transactional | ||
| 20 | + public void validate_gh(Personnel personnel) throws ScheduleException { | ||
| 21 | + // 查询条件 | ||
| 22 | + Map<String, Object> param = new HashMap<>(); | ||
| 23 | + if (personnel.getId() != null) { | ||
| 24 | + param.put("id_ne", personnel.getId()); | ||
| 25 | + } | ||
| 26 | + param.put("companyCode_eq", personnel.getCompanyCode()); | ||
| 27 | + param.put("jobCode_eq", personnel.getJobCode()); | ||
| 28 | + if (!CollectionUtils.isEmpty(list(param))) { | ||
| 29 | + throw new ScheduleException("相同公司工号重复"); | ||
| 30 | + } | ||
| 31 | + } | ||
| 32 | +} |
src/main/resources/static/pages/forms/statement/historyMessage.html
| @@ -52,7 +52,6 @@ | @@ -52,7 +52,6 @@ | ||
| 52 | <tr class="hidden"> | 52 | <tr class="hidden"> |
| 53 | <th>序号</th> | 53 | <th>序号</th> |
| 54 | <th>线路</th> | 54 | <th>线路</th> |
| 55 | - <th>路牌</th> | ||
| 56 | <th>运营车辆</th> | 55 | <th>运营车辆</th> |
| 57 | <th>发送人</th> | 56 | <th>发送人</th> |
| 58 | <th>发送时间</th> | 57 | <th>发送时间</th> |
| @@ -151,17 +150,16 @@ | @@ -151,17 +150,16 @@ | ||
| 151 | {{each list as obj i}} | 150 | {{each list as obj i}} |
| 152 | <tr> | 151 | <tr> |
| 153 | <td>{{i+1}}</td> | 152 | <td>{{i+1}}</td> |
| 153 | + <td>{{obj[4]}}</td> | ||
| 154 | <td>{{obj[0]}}</td> | 154 | <td>{{obj[0]}}</td> |
| 155 | <td>{{obj[1]}}</td> | 155 | <td>{{obj[1]}}</td> |
| 156 | - <td>{{obj[2]}}</td> | ||
| 157 | <td>{{obj[3]}}</td> | 156 | <td>{{obj[3]}}</td> |
| 158 | - <td>{{obj[4]}}</td> | ||
| 159 | - <td>{{obj[5]}}</td> | 157 | + <td>{{obj[2]}}</td> |
| 160 | </tr> | 158 | </tr> |
| 161 | {{/each}} | 159 | {{/each}} |
| 162 | {{if list.length == 0}} | 160 | {{if list.length == 0}} |
| 163 | <tr> | 161 | <tr> |
| 164 | - <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td> | 162 | + <td colspan="6"><h6 class="muted">没有找到相关数据</h6></td> |
| 165 | </tr> | 163 | </tr> |
| 166 | {{/if}} | 164 | {{/if}} |
| 167 | </script> | 165 | </script> |
| 168 | \ No newline at end of file | 166 | \ No newline at end of file |
src/main/resources/static/pages/forms/statement/waybill.html
| @@ -332,30 +332,30 @@ | @@ -332,30 +332,30 @@ | ||
| 332 | </script> | 332 | </script> |
| 333 | <script type="text/html" id="ludan_3"> | 333 | <script type="text/html" id="ludan_3"> |
| 334 | <tr> | 334 | <tr> |
| 335 | + <td colspan="2">计划班次</td> | ||
| 336 | + <td>{{jhbc}}</td> | ||
| 335 | <td colspan="2">计划公里</td> | 337 | <td colspan="2">计划公里</td> |
| 336 | <td>{{jhlc}}</td> | 338 | <td>{{jhlc}}</td> |
| 337 | - <td colspan="2">烂班公里</td> | ||
| 338 | - <td>{{remMileage}}</td> | 339 | + <td colspan="2">烂班班次</td> |
| 340 | + <td>{{cjbc}}</td> | ||
| 341 | + <td colspan="3"> 烂班公里</td> | ||
| 342 | + <td colspan="2">{{remMileage}}</td> | ||
| 343 | + </tr> | ||
| 344 | + <tr> | ||
| 345 | + <td colspan="2">临加班次</td> | ||
| 346 | + <td>{{ljbc}}</td> | ||
| 339 | <td colspan="2">临加公里</td> | 347 | <td colspan="2">临加公里</td> |
| 340 | <td>{{addMileage}}</td> | 348 | <td>{{addMileage}}</td> |
| 349 | + <td colspan="2">实际班次</td> | ||
| 350 | + <td>{{sjbc}}</td> | ||
| 341 | <td colspan="3">营运公里</td> | 351 | <td colspan="3">营运公里</td> |
| 342 | <td colspan="2">{{yygl}}</td> | 352 | <td colspan="2">{{yygl}}</td> |
| 343 | </tr> | 353 | </tr> |
| 344 | <tr> | 354 | <tr> |
| 345 | <td colspan="2">空驶公里</td> | 355 | <td colspan="2">空驶公里</td> |
| 346 | - <td>{{ksgl}}</td> | 356 | + <td>{{zkslc}}</td> |
| 347 | <td colspan="2">总公里</td> | 357 | <td colspan="2">总公里</td> |
| 348 | <td>{{realMileage}}</td> | 358 | <td>{{realMileage}}</td> |
| 349 | - <td colspan="2">计划班次</td> | ||
| 350 | - <td>{{jhbc}}</td> | ||
| 351 | - <td colspan="3">烂班班次</td> | ||
| 352 | - <td colspan="2">{{cjbc}}</td> | ||
| 353 | - </tr> | ||
| 354 | - <tr> | ||
| 355 | - <td colspan="2">增加班次</td> | ||
| 356 | - <td>{{ljbc}}</td> | ||
| 357 | - <td colspan="2">实际班次</td> | ||
| 358 | - <td>{{sjbc}}</td> | ||
| 359 | <td colspan="2"></td> | 359 | <td colspan="2"></td> |
| 360 | <td></td> | 360 | <td></td> |
| 361 | <td colspan="3"></td> | 361 | <td colspan="3"></td> |
src/main/resources/static/pages/forms/statement/waybillQp.html
| @@ -336,10 +336,10 @@ | @@ -336,10 +336,10 @@ | ||
| 336 | <td>{{jhlc}}</td> | 336 | <td>{{jhlc}}</td> |
| 337 | <td colspan="2">营运公里</td> | 337 | <td colspan="2">营运公里</td> |
| 338 | <td >{{yygl}}</td> | 338 | <td >{{yygl}}</td> |
| 339 | - <td colspan="2">烂班公里</td> | ||
| 340 | - <td>{{remMileage}}</td> | ||
| 341 | - <td colspan="3">空驶公里</td> | ||
| 342 | - <td colspan="2">{{ksgl}}</td> | 339 | + <td colspan="2">空驶公里</td> |
| 340 | + <td>{{ksgl}}</td> | ||
| 341 | + <td colspan="3">烂班公里</td> | ||
| 342 | + <td colspan="2">{{remMileage}}</td> | ||
| 343 | 343 | ||
| 344 | 344 | ||
| 345 | </tr> | 345 | </tr> |
src/main/resources/static/real_control_v2/css/ct_table.css
src/main/resources/static/real_control_v2/css/main.css
| @@ -318,13 +318,13 @@ li.map-panel{ | @@ -318,13 +318,13 @@ li.map-panel{ | ||
| 318 | 318 | ||
| 319 | .uk-panel-box-danger { | 319 | .uk-panel-box-danger { |
| 320 | background-color: #fff1f0; | 320 | background-color: #fff1f0; |
| 321 | - color: #d85030; | 321 | + /*color: #d85030;*/ |
| 322 | border-color: rgba(216,80,48,.3); | 322 | border-color: rgba(216,80,48,.3); |
| 323 | } | 323 | } |
| 324 | 324 | ||
| 325 | -.uk-panel-box-danger .uk-panel-title { | 325 | +/*.uk-panel-box-danger .uk-panel-title { |
| 326 | color: #d85030; | 326 | color: #d85030; |
| 327 | -} | 327 | +}*/ |
| 328 | 328 | ||
| 329 | .uk-badge-default { | 329 | .uk-badge-default { |
| 330 | background-color: #a09b9c; | 330 | background-color: #a09b9c; |
| @@ -353,6 +353,9 @@ li.map-panel{ | @@ -353,6 +353,9 @@ li.map-panel{ | ||
| 353 | color: #c3c3c3; | 353 | color: #c3c3c3; |
| 354 | width: 20px; | 354 | width: 20px; |
| 355 | line-height: 20px; | 355 | line-height: 20px; |
| 356 | + background: #fff; | ||
| 357 | + text-align: center; | ||
| 358 | + z-index: 99; | ||
| 356 | } | 359 | } |
| 357 | 360 | ||
| 358 | .ct-bottom-drawer a.ct-bottom-drawer-close:hover{ | 361 | .ct-bottom-drawer a.ct-bottom-drawer-close:hover{ |
| @@ -396,5 +399,110 @@ li.map-panel{ | @@ -396,5 +399,110 @@ li.map-panel{ | ||
| 396 | stroke: rgb(62, 80, 179); | 399 | stroke: rgb(62, 80, 179); |
| 397 | fill: rgb(62, 80, 179); | 400 | fill: rgb(62, 80, 179); |
| 398 | width: 30px; | 401 | width: 30px; |
| 399 | - height: 140px; | ||
| 400 | -} | ||
| 401 | \ No newline at end of file | 402 | \ No newline at end of file |
| 403 | + height: 124px; | ||
| 404 | + rx: 5; | ||
| 405 | + transform: translate(-15px); | ||
| 406 | +} | ||
| 407 | + | ||
| 408 | + | ||
| 409 | +#station_route_spacing_chart_drawer svg g._item text{ | ||
| 410 | + writing-mode: tb; | ||
| 411 | + transform: translate(0, 9px); | ||
| 412 | + fill: #fff; | ||
| 413 | +} | ||
| 414 | + | ||
| 415 | +#station_route_spacing_chart_drawer svg g._item path{ | ||
| 416 | + stroke-width: 5.4px; | ||
| 417 | + stroke: #3e50b3; | ||
| 418 | +} | ||
| 419 | + | ||
| 420 | +#station_route_spacing_chart_drawer svg g._item circle{ | ||
| 421 | + r: 3px; | ||
| 422 | + fill: #ffffff; | ||
| 423 | +} | ||
| 424 | + | ||
| 425 | +#station_route_spacing_chart_drawer svg g._item path.arc_path{ | ||
| 426 | + stroke-width:1.3px; | ||
| 427 | + stroke:#3e50b3; | ||
| 428 | + stroke-dasharray: 1000; | ||
| 429 | + stroke-dashoffset: 1000; | ||
| 430 | + fill: none; | ||
| 431 | + | ||
| 432 | + animation: dash .9s; | ||
| 433 | + webkit-amimation: dash .9s; | ||
| 434 | + animation-fill-mode: forwards; | ||
| 435 | + -webkit-animation-fill-mode: forwards; | ||
| 436 | +} | ||
| 437 | + | ||
| 438 | +@keyframes dash { | ||
| 439 | + to { | ||
| 440 | + stroke-dashoffset: 0; | ||
| 441 | + stroke-dasharray: 4,4; | ||
| 442 | + } | ||
| 443 | +} | ||
| 444 | + | ||
| 445 | +@-webkit-keyframes dash{ | ||
| 446 | + to { | ||
| 447 | + stroke-dashoffset: 0; | ||
| 448 | + stroke-dasharray: 4,4; | ||
| 449 | + } | ||
| 450 | +} | ||
| 451 | + | ||
| 452 | +#station_route_spacing_chart_drawer svg g._item text.distance_text{ | ||
| 453 | + writing-mode: horizontal-tb; | ||
| 454 | + fill: #3e50b3; | ||
| 455 | +} | ||
| 456 | + | ||
| 457 | +#station_route_spacing_chart_drawer svg g._item rect.distance_rect{ | ||
| 458 | + height: 20px; | ||
| 459 | + width: 40px; | ||
| 460 | + fill: #fff !important; | ||
| 461 | + stroke-width: 0; | ||
| 462 | +} | ||
| 463 | + | ||
| 464 | +#station_route_spacing_chart_drawer .tl_desc_text{ | ||
| 465 | + position: absolute; | ||
| 466 | + top: 5px; | ||
| 467 | + left: 5px; | ||
| 468 | + font-size: 12px; | ||
| 469 | + color: #525050; | ||
| 470 | + font-family: 微软雅黑; | ||
| 471 | +} | ||
| 472 | + | ||
| 473 | +#station_route_spacing_chart_drawer svg g._item:first-child circle{ | ||
| 474 | + fill: #3e50b3; | ||
| 475 | + r: 6px; | ||
| 476 | +} | ||
| 477 | + | ||
| 478 | +#station_route_spacing_chart_drawer svg g._item:last-child circle{ | ||
| 479 | + fill: #3e50b3; | ||
| 480 | + r: 6px; | ||
| 481 | +} | ||
| 482 | + | ||
| 483 | + | ||
| 484 | +/* 下行 */ | ||
| 485 | +#station_route_spacing_chart_drawer svg.down g._item rect{ | ||
| 486 | + stroke: #dd3829; | ||
| 487 | + fill: #dd3829; | ||
| 488 | +} | ||
| 489 | + | ||
| 490 | +#station_route_spacing_chart_drawer svg.down g._item path{ | ||
| 491 | + stroke: #dd3829; | ||
| 492 | +} | ||
| 493 | + | ||
| 494 | +#station_route_spacing_chart_drawer svg.down g._item:first-child circle{ | ||
| 495 | + fill: #dd3829; | ||
| 496 | +} | ||
| 497 | + | ||
| 498 | +#station_route_spacing_chart_drawer svg.down g._item text.distance_text{ | ||
| 499 | + fill: #dd3829; | ||
| 500 | +} | ||
| 501 | + | ||
| 502 | +#station_route_spacing_chart_drawer svg.down g._item path.arc_path{ | ||
| 503 | + stroke: #dd3829; | ||
| 504 | +} | ||
| 505 | + | ||
| 506 | +#station_route_spacing_chart_drawer svg.down g._item:last-child circle{ | ||
| 507 | + fill: #dd3829; | ||
| 508 | +} | ||
| 509 | + |
src/main/resources/static/real_control_v2/fragments/geo/calc_station_space.html
| 1 | <!-- 嵌入下抽屉 --> | 1 | <!-- 嵌入下抽屉 --> |
| 2 | +<a class="ct-bottom-drawer-close"></a> | ||
| 2 | <div id="cal_station_space_drawer" style="width: 100%;height: 100%;"> | 3 | <div id="cal_station_space_drawer" style="width: 100%;height: 100%;"> |
| 3 | 4 | ||
| 4 | <div style="text-align: center;padding-top: 30px;" class="calcBeforePanel"> | 5 | <div style="text-align: center;padding-top: 30px;" class="calcBeforePanel"> |
| @@ -10,7 +11,7 @@ | @@ -10,7 +11,7 @@ | ||
| 10 | <span style="color: grey;font-size: 12px;">该操作会借用本地计算能力进行,如果你同意,请点击下方按钮!</span> | 11 | <span style="color: grey;font-size: 12px;">该操作会借用本地计算能力进行,如果你同意,请点击下方按钮!</span> |
| 11 | </p> | 12 | </p> |
| 12 | <p style="margin: 9px 0 9px 0;"> | 13 | <p style="margin: 9px 0 9px 0;"> |
| 13 | - <button class="uk-button uk-button-large uk-button-primary" type="button" id="startCalcBtn">开始计算</button> | 14 | + <button class="uk-button uk-button-large uk-button-primary" type="button" id="startCalcBtn">开始计算站距</button> |
| 14 | </p> | 15 | </p> |
| 15 | </div> | 16 | </div> |
| 16 | 17 | ||
| @@ -46,13 +47,17 @@ | @@ -46,13 +47,17 @@ | ||
| 46 | $('.calcBeforePanel', drawer).hide(); | 47 | $('.calcBeforePanel', drawer).hide(); |
| 47 | $('.pace', drawer).show(); | 48 | $('.pace', drawer).show(); |
| 48 | 49 | ||
| 49 | - startGeoCalc(spatialData); | 50 | + if(!spatialData.section || spatialData.section.length==0){ |
| 51 | + alert('线路编码无法对查到路段信息,请通知系统管理员'); | ||
| 52 | + notify_err('线路编码无法对查到路段信息,请通知系统管理员'); | ||
| 53 | + } | ||
| 54 | + else | ||
| 55 | + startGeoCalc(spatialData); | ||
| 50 | }); | 56 | }); |
| 51 | } | 57 | } |
| 52 | 58 | ||
| 53 | function startGeoCalc(spatialData) { | 59 | function startGeoCalc(spatialData) { |
| 54 | setCalcText('初始化数据'); | 60 | setCalcText('初始化数据'); |
| 55 | - //console.log('spatialData', spatialData); | ||
| 56 | //路段上下行分组排序 | 61 | //路段上下行分组排序 |
| 57 | var sections = gb_common.groupBy(spatialData.section, 'DIRECTIONS'); | 62 | var sections = gb_common.groupBy(spatialData.section, 'DIRECTIONS'); |
| 58 | sections[0].sort(sectionArrSort); | 63 | sections[0].sort(sectionArrSort); |
| @@ -71,25 +76,107 @@ | @@ -71,25 +76,107 @@ | ||
| 71 | 76 | ||
| 72 | setCalcText('计算上行数据'); | 77 | setCalcText('计算上行数据'); |
| 73 | var upCalcRs = calcStationSpace(stations[0], fullSections[0]); | 78 | var upCalcRs = calcStationSpace(stations[0], fullSections[0]); |
| 79 | + /*var upReverse = checkReverse(upCalcRs); | ||
| 80 | + if(upReverse){ | ||
| 81 | + | ||
| 82 | + }*/ | ||
| 74 | 83 | ||
| 75 | setCalcText('计算下行数据'); | 84 | setCalcText('计算下行数据'); |
| 76 | var downCalcRs = calcStationSpace(stations[1], fullSections[1]); | 85 | var downCalcRs = calcStationSpace(stations[1], fullSections[1]); |
| 77 | 86 | ||
| 87 | + var upSum = sumMileage(upCalcRs) / 1000 | ||
| 88 | + , downSum = sumMileage(downCalcRs) / 1000; | ||
| 89 | + //线路标准 | ||
| 90 | + var info = gb_data_basic.getLineInformation(sch.xlBm); | ||
| 91 | + | ||
| 92 | + //计算误差值 | ||
| 93 | + var upDiff = (info.upMileage - upSum).toFixed(2), | ||
| 94 | + downDiff = (info.downMileage - downSum).toFixed(2); | ||
| 95 | + | ||
| 96 | + //均摊误差值,统一数据 | ||
| 97 | + var upPlus = calcAvgDiff(upDiff, upCalcRs, info.upMileage); | ||
| 98 | + var downPlus = calcAvgDiff(downDiff, downCalcRs, info.downMileage); | ||
| 99 | + | ||
| 100 | + //写入localStorage | ||
| 78 | var locData = { | 101 | var locData = { |
| 79 | stations: {up: upCalcRs, down: downCalcRs}, | 102 | stations: {up: upCalcRs, down: downCalcRs}, |
| 80 | sections: {up: fullSections[0], down: fullSections[1]} | 103 | sections: {up: fullSections[0], down: fullSections[1]} |
| 81 | }; | 104 | }; |
| 82 | 105 | ||
| 83 | - window.localStorage.setItem('control_route_distance_' + sch.xlBm, JSON.stringify(locData)); | ||
| 84 | - //console.log('结果', locData); | 106 | + //误差小于3公里才接受 |
| 107 | + upSuccess = Math.abs(upDiff) <= 3; | ||
| 108 | + downSuccess = Math.abs(downDiff) <= 3; | ||
| 109 | + if(upSuccess && downSuccess){ | ||
| 110 | + window.localStorage.setItem('control_route_distance_' + sch.xlBm, JSON.stringify(locData)); | ||
| 111 | + //刷新父页面 | ||
| 112 | + console.log('$(drawer).parents', $(drawer).parents('.uk-modal')); | ||
| 113 | + $(drawer).parents('.uk-modal').trigger('refresh_station_space'); | ||
| 114 | + } | ||
| 115 | + | ||
| 116 | + //线路信息 | ||
| 117 | + var line = gb_data_basic.codeToLine[sch.xlBm]; | ||
| 118 | + var data = { | ||
| 119 | + upSum: upSum, | ||
| 120 | + downSum: downSum, | ||
| 121 | + upMileage: info.upMileage, | ||
| 122 | + downMileage: info.downMileage, | ||
| 123 | + upDiff: upDiff, | ||
| 124 | + downDiff: downDiff, | ||
| 125 | + upSuccess: upSuccess, | ||
| 126 | + downSuccess: downSuccess, | ||
| 127 | + lineId: line.id, | ||
| 128 | + upStationCount: upCalcRs.length, | ||
| 129 | + downStationCount: downCalcRs.length, | ||
| 130 | + upPlus: upPlus, | ||
| 131 | + downPlus : downPlus | ||
| 132 | + }; | ||
| 133 | + open_modal('/real_control_v2/fragments/geo/calc_station_space_rs.html' ,data, {bgclose:false, keyboard:false, modal:false}); | ||
| 134 | + //UIkit.modal.alert(template('cal_station_space_result-temp', data), {labels: {Ok: '我明白了'}}); | ||
| 135 | + | ||
| 136 | + //跳转 | ||
| 137 | + drawerLoadPage('/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html' | ||
| 138 | + , 'station_route_spacing_chart_drawer'); | ||
| 139 | + } | ||
| 140 | + | ||
| 141 | + | ||
| 142 | + //均摊差值 | ||
| 143 | + function calcAvgDiff(diff, array, validate) { | ||
| 144 | + //余数扔在第一个站距上 | ||
| 145 | + var more = (diff * 1000) % (array.length - 1); | ||
| 146 | + if(more > 0) | ||
| 147 | + array[1].toDistance = gb_common.accAdd(array[1].toDistance, more); | ||
| 148 | + | ||
| 149 | + var t = parseInt((diff * 1000) / (array.length - 1)); | ||
| 150 | + for(var i = 1; i < array.length; i++){ | ||
| 151 | + array[i].toDistance = gb_common.accAdd(array[i].toDistance, t); | ||
| 152 | + } | ||
| 153 | + | ||
| 154 | + var sumGl=0; | ||
| 155 | + $.each(array, function () { | ||
| 156 | + this.toDistanceGl = parseFloat((this.toDistance / 1000).toFixed(2)); | ||
| 157 | + sumGl = gb_common.accAdd(sumGl, this.toDistanceGl); | ||
| 158 | + }); | ||
| 159 | + | ||
| 160 | + //丢失的精度 | ||
| 161 | + diff = ((validate * 1000) - (sumGl * 1000)) / 1000; | ||
| 162 | + array[1].toDistanceGl = gb_common.accAdd(array[1].toDistanceGl, diff); | ||
| 163 | + return t; | ||
| 164 | + } | ||
| 165 | + | ||
| 166 | + function sumMileage(array) { | ||
| 167 | + var sum = 0; | ||
| 168 | + $.each(array, function () { | ||
| 169 | + sum += this.toDistance; | ||
| 170 | + }); | ||
| 171 | + return sum; | ||
| 85 | } | 172 | } |
| 86 | 173 | ||
| 87 | function sectionArrSort(s1, s2) { | 174 | function sectionArrSort(s1, s2) { |
| 88 | - return s1.SECTIONROUTE_CODE - s2.SECTIONROUTE_CODE; | 175 | + return s1['SECTIONROUTE_CODE'] - s2['SECTIONROUTE_CODE']; |
| 89 | } | 176 | } |
| 90 | 177 | ||
| 91 | function stationArrSort(s1, s2) { | 178 | function stationArrSort(s1, s2) { |
| 92 | - return s1.STATION_ROUTE_CODE - s2.STATION_ROUTE_CODE; | 179 | + return s1['STATION_ROUTE_CODE'] - s2['STATION_ROUTE_CODE']; |
| 93 | } | 180 | } |
| 94 | 181 | ||
| 95 | function setCalcText(t) { | 182 | function setCalcText(t) { |
| @@ -102,7 +189,7 @@ | @@ -102,7 +189,7 @@ | ||
| 102 | 189 | ||
| 103 | var vs, temps; | 190 | var vs, temps; |
| 104 | for (var i = 0, section; section = sectionArray[i++];) { | 191 | for (var i = 0, section; section = sectionArray[i++];) { |
| 105 | - vs = section.GSECTION_VECTOR; | 192 | + vs = section['GSECTION_VECTOR']; |
| 106 | temps = vs.substr(11, vs.length - 2).split(','); | 193 | temps = vs.substr(11, vs.length - 2).split(','); |
| 107 | 194 | ||
| 108 | connectCoords(coords, temps); | 195 | connectCoords(coords, temps); |
| @@ -111,6 +198,34 @@ | @@ -111,6 +198,34 @@ | ||
| 111 | } | 198 | } |
| 112 | 199 | ||
| 113 | function connectCoords(all, subArr) { | 200 | function connectCoords(all, subArr) { |
| 201 | +/* var point, len = all.length, inLine, overlap; | ||
| 202 | + | ||
| 203 | + var array = []; | ||
| 204 | + $.each(subArr, function (i, p) { | ||
| 205 | + var ts = p.split(' '); | ||
| 206 | + array.push({latitude: parseFloat(ts[1]), longitude: parseFloat(ts[0])}); | ||
| 207 | + }); | ||
| 208 | + | ||
| 209 | + //all 最后一个位于subArr 上的点位 | ||
| 210 | + for(var i = 0; i < len; i ++){ | ||
| 211 | + point = all[i]; | ||
| 212 | + for(var j = 1; j < array.length; j ++){ | ||
| 213 | + inLine = geolib.isPointInLine(point, array[j - 1], array[j]); | ||
| 214 | + if(inLine) | ||
| 215 | + overlap = {s1: i,s2: j}; | ||
| 216 | + } | ||
| 217 | + } | ||
| 218 | + | ||
| 219 | + //拼接 | ||
| 220 | + if(overlap){ | ||
| 221 | + all = all.slice(0, overlap.s1 + 1); | ||
| 222 | + array = array.slice(overlap.s2); | ||
| 223 | + } | ||
| 224 | + | ||
| 225 | + for(var z = 0; z < array.length; z++){ | ||
| 226 | + all.push(array[z]); | ||
| 227 | + } | ||
| 228 | + return all;*/ | ||
| 114 | 229 | ||
| 115 | var point, ts, len = all.length, inLine, sIndex = 0; | 230 | var point, ts, len = all.length, inLine, sIndex = 0; |
| 116 | if (len > 0) { | 231 | if (len > 0) { |
| @@ -141,14 +256,21 @@ | @@ -141,14 +256,21 @@ | ||
| 141 | 256 | ||
| 142 | //计算站点间距 | 257 | //计算站点间距 |
| 143 | function calcStationSpace(stations, coords) { | 258 | function calcStationSpace(stations, coords) { |
| 259 | + //起始路段坐标点 | ||
| 260 | + var sei = calcPointToLineNearPoint({latitude: stations[0]['G_LATY'],longitude: stations[0]['G_LONX'] | ||
| 261 | + }, coords).index; | ||
| 144 | 262 | ||
| 145 | var nearArray = []; | 263 | var nearArray = []; |
| 146 | - for (var i = 1; i < stations.length; i++) { | 264 | + if(sei > coords.length - 5){ |
| 265 | + //路段路由反向 | ||
| 266 | + coords.reverse(); | ||
| 267 | + } | ||
| 147 | 268 | ||
| 269 | + for (var i = 1; i < stations.length; i++) { | ||
| 148 | //点到线的最短距离 并计算交点坐标 | 270 | //点到线的最短距离 并计算交点坐标 |
| 149 | var rs = calcPointToLineNearPoint({ | 271 | var rs = calcPointToLineNearPoint({ |
| 150 | - latitude: stations[i].G_LATY, | ||
| 151 | - longitude: stations[i].G_LONX | 272 | + latitude: stations[i]['G_LATY'], |
| 273 | + longitude: stations[i]['G_LONX'] | ||
| 152 | }, coords); | 274 | }, coords); |
| 153 | rs.station = stations[i]; | 275 | rs.station = stations[i]; |
| 154 | 276 | ||
| @@ -156,7 +278,6 @@ | @@ -156,7 +278,6 @@ | ||
| 156 | coords.splice(rs.index, 0, rs.intersection); | 278 | coords.splice(rs.index, 0, rs.intersection); |
| 157 | 279 | ||
| 158 | nearArray.push(rs); | 280 | nearArray.push(rs); |
| 159 | - //console.log('站点' + i + '计算结果', rs.intersection, rs); | ||
| 160 | } | 281 | } |
| 161 | 282 | ||
| 162 | //根据交点截断line,并计算距离 | 283 | //根据交点截断line,并计算距离 |
| @@ -167,8 +288,7 @@ | @@ -167,8 +288,7 @@ | ||
| 167 | for (; s < e; s++) { | 288 | for (; s < e; s++) { |
| 168 | distance += geolib.getDistance(coords[s], coords[s + 1]); | 289 | distance += geolib.getDistance(coords[s], coords[s + 1]); |
| 169 | } | 290 | } |
| 170 | - | ||
| 171 | - this.toDistance = distance; | 291 | + this.toDistance = parseFloat(distance.toFixed(2)); |
| 172 | s = e; | 292 | s = e; |
| 173 | }); | 293 | }); |
| 174 | 294 | ||
| @@ -225,6 +345,13 @@ | @@ -225,6 +345,13 @@ | ||
| 225 | return {longitude: lon, latitude: lat}; | 345 | return {longitude: lon, latitude: lat}; |
| 226 | } | 346 | } |
| 227 | 347 | ||
| 348 | + //页面切换 | ||
| 349 | + function drawerLoadPage(url, id) { | ||
| 350 | + $(drawer).parent('.ct-bottom-drawer-body').load(url, function () { | ||
| 351 | + $('#' + id).trigger('drawer-init', {sch: sch}); | ||
| 352 | + }); | ||
| 353 | + } | ||
| 354 | + | ||
| 228 | })(); | 355 | })(); |
| 229 | </script> | 356 | </script> |
| 230 | </div> | 357 | </div> |
| 231 | \ No newline at end of file | 358 | \ No newline at end of file |
src/main/resources/static/real_control_v2/fragments/geo/calc_station_space_rs.html
0 → 100644
| 1 | +<div class="uk-modal ct-form-modal" id="calc_station_space_rs-modal"> | ||
| 2 | + <div class="uk-modal-dialog" style="width: 900px;"> | ||
| 3 | + <div class="uk-modal-header"> | ||
| 4 | + <h2>计算完成</h2></div> | ||
| 5 | + | ||
| 6 | + <div class="_modal_body"> | ||
| 7 | + | ||
| 8 | + </div> | ||
| 9 | + | ||
| 10 | + <div class="uk-modal-footer uk-text-right" > | ||
| 11 | + <button type="button" class="uk-button uk-button-primary uk-modal-close" autofocus>我明白了</button> | ||
| 12 | + </div> | ||
| 13 | + </div> | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + <script id="cal_station_space_result-temp" type="text/html"> | ||
| 17 | + <div> | ||
| 18 | + <div> | ||
| 19 | + <table class="uk-table"> | ||
| 20 | + <tr> | ||
| 21 | + <th>走向</th> | ||
| 22 | + <th> | ||
| 23 | + 计算结果(总里程) | ||
| 24 | + </th> | ||
| 25 | + <th> | ||
| 26 | + 线路标准(总里程) | ||
| 27 | + </th> | ||
| 28 | + <th> | ||
| 29 | + 误差(公里) | ||
| 30 | + </th> | ||
| 31 | + <th> | ||
| 32 | + 站点数 | ||
| 33 | + </th> | ||
| 34 | + <th> | ||
| 35 | + 处理 | ||
| 36 | + </th> | ||
| 37 | + </tr> | ||
| 38 | + <tr> | ||
| 39 | + <td> | ||
| 40 | + 上行 | ||
| 41 | + </td> | ||
| 42 | + <td> | ||
| 43 | + {{upSum}} | ||
| 44 | + </td> | ||
| 45 | + <td> | ||
| 46 | + <a href="/pages/base/lineinformation/list.html?no={{lineId}}" target="_blank"> | ||
| 47 | + {{upMileage}} | ||
| 48 | + </a> | ||
| 49 | + </td> | ||
| 50 | + <td> | ||
| 51 | + {{upDiff}} | ||
| 52 | + </td> | ||
| 53 | + <td> | ||
| 54 | + {{upStationCount}} | ||
| 55 | + </td> | ||
| 56 | + <td> | ||
| 57 | + {{if upSuccess}} | ||
| 58 | + <div> 每站{{if upPlus>0}}加{{else}}减{{/if}} {{upPlusAbs}} 米 </div> | ||
| 59 | + {{else}} | ||
| 60 | + <div style="color: red">误差过大,请确认基础数据的准确性!</div> | ||
| 61 | + {{/if}} | ||
| 62 | + </td> | ||
| 63 | + </tr> | ||
| 64 | + | ||
| 65 | + <tr> | ||
| 66 | + <td> | ||
| 67 | + 下行 | ||
| 68 | + </td> | ||
| 69 | + <td> | ||
| 70 | + {{downSum}} | ||
| 71 | + </td> | ||
| 72 | + <td> | ||
| 73 | + <a href="/pages/base/lineinformation/list.html?no={{lineId}}" target="_blank"> | ||
| 74 | + {{downMileage}} | ||
| 75 | + </a> | ||
| 76 | + </td> | ||
| 77 | + <td> | ||
| 78 | + {{downDiff}} | ||
| 79 | + </td> | ||
| 80 | + <td> | ||
| 81 | + {{downStationCount}} | ||
| 82 | + </td> | ||
| 83 | + <td> | ||
| 84 | + {{if downSuccess}} | ||
| 85 | + <div>每站{{if downPlus>0}}加{{else}}减{{/if}} {{downPlusAbs}} 米 </div> | ||
| 86 | + {{else}} | ||
| 87 | + <div style="color: red">误差过大,请确认基础数据的准确性!</div> | ||
| 88 | + {{/if}} | ||
| 89 | + </td> | ||
| 90 | + </tr> | ||
| 91 | + </table> | ||
| 92 | + </div> | ||
| 93 | + <h6 style="color: #808080">如果希望计算结果更精准,请检查线路和站点走向,并确认站点准确的点在路段上</h6> | ||
| 94 | + </div> | ||
| 95 | + </script> | ||
| 96 | + | ||
| 97 | + <script> | ||
| 98 | + (function () { | ||
| 99 | + var modal = '#calc_station_space_rs-modal'; | ||
| 100 | + | ||
| 101 | + $(modal).on('init', function (e,data) { | ||
| 102 | + data.upPlusAbs = Math.abs(data.upPlus); | ||
| 103 | + data.downPlusAbs = Math.abs(data.downPlus); | ||
| 104 | + | ||
| 105 | + var htmlStr = template('cal_station_space_result-temp', data); | ||
| 106 | + $('._modal_body', modal).html(htmlStr); | ||
| 107 | + }); | ||
| 108 | + })(); | ||
| 109 | + </script> | ||
| 110 | +</div> |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
| @@ -188,8 +188,8 @@ | @@ -188,8 +188,8 @@ | ||
| 188 | 188 | ||
| 189 | function selectedDl(sch) { | 189 | function selectedDl(sch) { |
| 190 | //默认选中项 | 190 | //默认选中项 |
| 191 | - $('[name=lineSelect]', f).val(sch.xlBm).trigger('change'); | ||
| 192 | - $('[name=lpName]', f).val(sch.lpName).trigger('change'); | 191 | + $('[name=lineSelect]', modal).val(sch.xlBm).trigger('change'); |
| 192 | + $('[name=lpName]', modal).val(sch.lpName).trigger('change'); | ||
| 193 | var dl = $('.main-schedule-table', modal).find('dl[data-id=' + sch.id + ']').trigger('click'); | 193 | var dl = $('.main-schedule-table', modal).find('dl[data-id=' + sch.id + ']').trigger('click'); |
| 194 | //滚动到可视区域 | 194 | //滚动到可视区域 |
| 195 | var cont = $('.main-schedule-wrap', modal); | 195 | var cont = $('.main-schedule-wrap', modal); |
| @@ -209,7 +209,7 @@ | @@ -209,7 +209,7 @@ | ||
| 209 | 209 | ||
| 210 | //刷新主任务表格 | 210 | //刷新主任务表格 |
| 211 | var m_s_table_update = function (e, opts) { | 211 | var m_s_table_update = function (e, opts) { |
| 212 | - var lineCode = $('[name=lineSelect]', f).val(); | 212 | + var lineCode = $('[name=lineSelect]', modal).val(); |
| 213 | //重新获取班次数据 | 213 | //重新获取班次数据 |
| 214 | schList = gb_schedule_table.findScheduleByLine(lineCode); | 214 | schList = gb_schedule_table.findScheduleByLine(lineCode); |
| 215 | lp2SchMap = gb_common.groupBy(schList, 'lpName'); | 215 | lp2SchMap = gb_common.groupBy(schList, 'lpName'); |
| @@ -291,10 +291,12 @@ | @@ -291,10 +291,12 @@ | ||
| 291 | gb_common.$del('/childTask/' + id, function (rs) { | 291 | gb_common.$del('/childTask/' + id, function (rs) { |
| 292 | gb_schedule_table.updateSchedule(rs.t); | 292 | gb_schedule_table.updateSchedule(rs.t); |
| 293 | notify_succ('删除子任务成功!'); | 293 | notify_succ('删除子任务成功!'); |
| 294 | - //刷新班次列表 | ||
| 295 | - m_s_table_update(); | ||
| 296 | - //选中班次 | ||
| 297 | - selectedDl(rs.t); | 294 | + setTimeout(function () { |
| 295 | + //刷新班次列表 | ||
| 296 | + m_s_table_update(); | ||
| 297 | + //选中班次 | ||
| 298 | + selectedDl(rs.t); | ||
| 299 | + }, 300); | ||
| 298 | }); | 300 | }); |
| 299 | }, '确定删除'); | 301 | }, '确定删除'); |
| 300 | }; | 302 | }; |
| @@ -322,8 +324,7 @@ | @@ -322,8 +324,7 @@ | ||
| 322 | name: "添加子任务", | 324 | name: "添加子任务", |
| 323 | items: { | 325 | items: { |
| 324 | 'add_sub_task_in': { | 326 | 'add_sub_task_in': { |
| 325 | - name: '回场', | ||
| 326 | - disabled: true | 327 | + name: '回场' |
| 327 | }, | 328 | }, |
| 328 | 'add_sub_task_out': { | 329 | 'add_sub_task_out': { |
| 329 | name: '出场', | 330 | name: '出场', |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_inpark.html
| @@ -9,7 +9,22 @@ | @@ -9,7 +9,22 @@ | ||
| 9 | <div class="uk-panel uk-panel-box uk-panel-box-primary"> | 9 | <div class="uk-panel uk-panel-box uk-panel-box-primary"> |
| 10 | <div class="uk-panel-badge uk-badge">营运</div> | 10 | <div class="uk-panel-badge uk-badge">营运</div> |
| 11 | <h3 class="uk-panel-title">线路上站点间</h3> | 11 | <h3 class="uk-panel-title">线路上站点间</h3> |
| 12 | - <form class="uk-form uk-form-horizontal" service_form> | 12 | + <form class="uk-form uk-form-horizontal inpark_form" service_form> |
| 13 | + <input type="hidden" name="type2" value="1"> | ||
| 14 | + <input type="hidden" name="mileageType" value="service"> | ||
| 15 | + <div class="uk-grid"> | ||
| 16 | + <div class="uk-width-3-10"> | ||
| 17 | + <div class="uk-form-row"> | ||
| 18 | + <label class="uk-form-label">班次类型 </label> | ||
| 19 | + </div> | ||
| 20 | + </div> | ||
| 21 | + <div class="uk-width-7-10 pl5"> | ||
| 22 | + <select name="type1" class="ct_focus" disabled> | ||
| 23 | + <option value="正常">正常</option> | ||
| 24 | + <option value="临加">临加</option> | ||
| 25 | + </select> | ||
| 26 | + </div> | ||
| 27 | + </div> | ||
| 13 | <div class="uk-grid"> | 28 | <div class="uk-grid"> |
| 14 | <div class="uk-width-3-10"> | 29 | <div class="uk-width-3-10"> |
| 15 | <div class="uk-form-row"> | 30 | <div class="uk-form-row"> |
| @@ -37,7 +52,7 @@ | @@ -37,7 +52,7 @@ | ||
| 37 | </div> | 52 | </div> |
| 38 | </div> | 53 | </div> |
| 39 | <div class="uk-width-7-10 pl5"> | 54 | <div class="uk-width-7-10 pl5"> |
| 40 | - <input type="text" name="mileageType" required> | 55 | + <input type="text" name="mileage" required> |
| 41 | </div> | 56 | </div> |
| 42 | </div> | 57 | </div> |
| 43 | <div class="uk-grid"> | 58 | <div class="uk-grid"> |
| @@ -67,7 +82,22 @@ | @@ -67,7 +82,22 @@ | ||
| 67 | <div class="uk-panel uk-panel-box uk-panel-box-secondary"> | 82 | <div class="uk-panel uk-panel-box uk-panel-box-secondary"> |
| 68 | <div class="uk-panel-badge uk-badge uk-badge-default">空驶</div> | 83 | <div class="uk-panel-badge uk-badge uk-badge-default">空驶</div> |
| 69 | <h3 class="uk-panel-title">进场</h3> | 84 | <h3 class="uk-panel-title">进场</h3> |
| 70 | - <form class="uk-form uk-form-horizontal" empty_form> | 85 | + <form class="uk-form uk-form-horizontal inpark_form" empty_form> |
| 86 | + <input type="hidden" name="type2" value="2"> | ||
| 87 | + <input type="hidden" name="mileageType" value="empty"> | ||
| 88 | + <div class="uk-grid"> | ||
| 89 | + <div class="uk-width-3-10"> | ||
| 90 | + <div class="uk-form-row"> | ||
| 91 | + <label class="uk-form-label">班次类型 </label> | ||
| 92 | + </div> | ||
| 93 | + </div> | ||
| 94 | + <div class="uk-width-7-10 pl5"> | ||
| 95 | + <select name="type1" class="ct_focus"> | ||
| 96 | + <option value="正常">正常</option> | ||
| 97 | + <option value="临加">临加</option> | ||
| 98 | + </select> | ||
| 99 | + </div> | ||
| 100 | + </div> | ||
| 71 | <div class="uk-grid"> | 101 | <div class="uk-grid"> |
| 72 | <div class="uk-width-3-10"> | 102 | <div class="uk-width-3-10"> |
| 73 | <div class="uk-form-row"> | 103 | <div class="uk-form-row"> |
| @@ -95,8 +125,8 @@ | @@ -95,8 +125,8 @@ | ||
| 95 | </div> | 125 | </div> |
| 96 | </div> | 126 | </div> |
| 97 | <div class="uk-width-7-10 pl5"> | 127 | <div class="uk-width-7-10 pl5"> |
| 98 | - <input type="text" name="mileageType" required style="width: calc(100% - 62px);"> | ||
| 99 | - <a style="font-size: 12px;">路径(3)</a> | 128 | + <input type="text" name="mileage" required style="width: calc(100% - 62px);"> |
| 129 | + <a style="font-size: 12px;color: grey;cursor: default;" data-uk-tooltip title="可选择回场路径,设置途径点位。暂不开放" id="inpark_paths_link">路径(<span>0</span>)</a> | ||
| 100 | </div> | 130 | </div> |
| 101 | </div> | 131 | </div> |
| 102 | <div class="uk-grid"> | 132 | <div class="uk-grid"> |
| @@ -126,7 +156,13 @@ | @@ -126,7 +156,13 @@ | ||
| 126 | <div class="uk-panel uk-panel-box uk-panel-box-danger"> | 156 | <div class="uk-panel uk-panel-box uk-panel-box-danger"> |
| 127 | <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div> | 157 | <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div> |
| 128 | <h3 class="uk-panel-title">线路上站点间</h3> | 158 | <h3 class="uk-panel-title">线路上站点间</h3> |
| 129 | - <form class="uk-form uk-form-horizontal" destroy_form> | 159 | + <form class="uk-form uk-form-horizontal inpark_form" destroy_form> |
| 160 | + <input type="hidden" value="正常" name="type1"> | ||
| 161 | + <input type="hidden" value="1" name="type2"> | ||
| 162 | + <input type="hidden" name="mileageType" value="service"> | ||
| 163 | + <input type="hidden" name="destroy" value="true"> | ||
| 164 | + <div class="uk-grid" style="height: 30px;"> | ||
| 165 | + </div> | ||
| 130 | <div class="uk-grid"> | 166 | <div class="uk-grid"> |
| 131 | <div class="uk-width-3-10"> | 167 | <div class="uk-width-3-10"> |
| 132 | <div class="uk-form-row"> | 168 | <div class="uk-form-row"> |
| @@ -154,7 +190,7 @@ | @@ -154,7 +190,7 @@ | ||
| 154 | </div> | 190 | </div> |
| 155 | </div> | 191 | </div> |
| 156 | <div class="uk-width-7-10 pl5"> | 192 | <div class="uk-width-7-10 pl5"> |
| 157 | - <input type="text" name="mileageType" required> | 193 | + <input type="text" name="mileage" required> |
| 158 | </div> | 194 | </div> |
| 159 | </div> | 195 | </div> |
| 160 | <div class="uk-grid"> | 196 | <div class="uk-grid"> |
| @@ -182,13 +218,13 @@ | @@ -182,13 +218,13 @@ | ||
| 182 | </div> | 218 | </div> |
| 183 | 219 | ||
| 184 | <form class="uk-form" style="margin-top: 15px; padding: 0 10px 0 0;"> | 220 | <form class="uk-form" style="margin-top: 15px; padding: 0 10px 0 0;"> |
| 185 | - <textarea placeholder="备注" style="width: 100%;height: 70px;"></textarea> | 221 | + <textarea placeholder="备注" style="width: 100%;height: 70px;" id="globalRemarks"></textarea> |
| 186 | </form> | 222 | </form> |
| 187 | </div> | 223 | </div> |
| 188 | 224 | ||
| 189 | <div class="uk-modal-footer uk-text-right"> | 225 | <div class="uk-modal-footer uk-text-right"> |
| 190 | <button type="button" class="uk-button uk-modal-close">取消</button> | 226 | <button type="button" class="uk-button uk-modal-close">取消</button> |
| 191 | - <button type="button" class="uk-button uk-button-primary">提交子任务</button> | 227 | + <button type="button" class="uk-button uk-button-primary" id="submitChildTaskBtn">提交子任务</button> |
| 192 | 228 | ||
| 193 | <div class="ct-footer-left"> | 229 | <div class="ct-footer-left"> |
| 194 | <a id="betweenStationRangeCalc" data-drawer-id="station_route_spacing_chart_drawer">站点间公里不准?</a> | 230 | <a id="betweenStationRangeCalc" data-drawer-id="station_route_spacing_chart_drawer">站点间公里不准?</a> |
| @@ -197,8 +233,6 @@ | @@ -197,8 +233,6 @@ | ||
| 197 | </div> | 233 | </div> |
| 198 | 234 | ||
| 199 | <div class="ct-bottom-drawer"> | 235 | <div class="ct-bottom-drawer"> |
| 200 | - <a class="ct-bottom-drawer-close"></a> | ||
| 201 | - | ||
| 202 | <div class="ct-bottom-drawer-body"></div> | 236 | <div class="ct-bottom-drawer-body"></div> |
| 203 | </div> | 237 | </div> |
| 204 | 238 | ||
| @@ -215,34 +249,26 @@ | @@ -215,34 +249,26 @@ | ||
| 215 | var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他']; | 249 | var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他']; |
| 216 | $(modal).on('init', function (e, data) { | 250 | $(modal).on('init', function (e, data) { |
| 217 | sch = data.sch; | 251 | sch = data.sch; |
| 218 | - //var formHtml = template('sub-task-inpark-form-temp', {sch:sch, adjustExps: adjustExps}); | ||
| 219 | - //$('form', modal).html(formHtml); | ||
| 220 | - //字典转换 | ||
| 221 | - //dictionaryUtils.transformDom($('.nt-dictionary', modal)); | ||
| 222 | 252 | ||
| 223 | //站点路由 | 253 | //站点路由 |
| 224 | stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | 254 | stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { |
| 225 | return a.stationRouteCode - b.stationRouteCode; | 255 | return a.stationRouteCode - b.stationRouteCode; |
| 226 | }), 'directions')[sch.xlDir]; | 256 | }), 'directions')[sch.xlDir]; |
| 227 | //空驶终点(停车场) | 257 | //空驶终点(停车场) |
| 258 | + //切换进场终点 | ||
| 259 | + $('select[name=endStation]', emptyForm).on('change', inparkNavigation); | ||
| 228 | $.get('/basic/parks', function (rs) { | 260 | $.get('/basic/parks', function (rs) { |
| 229 | parks = rs; | 261 | parks = rs; |
| 230 | var opts = ''; | 262 | var opts = ''; |
| 231 | for (var code in parks) { | 263 | for (var code in parks) { |
| 232 | opts += '<option value="' + code + '">' + parks[code] + '</option>'; | 264 | opts += '<option value="' + code + '">' + parks[code] + '</option>'; |
| 233 | } | 265 | } |
| 234 | - $('select[name=endStation]', emptyForm).html(opts).val(information.carPark); | 266 | + $('select[name=endStation]', emptyForm).html(opts).val(information.carPark).trigger('change'); |
| 235 | }); | 267 | }); |
| 236 | //线路标准 | 268 | //线路标准 |
| 237 | information = gb_data_basic.getLineInformation(sch.xlBm); | 269 | information = gb_data_basic.getLineInformation(sch.xlBm); |
| 238 | //本地存储的站点耗时 | 270 | //本地存储的站点耗时 |
| 239 | - try { | ||
| 240 | - timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm); | ||
| 241 | - if (timeLocStations) | ||
| 242 | - timeLocStations = JSON.parse(timeLocStations).stations[sch.xlDir == 0 ? 'up' : 'down']; | ||
| 243 | - } catch (e) { | ||
| 244 | - console.log(e); | ||
| 245 | - } | 271 | + getLocStationsSpace(); |
| 246 | 272 | ||
| 247 | //设置默认值 | 273 | //设置默认值 |
| 248 | setDefaultVal(); | 274 | setDefaultVal(); |
| @@ -263,18 +289,81 @@ | @@ -263,18 +289,81 @@ | ||
| 263 | }).trigger('change'); | 289 | }).trigger('change'); |
| 264 | 290 | ||
| 265 | 291 | ||
| 292 | + var dataArray = []; | ||
| 293 | + var fs = $('form.inpark_form', modal).formValidation({ | ||
| 294 | + framework: 'uikit', | ||
| 295 | + locale: 'zh_CN' | ||
| 296 | + }); | ||
| 297 | + fs.on('success.form.fv', function(e) { | ||
| 298 | + e.preventDefault(); | ||
| 299 | + if($(this).is(':hidden')) | ||
| 300 | + return; | ||
| 301 | + dataArray.push($.extend($(this).serializeJSON(), getDisabledVal(this) | ||
| 302 | + , {remarks: $('#globalRemarks',modal).val(), 'schedule.id': sch.id})); | ||
| 303 | + $(this).data('valid', true); | ||
| 304 | + | ||
| 305 | + if(allValidSuccess()){ | ||
| 306 | + var i = 0; | ||
| 307 | + (function () { | ||
| 308 | + var f = arguments.callee; | ||
| 309 | + if(i >= dataArray.length){ | ||
| 310 | + UIkit.modal(modal).hide(); | ||
| 311 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | ||
| 312 | + return; | ||
| 313 | + } | ||
| 314 | + var data = dataArray[i]; | ||
| 315 | + gb_common.$post('/childTask', data, function (rs) { | ||
| 316 | + notify_succ('子任务添加成功'); | ||
| 317 | + gb_schedule_table.updateSchedule(rs.t); | ||
| 318 | + i++; | ||
| 319 | + f(); | ||
| 320 | + }); | ||
| 321 | + })(); | ||
| 322 | + } | ||
| 323 | + }); | ||
| 324 | + | ||
| 325 | + //校验不过 | ||
| 326 | + fs.on('err.field.fv', function () { | ||
| 327 | + $('#submitChildTaskBtn', modal).removeClass('disabled').removeAttr('disabled'); | ||
| 328 | + }); | ||
| 329 | + | ||
| 266 | //submit | 330 | //submit |
| 267 | - /*var f = $('form', modal).formValidation({ | ||
| 268 | - framework: 'uikit', | ||
| 269 | - locale: 'zh_CN', | ||
| 270 | - }); | ||
| 271 | - f.on('success.form.fv', function(e) { | ||
| 272 | - disabled_submit_btn(this); | ||
| 273 | - e.preventDefault(); | ||
| 274 | - var data = $(this).serializeJSON(); | ||
| 275 | - | ||
| 276 | - });*/ | 331 | + $('#submitChildTaskBtn', modal).on('click', function () { |
| 332 | + $(this).addClass('disabled').attr('disabled','disabled'); | ||
| 333 | + dataArray = []; | ||
| 334 | + fs.data('valid', false); | ||
| 335 | + fs.formValidation('validate'); | ||
| 336 | + //fs.submit(); | ||
| 337 | + }); | ||
| 338 | + | ||
| 339 | + //选择烂班原因 | ||
| 340 | + $('select[name=destroyReason]', destroyForm).on('change', function () { | ||
| 341 | + var e =$('#globalRemarks', modal); | ||
| 342 | + e.val(e.val() + $(this).val() + ','); | ||
| 343 | + }); | ||
| 277 | }); | 344 | }); |
| 345 | + | ||
| 346 | + function allValidSuccess() { | ||
| 347 | + var flag = true; | ||
| 348 | + $('form.inpark_form:visible', modal).each(function (i, f) { | ||
| 349 | + if(!$(f).data('valid')){ | ||
| 350 | + flag = false; | ||
| 351 | + return false; | ||
| 352 | + } | ||
| 353 | + }); | ||
| 354 | + return flag; | ||
| 355 | + } | ||
| 356 | + | ||
| 357 | + //获取表单disabled 项的值 | ||
| 358 | + function getDisabledVal(f) { | ||
| 359 | + var rs = {}; | ||
| 360 | + $('input,select', f).each(function () { | ||
| 361 | + if($(this).attr('disabled')){ | ||
| 362 | + rs[$(this).attr('name')]=$(this).val(); | ||
| 363 | + } | ||
| 364 | + }); | ||
| 365 | + return rs; | ||
| 366 | + } | ||
| 278 | 367 | ||
| 279 | function setDefaultVal() { | 368 | function setDefaultVal() { |
| 280 | var routeOpts = ''; | 369 | var routeOpts = ''; |
| @@ -299,6 +388,70 @@ | @@ -299,6 +388,70 @@ | ||
| 299 | 388 | ||
| 300 | //营运开始时间 | 389 | //营运开始时间 |
| 301 | $('input[name=startDate]', serviceForm).val(sch.dfsj); | 390 | $('input[name=startDate]', serviceForm).val(sch.dfsj); |
| 391 | + //营运班次类型 | ||
| 392 | + $('input[name=type1]', serviceForm).val(sch['sflj']?'临加':'正常'); | ||
| 393 | + } | ||
| 394 | + | ||
| 395 | + //点击 路径 | ||
| 396 | + $('#inpark_paths_link', modal).on('click', function () { | ||
| 397 | + | ||
| 398 | + }); | ||
| 399 | + | ||
| 400 | + //进场导航 | ||
| 401 | + var drivingRouteResult; | ||
| 402 | + function inparkNavigation() { | ||
| 403 | + var start = $('select[name=startStation]', emptyForm).val() | ||
| 404 | + ,end = $('select[name=endStation]', emptyForm).val(); | ||
| 405 | + | ||
| 406 | + if(!end) return; | ||
| 407 | + | ||
| 408 | + var station = getStationByCode(start).station | ||
| 409 | + ,park = gb_data_basic.getCarparkByCode(end); | ||
| 410 | + | ||
| 411 | + if(!park){ | ||
| 412 | + notify_err('无法找到停车场的坐标对照!!!'); | ||
| 413 | + return; | ||
| 414 | + } | ||
| 415 | + var tArray = park['gCenterPoint'].split(' '); | ||
| 416 | + var sCoord = TransGPS.wgsToBD(station['gLaty'], station['gLonx']) | ||
| 417 | + ,eCoord = TransGPS.wgsToBD(parseFloat(tArray[1]), parseFloat(tArray[0])); | ||
| 418 | + | ||
| 419 | + var sp = new BMap.Point(sCoord.lng,sCoord.lat); | ||
| 420 | + var ep = new BMap.Point(eCoord.lng,eCoord.lat); | ||
| 421 | + | ||
| 422 | + var driving = new BMap.DrivingRoute('上海', { | ||
| 423 | + onSearchComplete: function (rs) { | ||
| 424 | + drivingRouteResult = rs; | ||
| 425 | + calcInparkMileage(0); | ||
| 426 | + } | ||
| 427 | + }); | ||
| 428 | + driving.search(sp,ep); | ||
| 429 | + } | ||
| 430 | + | ||
| 431 | + function calcInparkMileage(index) { | ||
| 432 | + var count = drivingRouteResult.getNumPlans(); | ||
| 433 | + | ||
| 434 | + //选择方案 | ||
| 435 | + var routePlan = drivingRouteResult.getPlan(index); | ||
| 436 | + //里程 | ||
| 437 | + var mileage = routePlan.getDistance(false); | ||
| 438 | + $('input[name=mileage]', emptyForm).val(mileage / 1000); | ||
| 439 | + //结束时间 | ||
| 440 | + var duratio = routePlan.getDuration(false); | ||
| 441 | + var st = $('input[name=startDate]', emptyForm).val(); | ||
| 442 | + var ets = moment(st, 'HH:mm').add(duratio, 'seconds').format('HH:mm'); | ||
| 443 | + $('input[name=endDate]', emptyForm).val(ets); | ||
| 444 | + | ||
| 445 | + | ||
| 446 | + $('#inpark_paths_link span', modal).text(count); | ||
| 447 | + } | ||
| 448 | + | ||
| 449 | + function getStationByCode(code) { | ||
| 450 | + for(var i = 0; i < stationRoutes.length; i++){ | ||
| 451 | + if(stationRoutes[i]['stationCode']==code) | ||
| 452 | + return stationRoutes[i]; | ||
| 453 | + } | ||
| 454 | + return null; | ||
| 302 | } | 455 | } |
| 303 | 456 | ||
| 304 | function reClac() { | 457 | function reClac() { |
| @@ -311,33 +464,78 @@ | @@ -311,33 +464,78 @@ | ||
| 311 | e = $('select[name=endStation]', serviceForm).val(); | 464 | e = $('select[name=endStation]', serviceForm).val(); |
| 312 | var sMileage = calcMileage(s, e); | 465 | var sMileage = calcMileage(s, e); |
| 313 | if(sMileage >= 0) | 466 | if(sMileage >= 0) |
| 314 | - $('input[name=mileageType]', serviceForm).val(sMileage); | 467 | + $('input[name=mileage]', serviceForm).val(sMileage); |
| 315 | 468 | ||
| 469 | + //营运结束时间 | ||
| 470 | + var et = sch.dfsjT + (parseInt(sMileage / sch.jhlc * sch.bcsj) * 60 * 1000) | ||
| 471 | + ,ets = et > sch.zdsjT?sch.zdsj:moment(et).format('HH:mm'); | ||
| 472 | + $('input[name=endDate]', serviceForm).val(ets); | ||
| 473 | + | ||
| 474 | + //有烂班 | ||
| 316 | if (serviceEnd != esCode) { | 475 | if (serviceEnd != esCode) { |
| 317 | //烂班起点 == 营运终点 | 476 | //烂班起点 == 营运终点 |
| 318 | $('select[name=startStation]', destroyForm).val(serviceEnd); | 477 | $('select[name=startStation]', destroyForm).val(serviceEnd); |
| 478 | + //计算烂班公里 | ||
| 479 | + s = $('select[name=startStation]', destroyForm).val(); | ||
| 480 | + e = $('select[name=endStation]', destroyForm).val(); | ||
| 481 | + var dMileage = calcMileage(s, e); | ||
| 482 | + $('input[name=mileage]', destroyForm).val(dMileage); | ||
| 483 | + //烂班开始时间 | ||
| 484 | + $('input[name=startDate]', destroyForm).val(ets); | ||
| 319 | } | 485 | } |
| 486 | + | ||
| 487 | + //进场开始时间 | ||
| 488 | + $('input[name=startDate]', emptyForm).val(ets); | ||
| 489 | + | ||
| 490 | + //重新导航 | ||
| 491 | + inparkNavigation(); | ||
| 320 | } | 492 | } |
| 321 | 493 | ||
| 322 | function calcMileage(s, e) { | 494 | function calcMileage(s, e) { |
| 323 | var mileage = 0, flag, code; | 495 | var mileage = 0, flag, code; |
| 324 | if (timeLocStations) { | 496 | if (timeLocStations) { |
| 497 | + //空间坐标计算的站距 | ||
| 325 | $.each(timeLocStations, function () { | 498 | $.each(timeLocStations, function () { |
| 326 | - code = this.station.STATION_CODE; | ||
| 327 | - if (code == s) { | 499 | + code = this.station['STATION_CODE']; |
| 500 | + if (flag) | ||
| 501 | + mileage = gb_common.accAdd(mileage, this.toDistanceGl); | ||
| 502 | + if (code == s) | ||
| 328 | flag = true; | 503 | flag = true; |
| 329 | - } | ||
| 330 | - | 504 | + if (code == e) |
| 505 | + return false; | ||
| 506 | + }); | ||
| 507 | + } | ||
| 508 | + else{ | ||
| 509 | + //从原始站点路由字段里取值 | ||
| 510 | + $.each(stationRoutes, function () { | ||
| 511 | + code = this['stationCode']; | ||
| 331 | if (flag) | 512 | if (flag) |
| 332 | - mileage += this.toDistance; | ||
| 333 | - | 513 | + mileage = gb_common.accAdd(mileage, this.distances); |
| 514 | + if (code == s) | ||
| 515 | + flag = true; | ||
| 334 | if (code == e) | 516 | if (code == e) |
| 335 | return false; | 517 | return false; |
| 336 | }); | 518 | }); |
| 337 | } | 519 | } |
| 338 | - return mileage / 1000; | 520 | + return mileage; |
| 339 | } | 521 | } |
| 340 | 522 | ||
| 523 | + //从本地localStorage获取站间距数据 | ||
| 524 | + function getLocStationsSpace() { | ||
| 525 | + try { | ||
| 526 | + timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm); | ||
| 527 | + if (timeLocStations) | ||
| 528 | + timeLocStations = JSON.parse(timeLocStations).stations[sch.xlDir == 0 ? 'up' : 'down']; | ||
| 529 | + } catch (e) { | ||
| 530 | + console.log(e); | ||
| 531 | + } | ||
| 532 | + } | ||
| 533 | + | ||
| 534 | + //站间距计算后刷新 | ||
| 535 | + $(modal).on('refresh_station_space', function () { | ||
| 536 | + getLocStationsSpace(); | ||
| 537 | + reClac(); | ||
| 538 | + }); | ||
| 341 | 539 | ||
| 342 | //------ 下抽屉 ------ | 540 | //------ 下抽屉 ------ |
| 343 | $('#betweenStationRangeCalc', modal).on('click', function () { | 541 | $('#betweenStationRangeCalc', modal).on('click', function () { |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_other.html
| @@ -175,19 +175,23 @@ | @@ -175,19 +175,23 @@ | ||
| 175 | for (var code in parks) | 175 | for (var code in parks) |
| 176 | park_opts += '<option value="' + code + '">' + parks[code] + '</option>'; | 176 | park_opts += '<option value="' + code + '">' + parks[code] + '</option>'; |
| 177 | 177 | ||
| 178 | - var qdz = $('[name=startStation]', f), zdz = $('[name=endStation]', f); | 178 | + var qdz = $('[name=startStation]', f), zdz = $('[name=endStation]', f), mType = $('[name=mileageType]', f); |
| 179 | switch ($(this).val()) { | 179 | switch ($(this).val()) { |
| 180 | case '3'://出场 | 180 | case '3'://出场 |
| 181 | qdz.html(park_opts).val(information.carPark); | 181 | qdz.html(park_opts).val(information.carPark); |
| 182 | zdz.html(opts); | 182 | zdz.html(opts); |
| 183 | + mType.val('empty'); | ||
| 183 | break; | 184 | break; |
| 184 | case '2'://进场 | 185 | case '2'://进场 |
| 185 | qdz.html(opts); | 186 | qdz.html(opts); |
| 186 | zdz.html(park_opts).val(information.carPark); | 187 | zdz.html(park_opts).val(information.carPark); |
| 188 | + mType.val('empty'); | ||
| 187 | break; | 189 | break; |
| 188 | default: | 190 | default: |
| 189 | qdz.html(opts); | 191 | qdz.html(opts); |
| 190 | zdz.html(opts).val(lastCode); | 192 | zdz.html(opts).val(lastCode); |
| 193 | + mType.val('service'); | ||
| 194 | + | ||
| 191 | } | 195 | } |
| 192 | }); | 196 | }); |
| 193 | 197 |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html
| 1 | <!-- 站点路由间距图 --> | 1 | <!-- 站点路由间距图 --> |
| 2 | +<a class="ct-bottom-drawer-close" style="right: calc(20% + 10px);"></a> | ||
| 2 | <div id="station_route_spacing_chart_drawer" style="width: 100%;height: 100%;font-size: 0;"> | 3 | <div id="station_route_spacing_chart_drawer" style="width: 100%;height: 100%;font-size: 0;"> |
| 4 | + <div class="tl_desc_text" style="z-index: 999;"> | ||
| 5 | + (鼠标滚轮滚动)单位:米 | <a class="delete_route_spacing_link" style="color: red;">删除</a> | ||
| 6 | + </div> | ||
| 3 | <div class="svg_wrap"></div> | 7 | <div class="svg_wrap"></div> |
| 4 | 8 | ||
| 5 | <div class="drawer_right_map" > | 9 | <div class="drawer_right_map" > |
| @@ -10,19 +14,75 @@ | @@ -10,19 +14,75 @@ | ||
| 10 | 14 | ||
| 11 | (function () { | 15 | (function () { |
| 12 | var drawer = '#station_route_spacing_chart_drawer' | 16 | var drawer = '#station_route_spacing_chart_drawer' |
| 13 | - , sch, locData, stationArr; | 17 | + , sch, locData, stationArr, len; |
| 18 | + var cy = 120; | ||
| 19 | + var tCy = cy - 15; | ||
| 20 | + //站点marker对照 | ||
| 21 | + var map, markers = {}; | ||
| 22 | + | ||
| 23 | + $('.delete_route_spacing_link', drawer).on('click', function () { | ||
| 24 | + alt_confirm('确定要删除【'+sch.xlName+'】基于空间坐标计算的站间距数据?', function () { | ||
| 25 | + window.localStorage.removeItem('control_route_distance_' + sch.xlBm); | ||
| 26 | + toGeoCalcPage(); | ||
| 27 | + }, '确定删除'); | ||
| 28 | + }); | ||
| 14 | 29 | ||
| 15 | - //var xScale; | ||
| 16 | $(drawer).on('drawer-init', function (e, data) { | 30 | $(drawer).on('drawer-init', function (e, data) { |
| 17 | sch = data.sch; | 31 | sch = data.sch; |
| 18 | locData = window.localStorage.getItem('control_route_distance_' + sch.xlBm); | 32 | locData = window.localStorage.getItem('control_route_distance_' + sch.xlBm); |
| 19 | 33 | ||
| 20 | if(locData) | 34 | if(locData) |
| 21 | drawCharts(); | 35 | drawCharts(); |
| 22 | - else | ||
| 23 | - drawerLoadPage('/real_control_v2/fragments/geo/calc_station_space.html','cal_station_space_drawer'); | 36 | + else{ |
| 37 | + toGeoCalcPage(); | ||
| 38 | + return; | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + setTimeout(initMap, 800); | ||
| 24 | }); | 42 | }); |
| 25 | - | 43 | + |
| 44 | + function initMap() { | ||
| 45 | + //初始化地图 | ||
| 46 | + map = new BMap.Map($('.drawer_right_map', drawer)[0]); | ||
| 47 | + //中心点和缩放级别 | ||
| 48 | + map.centerAndZoom(new BMap.Point(121.544336, 31.221315), 15); | ||
| 49 | + map.enableScrollWheelZoom(); | ||
| 50 | + | ||
| 51 | + //绘制线路 | ||
| 52 | + var routes = JSON.parse(locData).sections[sch.xlDir==0?'up':'down']; | ||
| 53 | + | ||
| 54 | + var pos = [], bdCoord; | ||
| 55 | + $.each(routes, function () { | ||
| 56 | + bdCoord = TransGPS.wgsToBD(this.latitude, this.longitude); | ||
| 57 | + pos.push(new BMap.Point(bdCoord.lng, bdCoord.lat)); | ||
| 58 | + }); | ||
| 59 | + | ||
| 60 | + var polyline = new BMap.Polyline(pos, {strokeWeight:6, strokeColor: 'blue'}); | ||
| 61 | + map.addOverlay(polyline); | ||
| 62 | + | ||
| 63 | + //绘制站点 | ||
| 64 | + var station; | ||
| 65 | + $.each(stationArr, function () { | ||
| 66 | + station=this.station; | ||
| 67 | + bdCoord = TransGPS.wgsToBD(station.G_LATY, station.G_LONX); | ||
| 68 | + | ||
| 69 | + var point = new BMap.Point(bdCoord.lng, bdCoord.lat); | ||
| 70 | + var marker = new BMap.Marker(point); | ||
| 71 | + | ||
| 72 | + //根据站点名称 计算marker 宽度 | ||
| 73 | + var w = station.STATION_NAME.length * 12 + 4; | ||
| 74 | + station.stationName = station.STATION_NAME; | ||
| 75 | + station.directions = station.DIRECTIONS; | ||
| 76 | + var icon = new BMap.Icon(gb_map_imap.createStationIcon(station, w), new BMap.Size(w-2,24), {anchor: new BMap.Size((w-2)/2,24)}) | ||
| 77 | + marker.setIcon(icon); | ||
| 78 | + | ||
| 79 | + map.addOverlay(marker); | ||
| 80 | + markers[station.STATION_CODE] = marker; | ||
| 81 | + }); | ||
| 82 | + | ||
| 83 | + autoPosition(); | ||
| 84 | + } | ||
| 85 | + | ||
| 26 | function drawCharts() { | 86 | function drawCharts() { |
| 27 | try { | 87 | try { |
| 28 | stationArr = JSON.parse(locData).stations[sch.xlDir == 0 ? 'up' : 'down']; | 88 | stationArr = JSON.parse(locData).stations[sch.xlDir == 0 ? 'up' : 'down']; |
| @@ -31,41 +91,161 @@ | @@ -31,41 +91,161 @@ | ||
| 31 | return; | 91 | return; |
| 32 | } | 92 | } |
| 33 | 93 | ||
| 34 | - var width = 1500; | 94 | + //console.log('locData...', JSON.parse(locData)); |
| 95 | + len = stationArr.length; | ||
| 96 | + var width = cx(len - 1) + 20; | ||
| 35 | var svgCont = $('<div style="width: '+width+'px;" class="svg_cont_body"></div>'); | 97 | var svgCont = $('<div style="width: '+width+'px;" class="svg_cont_body"></div>'); |
| 36 | - var svg = d3.select(svgCont[0]).append('svg'); | 98 | + var svg = d3.select(svgCont[0]).append('svg').classed({down: sch.xlDir==0?false:true}); |
| 37 | 99 | ||
| 38 | //初始化 X 比例尺 | 100 | //初始化 X 比例尺 |
| 39 | var sum=0; | 101 | var sum=0; |
| 40 | $.each(stationArr, function () { | 102 | $.each(stationArr, function () { |
| 41 | - sum += this.toDistance; | 103 | + sum += this.toDistance; |
| 42 | }); | 104 | }); |
| 43 | 105 | ||
| 44 | - console.log('stations', stationArr); | ||
| 45 | var items = svg.selectAll('g._item').data(stationArr) | 106 | var items = svg.selectAll('g._item').data(stationArr) |
| 46 | .enter() | 107 | .enter() |
| 47 | .append('g') | 108 | .append('g') |
| 109 | + .attr('data-code', function (d) { | ||
| 110 | + return d.station.STATION_CODE; | ||
| 111 | + }) | ||
| 48 | .classed({_item: true}); | 112 | .classed({_item: true}); |
| 49 | 113 | ||
| 50 | //rect | 114 | //rect |
| 51 | - items.append('rect').attr('x', xScale).attr('y', 40); | 115 | + items.append('rect').attr('x', xScale).attr('y', cy); |
| 116 | + //text | ||
| 117 | + items.append('text').attr('x', xScale).attr('y', cy) | ||
| 118 | + .text(stationText).attr('title', stationText); | ||
| 119 | + | ||
| 120 | + //path | ||
| 121 | + items.append('path').attr('d', function (d, i) { | ||
| 122 | + return i>=len-1?'':line([i , i + 1]); | ||
| 123 | + }); | ||
| 124 | + | ||
| 125 | + //上弧线 | ||
| 126 | + items.append('path').classed({arc_path: true}).attr('d', route_arc_path); | ||
| 127 | + | ||
| 128 | + //path circle | ||
| 129 | + items.append('circle').attr('cx', function (d, i) { | ||
| 130 | + return cx(i); | ||
| 131 | + }).attr('cy', tCy); | ||
| 132 | + | ||
| 133 | + //站距 | ||
| 134 | + items.filter(secFilter).append('rect') | ||
| 135 | + .attr('x', function (d, i) { | ||
| 136 | + return cx(i) - 6; | ||
| 137 | + }) | ||
| 138 | + .attr('y', tCy - 42) | ||
| 139 | + .classed({distance_rect: true}) | ||
| 140 | + .style('transform', distTranslate); | ||
| 141 | + | ||
| 142 | + items.filter(secFilter).append('text') | ||
| 143 | + .attr('x', xScale) | ||
| 144 | + .attr('y', tCy - 26) | ||
| 145 | + .text(function (d, i) { | ||
| 146 | + return d.toDistance; | ||
| 147 | + }) | ||
| 148 | + .classed({distance_text: true}) | ||
| 149 | + .style('transform', distTranslate); | ||
| 150 | + | ||
| 52 | $('.svg_wrap', drawer).append(svgCont); | 151 | $('.svg_wrap', drawer).append(svgCont); |
| 53 | } | 152 | } |
| 54 | 153 | ||
| 154 | + var xpdd = 20; | ||
| 155 | + //var halfWidth = 15; | ||
| 55 | var xScale = function (d, i) { | 156 | var xScale = function (d, i) { |
| 157 | + return cx(i); | ||
| 158 | + }; | ||
| 159 | + | ||
| 160 | + var cx = function (i) { | ||
| 56 | var sum=0; | 161 | var sum=0; |
| 57 | for(var j = 0; j <= i; j++){ | 162 | for(var j = 0; j <= i; j++){ |
| 58 | sum+=stationArr[j].toDistance; | 163 | sum+=stationArr[j].toDistance; |
| 59 | } | 164 | } |
| 60 | - return sum / 5; | 165 | + return sum / 2.5 + xpdd; |
| 166 | + }; | ||
| 167 | + | ||
| 168 | + var stationText = function (d) { | ||
| 169 | + return d.station['STATION_NAME']; | ||
| 170 | + }; | ||
| 171 | + | ||
| 172 | + var line = d3.svg.line().x(cx).y(tCy); | ||
| 173 | + | ||
| 174 | + var route_arc_path = function (d, i) { | ||
| 175 | + if(i >= len - 1) return; | ||
| 176 | + var x1 = cx(i); | ||
| 177 | + var x2 = cx(i + 1); | ||
| 178 | + | ||
| 179 | + var c1 = (x1 + (x2 - x1) / 3) + ' ' + (tCy - 40); | ||
| 180 | + var c2 = (x2 - (x2 - x1) / 3) +' '+ (tCy - 40); | ||
| 181 | + | ||
| 182 | + return 'M'+x1+' '+tCy+' C '+ c1 +', '+ c2 +', '+ x2 +' '+tCy; | ||
| 183 | + }; | ||
| 184 | + | ||
| 185 | + var secFilter = function (d, i) { | ||
| 186 | + return i > 0; | ||
| 187 | + }; | ||
| 188 | + | ||
| 189 | + //地图定位 | ||
| 190 | + var posMarker, posing=false; | ||
| 191 | + function autoPosition() { | ||
| 192 | + var left = Math.abs(parseInt($('.svg_cont_body', drawer).css('left').replace('px', ''))); | ||
| 193 | + | ||
| 194 | + var g; | ||
| 195 | + $('svg g._item text', drawer).each(function () { | ||
| 196 | + if($(this).attr('x') > left){ | ||
| 197 | + g = $(this).parent(); | ||
| 198 | + return false; | ||
| 199 | + } | ||
| 200 | + }); | ||
| 201 | + posMarker = markers[g.data('code')]; | ||
| 202 | + | ||
| 203 | + if(posing) return; | ||
| 204 | + posing = true; | ||
| 205 | + setTimeout(function () { | ||
| 206 | + map.panTo(posMarker.point/*, {noAnimation: true}*/); | ||
| 207 | + posing = false; | ||
| 208 | + }, 500); | ||
| 209 | + } | ||
| 210 | + | ||
| 211 | + var distTranslate = function (d, i) { | ||
| 212 | + return 'translate('+(d.toDistance / 2.5 / 2 - 16)+'px, 0px)'; | ||
| 61 | }; | 213 | }; |
| 62 | 214 | ||
| 215 | + function toGeoCalcPage() { | ||
| 216 | + drawerLoadPage('/real_control_v2/fragments/geo/calc_station_space.html','cal_station_space_drawer'); | ||
| 217 | + } | ||
| 218 | + | ||
| 63 | //页面切换 | 219 | //页面切换 |
| 64 | function drawerLoadPage(url, id) { | 220 | function drawerLoadPage(url, id) { |
| 65 | $(drawer).parent('.ct-bottom-drawer-body').load(url, function () { | 221 | $(drawer).parent('.ct-bottom-drawer-body').load(url, function () { |
| 66 | $('#' + id).trigger('drawer-init', {sch: sch}); | 222 | $('#' + id).trigger('drawer-init', {sch: sch}); |
| 67 | }); | 223 | }); |
| 68 | } | 224 | } |
| 225 | + | ||
| 226 | + var threshold = 30; | ||
| 227 | + $(drawer).on('mousewheel', '.svg_cont_body', function (e) { | ||
| 228 | + var event = e.originalEvent; | ||
| 229 | + var code = delta = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3; | ||
| 230 | + | ||
| 231 | + var left = parseInt($(this).css('left').replace('px','')) | ||
| 232 | + ,width = $(this).width() | ||
| 233 | + ,max = width - $(this).parent().width(); | ||
| 234 | + if(code > 0){ | ||
| 235 | + left += threshold; | ||
| 236 | + if(left >= 0) | ||
| 237 | + left = 0; | ||
| 238 | + $(this).css('left', left + 'px'); | ||
| 239 | + } | ||
| 240 | + else{ | ||
| 241 | + left -= threshold; | ||
| 242 | + if(Math.abs(left) >= max) | ||
| 243 | + left = -max; | ||
| 244 | + $(this).css('left', left + 'px'); | ||
| 245 | + } | ||
| 246 | + | ||
| 247 | + autoPosition(); | ||
| 248 | + }); | ||
| 69 | })(); | 249 | })(); |
| 70 | </script> | 250 | </script> |
| 71 | -</div> | ||
| 72 | \ No newline at end of file | 251 | \ No newline at end of file |
| 252 | + </div> | ||
| 73 | \ No newline at end of file | 253 | \ No newline at end of file |
src/main/resources/static/real_control_v2/js/common.js
| @@ -215,7 +215,7 @@ var gb_common = (function () { | @@ -215,7 +215,7 @@ var gb_common = (function () { | ||
| 215 | data.push({value: this}); | 215 | data.push({value: this}); |
| 216 | }); | 216 | }); |
| 217 | init_autocomplete(element, data); | 217 | init_autocomplete(element, data); |
| 218 | - } | 218 | + }; |
| 219 | 219 | ||
| 220 | var init_autocom_pinyin = function (element, data) { | 220 | var init_autocom_pinyin = function (element, data) { |
| 221 | // init autocomplete | 221 | // init autocomplete |
| @@ -240,7 +240,7 @@ var gb_common = (function () { | @@ -240,7 +240,7 @@ var gb_common = (function () { | ||
| 240 | release && release(rs); | 240 | release && release(rs); |
| 241 | } | 241 | } |
| 242 | }); | 242 | }); |
| 243 | - } | 243 | + }; |
| 244 | 244 | ||
| 245 | var init_autocomplete = function (element, data) { | 245 | var init_autocomplete = function (element, data) { |
| 246 | var autocomplete = UIkit.autocomplete(element, { | 246 | var autocomplete = UIkit.autocomplete(element, { |
| @@ -262,7 +262,7 @@ var gb_common = (function () { | @@ -262,7 +262,7 @@ var gb_common = (function () { | ||
| 262 | release && release(rs); | 262 | release && release(rs); |
| 263 | } | 263 | } |
| 264 | }); | 264 | }); |
| 265 | - } | 265 | + }; |
| 266 | 266 | ||
| 267 | // function whichTransitionEvent() { | 267 | // function whichTransitionEvent() { |
| 268 | // var t; | 268 | // var t; |
| @@ -281,6 +281,49 @@ var gb_common = (function () { | @@ -281,6 +281,49 @@ var gb_common = (function () { | ||
| 281 | // } | 281 | // } |
| 282 | // } | 282 | // } |
| 283 | 283 | ||
| 284 | + var accAdd = function(a, b) { | ||
| 285 | + var c, d, e; | ||
| 286 | + try { | ||
| 287 | + c = a.toString().split(".")[1].length; | ||
| 288 | + } catch (f) { | ||
| 289 | + c = 0; | ||
| 290 | + } | ||
| 291 | + try { | ||
| 292 | + d = b.toString().split(".")[1].length; | ||
| 293 | + } catch (f) { | ||
| 294 | + d = 0; | ||
| 295 | + } | ||
| 296 | + return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e; | ||
| 297 | + }; | ||
| 298 | + | ||
| 299 | + function mul(a, b) { | ||
| 300 | + var c = 0, | ||
| 301 | + d = a.toString(), | ||
| 302 | + e = b.toString(); | ||
| 303 | + try { | ||
| 304 | + c += d.split(".")[1].length; | ||
| 305 | + } catch (f) {} | ||
| 306 | + try { | ||
| 307 | + c += e.split(".")[1].length; | ||
| 308 | + } catch (f) {} | ||
| 309 | + return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c); | ||
| 310 | + } | ||
| 311 | + | ||
| 312 | + var numSubtr = function (a, b) { | ||
| 313 | + var c, d, e; | ||
| 314 | + try { | ||
| 315 | + c = a.toString().split(".")[1].length; | ||
| 316 | + } catch (f) { | ||
| 317 | + c = 0; | ||
| 318 | + } | ||
| 319 | + try { | ||
| 320 | + d = b.toString().split(".")[1].length; | ||
| 321 | + } catch (f) { | ||
| 322 | + d = 0; | ||
| 323 | + } | ||
| 324 | + return e = Math.pow(10, Math.max(c, d)), (a * e - b * e) / e; | ||
| 325 | + }; | ||
| 326 | + | ||
| 284 | return { | 327 | return { |
| 285 | reqCode80: reqCode80, | 328 | reqCode80: reqCode80, |
| 286 | groupBy: groupBy, | 329 | groupBy: groupBy, |
| @@ -295,7 +338,9 @@ var gb_common = (function () { | @@ -295,7 +338,9 @@ var gb_common = (function () { | ||
| 295 | lineAutocomplete: lineAutocomplete, | 338 | lineAutocomplete: lineAutocomplete, |
| 296 | personAutocomplete: personAutocomplete, | 339 | personAutocomplete: personAutocomplete, |
| 297 | carAutocomplete: carAutocomplete, | 340 | carAutocomplete: carAutocomplete, |
| 298 | - init_autocomplete: init_autocomplete | 341 | + init_autocomplete: init_autocomplete, |
| 342 | + accAdd : accAdd, | ||
| 343 | + numSubtr: numSubtr | ||
| 299 | 344 | ||
| 300 | //whichTransitionEvent:whichTransitionEvent | 345 | //whichTransitionEvent:whichTransitionEvent |
| 301 | }; | 346 | }; |
src/main/resources/static/real_control_v2/js/data/data_basic.js
| @@ -44,7 +44,6 @@ var gb_data_basic = (function () { | @@ -44,7 +44,6 @@ var gb_data_basic = (function () { | ||
| 44 | ep.emit('lineInformations', informations); | 44 | ep.emit('lineInformations', informations); |
| 45 | }); | 45 | }); |
| 46 | 46 | ||
| 47 | - | ||
| 48 | //人员信息 | 47 | //人员信息 |
| 49 | $.get('/basic/all_personnel', function (rs) { | 48 | $.get('/basic/all_personnel', function (rs) { |
| 50 | //转换成自动补全组件需要的数据 | 49 | //转换成自动补全组件需要的数据 |
| @@ -62,6 +61,18 @@ var gb_data_basic = (function () { | @@ -62,6 +61,18 @@ var gb_data_basic = (function () { | ||
| 62 | ep.emit('all_personnel', data); | 61 | ep.emit('all_personnel', data); |
| 63 | }); | 62 | }); |
| 64 | 63 | ||
| 64 | + var carparks={}; | ||
| 65 | + //停车场数据 | ||
| 66 | + gb_common.$get('/realMap/carParkSpatialData', {}, function (rs) { | ||
| 67 | + $.each(rs.list, function () { | ||
| 68 | + carparks[this.parkCode] = this; | ||
| 69 | + }); | ||
| 70 | + }); | ||
| 71 | + | ||
| 72 | + var getCarparkByCode = function (code) { | ||
| 73 | + return carparks[code]; | ||
| 74 | + } | ||
| 75 | + | ||
| 65 | //line code to name | 76 | //line code to name |
| 66 | $.get('/basic/lineCode2Name', function (rs) { | 77 | $.get('/basic/lineCode2Name', function (rs) { |
| 67 | ep.emit('lineCode2Name', rs); | 78 | ep.emit('lineCode2Name', rs); |
| @@ -113,6 +124,7 @@ var gb_data_basic = (function () { | @@ -113,6 +124,7 @@ var gb_data_basic = (function () { | ||
| 113 | allPersonnel: function () { | 124 | allPersonnel: function () { |
| 114 | return allPersonnel; | 125 | return allPersonnel; |
| 115 | }, | 126 | }, |
| 116 | - findCodeByLinename: findCodeByLinename | 127 | + findCodeByLinename: findCodeByLinename, |
| 128 | + getCarparkByCode: getCarparkByCode | ||
| 117 | }; | 129 | }; |
| 118 | })(); | 130 | })(); |
src/main/resources/static/real_control_v2/js/line_schedule/legend.js
| 1 | -/* 图例相关 */ | ||
| 2 | - | ||
| 3 | -var gb_sch_legend = (function () { | ||
| 4 | - | ||
| 5 | - var locaKey = 'sch_legend_flag'; | ||
| 6 | - var storage = window.localStorage; | ||
| 7 | - | ||
| 8 | - var animationend = 'webkitAnimationEnd animationend'; | ||
| 9 | - var initLegend = function (cont) { | ||
| 10 | - //双击展开 | ||
| 11 | - $('.schedule-wrap i.uk-icon-question-circle', cont).dblclick(openLegend); | ||
| 12 | - | ||
| 13 | - //关闭事件 | ||
| 14 | - $('.schedule-wrap .fixed_legend_close', cont).on('click', function () { | ||
| 15 | - //隐藏 fixed_legend | ||
| 16 | - $('.schedule-wrap .fixed_legend').each(function () { | ||
| 17 | - var anim = 'uk-animation-slide-top uk-animation-reverse'; | ||
| 18 | - if (!$(this).parents('.header-title').is(':hidden')) { | ||
| 19 | - $(this).addClass(anim).one(animationend, function () { | ||
| 20 | - var icon=$(this).removeClass(anim).hide().parents('.header-title').find('.uk-icon-question-circle'); | ||
| 21 | - | ||
| 22 | - icon.addClass('uk-animation-slide-top').show().one(animationend, function () { | ||
| 23 | - $(this).removeClass('uk-animation-slide-top'); | ||
| 24 | - }); | ||
| 25 | - }); | ||
| 26 | - } | ||
| 27 | - else { | ||
| 28 | - $(this).hide().parents('.header-title').find('.uk-icon-question-circle').show(); | ||
| 29 | - } | ||
| 30 | - }); | ||
| 31 | - | ||
| 32 | - //记录状态 | ||
| 33 | - storage.setItem(locaKey, 0); | ||
| 34 | - }); | ||
| 35 | - | ||
| 36 | - var flag=storage.getItem(locaKey); | ||
| 37 | - if(flag && flag==1) | ||
| 38 | - openLegend(); | ||
| 39 | - }; | ||
| 40 | - | ||
| 41 | - | ||
| 42 | - //展开图例 | ||
| 43 | - var openLegend = function () { | ||
| 44 | - $('.qtip.sch-tl-tip').qtip('destroy', true); | ||
| 45 | - | ||
| 46 | - //隐藏ICON | ||
| 47 | - $('.schedule-wrap i.uk-icon-question-circle').hide(); | ||
| 48 | - | ||
| 49 | - var anim = 'uk-animation-slide-top'; | ||
| 50 | - //显示 fixed_legend | ||
| 51 | - $('.schedule-wrap .fixed_legend').each(function () { | ||
| 52 | - if (!$(this).parents('.header-title').is(':hidden')) { | ||
| 53 | - $(this).addClass(anim).one('webkitAnimationEnd animationend', function () { | ||
| 54 | - $(this).removeClass(anim); | ||
| 55 | - }); | ||
| 56 | - } | ||
| 57 | - }); | ||
| 58 | - $('.schedule-wrap .fixed_legend').css('display', 'inline-block'); | ||
| 59 | - | ||
| 60 | - //记录状态 | ||
| 61 | - storage.setItem(locaKey, 1); | ||
| 62 | - }; | ||
| 63 | - | ||
| 64 | - return { | ||
| 65 | - init: initLegend | ||
| 66 | - }; | 1 | +/* 图例相关 */ |
| 2 | + | ||
| 3 | +var gb_sch_legend = (function () { | ||
| 4 | + | ||
| 5 | + var locaKey = 'sch_legend_flag'; | ||
| 6 | + var storage = window.localStorage; | ||
| 7 | + | ||
| 8 | + var animationend = 'webkitAnimationEnd animationend'; | ||
| 9 | + var initLegend = function (cont) { | ||
| 10 | + //双击展开 | ||
| 11 | + $('.schedule-wrap i.uk-icon-question-circle', cont).dblclick(openLegend); | ||
| 12 | + | ||
| 13 | + //关闭事件 | ||
| 14 | + $('.schedule-wrap .fixed_legend_close', cont).on('click', function () { | ||
| 15 | + //隐藏 fixed_legend | ||
| 16 | + $('.schedule-wrap .fixed_legend').each(function () { | ||
| 17 | + var anim = 'uk-animation-slide-top uk-animation-reverse'; | ||
| 18 | + if (!$(this).parents('.header-title').is(':hidden')) { | ||
| 19 | + $(this).addClass(anim).one(animationend, function () { | ||
| 20 | + var icon=$(this).removeClass(anim).hide().parents('.header-title').find('.uk-icon-question-circle'); | ||
| 21 | + | ||
| 22 | + icon.addClass('uk-animation-slide-top').show().one(animationend, function () { | ||
| 23 | + $(this).removeClass('uk-animation-slide-top'); | ||
| 24 | + }); | ||
| 25 | + }); | ||
| 26 | + } | ||
| 27 | + else { | ||
| 28 | + $(this).hide().parents('.header-title').find('.uk-icon-question-circle').show(); | ||
| 29 | + } | ||
| 30 | + }); | ||
| 31 | + | ||
| 32 | + //记录状态 | ||
| 33 | + storage.setItem(locaKey, 0); | ||
| 34 | + }); | ||
| 35 | + | ||
| 36 | + var flag=storage.getItem(locaKey); | ||
| 37 | + if(flag && flag==1) | ||
| 38 | + openLegend(); | ||
| 39 | + }; | ||
| 40 | + | ||
| 41 | + | ||
| 42 | + //展开图例 | ||
| 43 | + var openLegend = function () { | ||
| 44 | + $('.qtip.sch-tl-tip').qtip('destroy', true); | ||
| 45 | + | ||
| 46 | + //隐藏ICON | ||
| 47 | + $('.schedule-wrap i.uk-icon-question-circle').hide(); | ||
| 48 | + | ||
| 49 | + var anim = 'uk-animation-slide-top'; | ||
| 50 | + //显示 fixed_legend | ||
| 51 | + $('.schedule-wrap .fixed_legend').each(function () { | ||
| 52 | + if (!$(this).parents('.header-title').is(':hidden')) { | ||
| 53 | + $(this).addClass(anim).one('webkitAnimationEnd animationend', function () { | ||
| 54 | + $(this).removeClass(anim); | ||
| 55 | + }); | ||
| 56 | + } | ||
| 57 | + }); | ||
| 58 | + $('.schedule-wrap .fixed_legend').css('display', 'inline-block'); | ||
| 59 | + | ||
| 60 | + //记录状态 | ||
| 61 | + storage.setItem(locaKey, 1); | ||
| 62 | + }; | ||
| 63 | + | ||
| 64 | + return { | ||
| 65 | + init: initLegend | ||
| 66 | + }; | ||
| 67 | })(); | 67 | })(); |
| 68 | \ No newline at end of file | 68 | \ No newline at end of file |
src/main/resources/static/real_control_v2/js/main.js
| @@ -75,17 +75,10 @@ var gb_main_ep = new EventProxy(), | @@ -75,17 +75,10 @@ var gb_main_ep = new EventProxy(), | ||
| 75 | //modal hide remove dom | 75 | //modal hide remove dom |
| 76 | $(document).on('hide.uk.modal', '.uk-modal', function() { | 76 | $(document).on('hide.uk.modal', '.uk-modal', function() { |
| 77 | $(this).remove(); | 77 | $(this).remove(); |
| 78 | -/* //如果modal内部存在context-menu,则注销 | ||
| 79 | - var ctx = $('.context-menu-item', this); | ||
| 80 | - debugger | ||
| 81 | - if(ctx.length > 0){ | ||
| 82 | - //ctx.contextMenu('destroy'); | ||
| 83 | - $.contextMenu('destroy', ctx); | ||
| 84 | - }*/ | ||
| 85 | }); | 78 | }); |
| 86 | 79 | ||
| 87 | $(document).on('click', '.ct-bottom-drawer-close', function () { | 80 | $(document).on('click', '.ct-bottom-drawer-close', function () { |
| 88 | - $(this).parent().removeClass('open'); | 81 | + $(this).parents('.ct-bottom-drawer').removeClass('open'); |
| 89 | }); | 82 | }); |
| 90 | 83 | ||
| 91 | function connectArr(arr, separator, transFun) { | 84 | function connectArr(arr, separator, transFun) { |
| @@ -113,19 +106,19 @@ var notify_wait = function(t) { | @@ -113,19 +106,19 @@ var notify_wait = function(t) { | ||
| 113 | UIkit.notify("<i class='uk-icon-spinner uk-icon-spin'></i> " + t, { | 106 | UIkit.notify("<i class='uk-icon-spinner uk-icon-spin'></i> " + t, { |
| 114 | status: 'info' | 107 | status: 'info' |
| 115 | }); | 108 | }); |
| 116 | -} | 109 | +}; |
| 117 | 110 | ||
| 118 | var notify_succ = function(t) { | 111 | var notify_succ = function(t) { |
| 119 | UIkit.notify("<i class='uk-icon-check'></i> " + t, { | 112 | UIkit.notify("<i class='uk-icon-check'></i> " + t, { |
| 120 | status: 'success' | 113 | status: 'success' |
| 121 | }); | 114 | }); |
| 122 | -} | 115 | +}; |
| 123 | 116 | ||
| 124 | var notify_err = function(t) { | 117 | var notify_err = function(t) { |
| 125 | UIkit.notify("<i class='uk-icon-times'></i> " + t, { | 118 | UIkit.notify("<i class='uk-icon-times'></i> " + t, { |
| 126 | status: 'danger' | 119 | status: 'danger' |
| 127 | }); | 120 | }); |
| 128 | -} | 121 | +}; |
| 129 | 122 | ||
| 130 | var alt_confirm = function(content, succ, okBtn) { | 123 | var alt_confirm = function(content, succ, okBtn) { |
| 131 | var modalEl = UIkit.modal.confirm(content, function() { | 124 | var modalEl = UIkit.modal.confirm(content, function() { |
| @@ -138,11 +131,11 @@ var alt_confirm = function(content, succ, okBtn) { | @@ -138,11 +131,11 @@ var alt_confirm = function(content, succ, okBtn) { | ||
| 138 | } | 131 | } |
| 139 | ,center: true | 132 | ,center: true |
| 140 | }); | 133 | }); |
| 141 | -} | 134 | +}; |
| 142 | 135 | ||
| 143 | var isArray = function(obj) { | 136 | var isArray = function(obj) { |
| 144 | return Object.prototype.toString.call(obj) === '[object Array]'; | 137 | return Object.prototype.toString.call(obj) === '[object Array]'; |
| 145 | -} | 138 | +}; |
| 146 | 139 | ||
| 147 | var notify_err_form = function(t, form) { | 140 | var notify_err_form = function(t, form) { |
| 148 | $('.uk-alert-danger', form).remove(); | 141 | $('.uk-alert-danger', form).remove(); |
| @@ -152,7 +145,7 @@ var notify_err_form = function(t, form) { | @@ -152,7 +145,7 @@ var notify_err_form = function(t, form) { | ||
| 152 | '</div>'); | 145 | '</div>'); |
| 153 | 146 | ||
| 154 | enable_submit_btn(form); | 147 | enable_submit_btn(form); |
| 155 | -} | 148 | +}; |
| 156 | 149 | ||
| 157 | var enable_submit_btn = function(form) { | 150 | var enable_submit_btn = function(form) { |
| 158 | var subBtn = $('button[type=submit]', form); | 151 | var subBtn = $('button[type=submit]', form); |
| @@ -166,14 +159,14 @@ var disabled_submit_btn = function(form) { | @@ -166,14 +159,14 @@ var disabled_submit_btn = function(form) { | ||
| 166 | if (subBtn) { | 159 | if (subBtn) { |
| 167 | subBtn.addClass('disabled').attr('disabled','disabled'); | 160 | subBtn.addClass('disabled').attr('disabled','disabled'); |
| 168 | } | 161 | } |
| 169 | -} | 162 | +}; |
| 170 | 163 | ||
| 171 | var show_modal = function(id, dom) { | 164 | var show_modal = function(id, dom) { |
| 172 | $(document.body).append(dom); | 165 | $(document.body).append(dom); |
| 173 | return UIkit.modal(id, { | 166 | return UIkit.modal(id, { |
| 174 | bgclose: false | 167 | bgclose: false |
| 175 | }).show(); | 168 | }).show(); |
| 176 | -} | 169 | +}; |
| 177 | 170 | ||
| 178 | var open_modal = function(pageUrl, data, opt) { | 171 | var open_modal = function(pageUrl, data, opt) { |
| 179 | $.get(pageUrl, function(dom) { | 172 | $.get(pageUrl, function(dom) { |
| @@ -196,8 +189,8 @@ var open_modal = function(pageUrl, data, opt) { | @@ -196,8 +189,8 @@ var open_modal = function(pageUrl, data, opt) { | ||
| 196 | function showUpdateDescription() { | 189 | function showUpdateDescription() { |
| 197 | //更新说明 | 190 | //更新说明 |
| 198 | var updateDescription={ | 191 | var updateDescription={ |
| 199 | - date: '2016-12-15', | ||
| 200 | - text: '<h5>1、双击电子路单title右侧 ? 号图标,可将图例固定在上发。</h5><h5>2、每辆车最后一个班次,实发栏会显示计划和实际终点时间。</h5><h5>3、修复了子任务添加1分钟后再删除,弹出完整性约束校验失败 的问题。</h5>' | 192 | + date: '2016-12-20', |
| 193 | + text: '<h5>1、回场子任务开放使用。</h5>' | ||
| 201 | }; | 194 | }; |
| 202 | 195 | ||
| 203 | var storage = window.localStorage | 196 | var storage = window.localStorage |