Commit 8d6fcdebc620b5f2f7c3942b73e154fb6531e322

Authored by 潘钊
1 parent e8bc5f84

update...

... ... @@ -155,6 +155,12 @@
155 155 <artifactId>poi</artifactId>
156 156 <version>3.15</version>
157 157 </dependency>
  158 +
  159 + <dependency>
  160 + <groupId>com.github.stuxuhai</groupId>
  161 + <artifactId>jpinyin</artifactId>
  162 + <version>1.1.8</version>
  163 + </dependency>
158 164 </dependencies>
159 165  
160 166 <build>
... ...
src/main/java/com/bsth/controller/basic/BusController.java
1 1 package com.bsth.controller.basic;
2 2  
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.data.basic.bus.BusDataBuffer;
3 5 import com.bsth.entity.Bus;
4 6 import com.bsth.service.basic.BusService;
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
5 9 import org.springframework.beans.factory.annotation.Autowired;
6 10 import org.springframework.web.bind.annotation.*;
7 11  
  12 +import java.util.ArrayList;
  13 +import java.util.HashMap;
  14 +import java.util.List;
8 15 import java.util.Map;
9 16  
10 17 /**
... ... @@ -17,6 +24,8 @@ public class BusController {
17 24 @Autowired
18 25 BusService busService;
19 26  
  27 + Logger logger = LoggerFactory.getLogger(this.getClass());
  28 +
20 29 @RequestMapping("list")
21 30 public Map<String, Object> list(@RequestParam Map<String, Object> map,
22 31 @RequestParam(defaultValue = "0") int page,
... ... @@ -69,4 +78,26 @@ public class BusController {
69 78 public Map<String, Object> all(){
70 79 return busService.all();
71 80 }
  81 +
  82 +
  83 + @RequestMapping("allConcise")
  84 + public Map<String, Object> allPersionConcise(){
  85 + Map<String, Object> rs = new HashMap();
  86 + try{
  87 + List<Bus> list = BusDataBuffer.findAll();
  88 +
  89 + List<String> mapList = new ArrayList<>(list.size());
  90 + for(Bus b : list){
  91 + mapList.add(b.getNbbm());
  92 + }
  93 +
  94 + rs.put("list", mapList);
  95 + rs.put("status", ResponseCode.SUCCESS);
  96 + }catch (Exception e){
  97 + logger.error("", e);
  98 + rs.put("status", ResponseCode.ERROR);
  99 + }
  100 +
  101 + return rs;
  102 + }
72 103 }
... ...
src/main/java/com/bsth/controller/basic/CompanyController.java
... ... @@ -5,6 +5,9 @@ import com.bsth.util.ConfigUtil;
5 5 import org.springframework.web.bind.annotation.RequestMapping;
6 6 import org.springframework.web.bind.annotation.RestController;
7 7  
  8 +import java.util.HashMap;
  9 +import java.util.Map;
  10 +
8 11 /**
9 12 * Created by panzhao on 2017/8/2.
10 13 */
... ... @@ -13,6 +16,8 @@ import org.springframework.web.bind.annotation.RestController;
13 16 public class CompanyController {
14 17  
15 18 static String jsonStr;
  19 + static String tccName;
  20 + static String tccCode;
16 21  
17 22 static{
18 23 JSONObject json = JSONObject.parseObject(ConfigUtil.get("data.company.json"));
... ... @@ -22,10 +27,20 @@ public class CompanyController {
22 27 authJson.put(codes[i], json.get(codes[i]));
23 28 }
24 29 jsonStr = authJson.toJSONString();
  30 + tccName = ConfigUtil.get("tcc.name");
  31 + tccCode = ConfigUtil.get("tcc.code");
25 32 }
26 33  
27 34 @RequestMapping
28 35 public String get(){
29 36 return jsonStr;
30 37 }
  38 +
  39 + @RequestMapping(value = "curr_tcc_info")
  40 + public Map<String, String> getTccName(){
  41 + Map<String, String> map = new HashMap<>();
  42 + map.put("name", tccName);
  43 + map.put("code", tccCode);
  44 + return map;
  45 + }
31 46 }
... ...
src/main/java/com/bsth/controller/basic/PersonController.java
1 1 package com.bsth.controller.basic;
2 2  
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.data.basic.person.PersonDataBuffer;
3 5 import com.bsth.entity.Person;
4 6 import com.bsth.service.basic.PersonService;
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
5 9 import org.springframework.beans.factory.annotation.Autowired;
6 10 import org.springframework.web.bind.annotation.*;
7 11  
  12 +import java.util.ArrayList;
  13 +import java.util.HashMap;
  14 +import java.util.List;
8 15 import java.util.Map;
9 16  
10 17 /**
... ... @@ -17,6 +24,8 @@ public class PersonController {
17 24 @Autowired
18 25 PersonService personService;
19 26  
  27 + Logger logger = LoggerFactory.getLogger(this.getClass());
  28 +
20 29 @RequestMapping("list")
21 30 public Map<String, Object> list(@RequestParam Map<String, Object> map,
22 31 @RequestParam(defaultValue = "0") int page,
... ... @@ -57,4 +66,34 @@ public class PersonController {
57 66 public void refresh(){
58 67 personService.refresh();
59 68 }
  69 +
  70 +
  71 + @RequestMapping("allConcise")
  72 + public Map<String, Object> allPersionConcise(){
  73 + Map<String, Object> rs = new HashMap();
  74 + try{
  75 + Map<String, Object> item;
  76 +
  77 + List<Person> list = PersonDataBuffer.findAll();
  78 +
  79 + List<Map<String, Object>> mapList = new ArrayList<>(list.size());
  80 + for(Person p : list){
  81 + item = new HashMap<>();
  82 + item.put("name", p.getPersonnelName());
  83 + item.put("code", p.getJobCode().indexOf("-")!=-1?p.getJobCode().split("-")[1]:p.getJobCode());
  84 + item.put("fc", p.getFullChars());
  85 + item.put("cc", p.getCamelChars());
  86 +
  87 + mapList.add(item);
  88 + }
  89 +
  90 + rs.put("list", mapList);
  91 + rs.put("status", ResponseCode.SUCCESS);
  92 + }catch (Exception e){
  93 + logger.error("", e);
  94 + rs.put("status", ResponseCode.ERROR);
  95 + }
  96 +
  97 + return rs;
  98 + }
60 99 }
... ...
src/main/java/com/bsth/controller/schedule/InOutScheduleController.java
... ... @@ -35,4 +35,9 @@ public class InOutScheduleController {
35 35 public Map<String, Object> findAbnormalByLineArray(@RequestParam String idx){
36 36 return inOutScheduleService.findAbnormalByLineArray(idx);
37 37 }
  38 +
  39 + @RequestMapping("findSchByLpName")
  40 + public Map<String, Object> findSchByLpName(@RequestParam String lineCode, @RequestParam String lpName){
  41 + return inOutScheduleService.findSchByLpName(lineCode, lpName);
  42 + }
38 43 }
... ...
src/main/java/com/bsth/data/abnormal/entity/AbnormalEntity.java
... ... @@ -42,6 +42,8 @@ public class AbnormalEntity {
42 42 */
43 43 private String lineCode;
44 44  
  45 + private String lpName;
  46 +
45 47 public int getType() {
46 48 return type;
47 49 }
... ... @@ -97,4 +99,12 @@ public class AbnormalEntity {
97 99 public void setPlanTime(long planTime) {
98 100 this.planTime = planTime;
99 101 }
  102 +
  103 + public String getLpName() {
  104 + return lpName;
  105 + }
  106 +
  107 + public void setLpName(String lpName) {
  108 + this.lpName = lpName;
  109 + }
100 110 }
... ...
src/main/java/com/bsth/data/abnormal/scanner/AttendanceAbnormalScanner.java
... ... @@ -30,6 +30,9 @@ public class AttendanceAbnormalScanner {
30 30 Long t = System.currentTimeMillis();
31 31 for(ScheduleInOut sio : list){
32 32  
  33 + if(sio.getStatus() == -1)
  34 + continue;//烂班
  35 +
33 36 if(sio.getAttJhTime() >= t)
34 37 continue;//时间未到
35 38  
... ... @@ -39,7 +42,6 @@ public class AttendanceAbnormalScanner {
39 42 if(sio.getAbnormalStatus() < 0)
40 43 continue;//已报异常
41 44  
42   -
43 45 ae = new AbnormalEntity();
44 46 ae.setType(0);
45 47 ae.setSchId(sio.getId());
... ... @@ -47,7 +49,7 @@ public class AttendanceAbnormalScanner {
47 49 ae.setJsy(sio.getJsy());
48 50 ae.setPlanTimeStr(fmtHHmm.print(sio.getAttJhTime()));
49 51 ae.setPlanTime(sio.getAttJhTime());
50   -
  52 + ae.setLpName(sio.getLpName());
51 53  
52 54 mainAbnormalClient.put(ae);
53 55  
... ...
src/main/java/com/bsth/data/basic/person/PersonDataBuffer.java
... ... @@ -9,6 +9,8 @@ import com.bsth.data.utils.HttpClientUtils;
9 9 import com.bsth.data.utils.RsRequestUtils;
10 10 import com.bsth.entity.Person;
11 11 import com.bsth.util.ConfigUtil;
  12 +import com.github.stuxuhai.jpinyin.PinyinFormat;
  13 +import com.github.stuxuhai.jpinyin.PinyinHelper;
12 14 import com.google.common.base.Splitter;
13 15 import org.apache.commons.lang3.StringUtils;
14 16 import org.slf4j.Logger;
... ... @@ -114,6 +116,13 @@ public class PersonDataBuffer implements CommandLineRunner {
114 116  
115 117 if(tempList.size() == 0)
116 118 return;
  119 +
  120 + //做一下拼音映射
  121 + for(Person p : tempList){
  122 + p.setFullChars(PinyinHelper.convertToPinyinString(p.getPersonnelName(), "" , PinyinFormat.WITHOUT_TONE).toUpperCase());
  123 + p.setCamelChars(PinyinHelper.getShortPinyin(p.getPersonnelName()).toUpperCase());
  124 + }
  125 +
117 126 list = tempList;
118 127 idMaps = idMapsCopy;
119 128 logger.info("人员信息过滤," + list.size());
... ...
src/main/java/com/bsth/data/schedule/dto/ScheduleInOut.java
... ... @@ -23,7 +23,9 @@ public class ScheduleInOut {
23 23 private Long fcsjActualTime;//实际发车时间,集调gps
24 24 private Long zdsjActualTime;
25 25 private boolean sflj;
26   - private String remarks;
  26 + private String remarks;//和调度系统共享的备注
  27 +
  28 + private String remarks2;//场站内备注
27 29 private String bcType;
28 30 /**班次状态 0 未执行 1 正在执行 2 已执行 -1 已烂班 */
29 31 private int status;
... ... @@ -287,4 +289,12 @@ public class ScheduleInOut {
287 289 public void setAbnormalStatus(int abnormalStatus) {
288 290 this.abnormalStatus = abnormalStatus;
289 291 }
  292 +
  293 + public String getRemarks2() {
  294 + return remarks2;
  295 + }
  296 +
  297 + public void setRemarks2(String remarks2) {
  298 + this.remarks2 = remarks2;
  299 + }
290 300 }
... ...
src/main/java/com/bsth/data/schedule/dto/dd/ChildTaskPlan.java 0 → 100644
  1 +package com.bsth.data.schedule.dto.dd;
  2 +
  3 +import java.util.Date;
  4 +
  5 +
  6 +/**
  7 + *
  8 + * @ClassName: ChildTaskPlan
  9 + * @Description: TODO(子任务)
  10 + * @author PanZhao
  11 + * @date 2016年6月20日 上午11:22:22
  12 + *
  13 + */
  14 +public class ChildTaskPlan {
  15 +
  16 + private Long id;
  17 +
  18 + /**
  19 + * 任务类型1
  20 + * 正常,临加
  21 + */
  22 + private String type1;
  23 +
  24 + /**
  25 + * 任务类型2
  26 + * 1 正常 2 进场 3 出场
  27 + */
  28 + private String type2;
  29 +
  30 + /**
  31 + * 起点
  32 + */
  33 + private String startStation;
  34 +
  35 + /**
  36 + * 起点站名称
  37 + */
  38 + private String startStationName;
  39 +
  40 + /**
  41 + * 终点
  42 + */
  43 + private String endStation;
  44 +
  45 + /**
  46 + * 终点站名称
  47 + */
  48 + private String endStationName;
  49 +
  50 + /**
  51 + * 里程类型
  52 + */
  53 + private String mileageType;
  54 +
  55 + /**
  56 + * 里程
  57 + */
  58 + private Float mileage;
  59 +
  60 + /**
  61 + * 开始时间 HH:mm
  62 + */
  63 + private String startDate;
  64 +
  65 + /**
  66 + * 结束时间 HH:mm
  67 + */
  68 + private String endDate;
  69 +
  70 + /**
  71 + * 是否烂班
  72 + */
  73 + private boolean destroy;
  74 +
  75 + /**
  76 + * 烂班原因 -烂班时,该字段仍有值并 =reason
  77 + */
  78 + private String destroyReason;
  79 +
  80 + /**
  81 + * 包括 烂班原因、进出场原因、换车原因 等
  82 + */
  83 + private String reason;
  84 +
  85 + /**
  86 + * 车辆 如果为空,继承主任务
  87 + */
  88 + private String nbbm;
  89 +
  90 + /**
  91 + * 中途换车营运, 新车关联的主任务ID,子任务删除时,主任务ID将级联
  92 + */
  93 + private Long ccId;
  94 +
  95 + /**
  96 + * 为true 则无售票员, 否则继承主任务
  97 + */
  98 + private boolean noClerk;
  99 +
  100 + /** 创建日期 */
  101 + private Date createDate;
  102 +
  103 + private String remarks;
  104 +
  105 + public Long getId() {
  106 + return id;
  107 + }
  108 +
  109 + public void setId(Long id) {
  110 + this.id = id;
  111 + }
  112 +
  113 + public String getType1() {
  114 + return type1;
  115 + }
  116 +
  117 + public void setType1(String type1) {
  118 + this.type1 = type1;
  119 + }
  120 +
  121 + public String getType2() {
  122 + return type2;
  123 + }
  124 +
  125 + public void setType2(String type2) {
  126 + this.type2 = type2;
  127 + }
  128 +
  129 + public String getStartStation() {
  130 + return startStation;
  131 + }
  132 +
  133 + public void setStartStation(String startStation) {
  134 + this.startStation = startStation;
  135 + }
  136 +
  137 + public String getEndStation() {
  138 + return endStation;
  139 + }
  140 +
  141 + public void setEndStation(String endStation) {
  142 + this.endStation = endStation;
  143 + }
  144 +
  145 + public String getMileageType() {
  146 + return mileageType;
  147 + }
  148 +
  149 + public void setMileageType(String mileageType) {
  150 + this.mileageType = mileageType;
  151 + }
  152 +
  153 + public Float getMileage() {
  154 + return mileage;
  155 + }
  156 +
  157 + public void setMileage(Float mileage) {
  158 + this.mileage = mileage;
  159 + }
  160 +
  161 + public String getStartDate() {
  162 + return startDate;
  163 + }
  164 +
  165 + public void setStartDate(String startDate) {
  166 + this.startDate = startDate;
  167 + }
  168 +
  169 + public String getEndDate() {
  170 + return endDate;
  171 + }
  172 +
  173 + public void setEndDate(String endDate) {
  174 + this.endDate = endDate;
  175 + }
  176 +
  177 + public boolean isDestroy() {
  178 + return destroy;
  179 + }
  180 +
  181 + public void setDestroy(boolean destroy) {
  182 + this.destroy = destroy;
  183 + }
  184 +
  185 + public String getDestroyReason() {
  186 + return destroyReason;
  187 + }
  188 +
  189 + public void setDestroyReason(String destroyReason) {
  190 + this.destroyReason = destroyReason;
  191 + }
  192 +
  193 + public String getRemarks() {
  194 + return remarks;
  195 + }
  196 +
  197 + public void setRemarks(String remarks) {
  198 + this.remarks = remarks;
  199 + }
  200 +
  201 + public String getStartStationName() {
  202 + return startStationName;
  203 + }
  204 +
  205 + public void setStartStationName(String startStationName) {
  206 + this.startStationName = startStationName;
  207 + }
  208 +
  209 + public String getEndStationName() {
  210 + return endStationName;
  211 + }
  212 +
  213 + public void setEndStationName(String endStationName) {
  214 + this.endStationName = endStationName;
  215 + }
  216 +
  217 + @Override
  218 + public boolean equals(Object obj) {
  219 + return this.id.equals(((ChildTaskPlan)obj).getId());
  220 + }
  221 +
  222 + public Date getCreateDate() {
  223 + return createDate;
  224 + }
  225 +
  226 + public void setCreateDate(Date createDate) {
  227 + this.createDate = createDate;
  228 + }
  229 +
  230 + public String getReason() {
  231 + return reason;
  232 + }
  233 +
  234 + public void setReason(String reason) {
  235 + this.reason = reason;
  236 + }
  237 +
  238 + public String getNbbm() {
  239 + return nbbm;
  240 + }
  241 +
  242 + public void setNbbm(String nbbm) {
  243 + this.nbbm = nbbm;
  244 + }
  245 +
  246 + public boolean isNoClerk() {
  247 + return noClerk;
  248 + }
  249 +
  250 + public void setNoClerk(boolean noClerk) {
  251 + this.noClerk = noClerk;
  252 + }
  253 +
  254 + public Long getCcId() {
  255 + return ccId;
  256 + }
  257 +
  258 + public void setCcId(Long ccId) {
  259 + this.ccId = ccId;
  260 + }
  261 +}
... ...
src/main/java/com/bsth/data/schedule/dto/dd/ScheduleRealInfo.java 0 → 100644
  1 +package com.bsth.data.schedule.dto.dd;
  2 +
  3 +import javax.persistence.Transient;
  4 +import java.util.Date;
  5 +import java.util.HashSet;
  6 +import java.util.Set;
  7 +
  8 +/**
  9 + * 集调班次信息
  10 + * Created by panzhao on 2018/3/8.
  11 + */
  12 +public class ScheduleRealInfo {
  13 +
  14 + /** 主键Id */
  15 + private Long id;
  16 +
  17 + /** 排班日期字符串 YYYY-MM-DD */
  18 + private String scheduleDateStr;
  19 +
  20 + /** 真实执行时间 yyyy-MM-dd */
  21 + private String realExecDate;
  22 +
  23 + /** 线路名称 */
  24 + private String xlName;
  25 + /** 线路编码 */
  26 + private String xlBm;
  27 +
  28 + /** 路牌名称 */
  29 + private String lpName;
  30 +
  31 + /** 车辆自编号 */
  32 + private String clZbh;
  33 +
  34 + /** 驾驶员工号 */
  35 + private String jGh;
  36 + /** 驾驶员名字 */
  37 + private String jName;
  38 + /** 售票员工号 */
  39 + private String sGh;
  40 + /** 售票员名字 */
  41 + private String sName;
  42 +
  43 + /** 线路方向 */
  44 + private String xlDir;
  45 + /** 起点站code*/
  46 + private String qdzCode;
  47 + /** 起点站名字 */
  48 + private String qdzName;
  49 +
  50 + /** 终点站code*/
  51 + private String zdzCode;
  52 + /** 终点站名字 */
  53 + private String zdzName;
  54 +
  55 + /** 计划发车时间(格式 HH:mm) */
  56 + private String fcsj;
  57 + /** 计划发车时间戳*/
  58 + @Transient
  59 + private Long fcsjT;
  60 +
  61 + /** 计划终点时间(格式 HH:mm) */
  62 + private String zdsj;
  63 + /** 计划终点时间戳*/
  64 + @Transient
  65 + private Long zdsjT;
  66 +
  67 + /** 计划里程 */
  68 + private Double jhlc;
  69 +
  70 + /** 原始计划里程 (原计调的数据) */
  71 + private Double jhlcOrig;
  72 +
  73 + /** 班次历时 */
  74 + private Integer bcsj;
  75 +
  76 + /**
  77 + * 班次类型 TODO:正常班次、出场、进场、加油、区间班次、放空班次、放大站班次、两点间空驶
  78 + */
  79 + private String bcType;
  80 +
  81 + //放站班次 站点名称
  82 + private String majorStationName;
  83 +
  84 + /** 创建日期 */
  85 + private Date createDate;
  86 + /** 修改日期 */
  87 + private Date updateDate;
  88 +
  89 + /** 实际发车时间*/
  90 + private String fcsjActual;
  91 + /** 实际发车时间戳*/
  92 + @Transient
  93 + private Long fcsjActualTime;
  94 + /**实际终点时间 */
  95 + private String zdsjActual;
  96 + /** 实际终点时间戳*/
  97 + @Transient
  98 + private Long zdsjActualTime;
  99 +
  100 + /**班次状态 0 未执行 1 正在执行 2 已执行 -1 已烂班 */
  101 + private int status;
  102 +
  103 + private String adjustExps;
  104 +
  105 + /** 是否是临加班次 */
  106 + private boolean sflj;
  107 +
  108 + /** 备注*/
  109 + private String remarks;
  110 +
  111 + /**待发时间(格式 HH:mm) */
  112 + private String dfsj;
  113 +
  114 + /**待发时间戳 */
  115 + private Long dfsjT;
  116 +
  117 + /** 子任务 */
  118 + private Set<ChildTaskPlan> cTasks = new HashSet<>();
  119 +
  120 + /** 关联的公司名称 */
  121 + private String gsName;
  122 + /** 关联的公司编码 */
  123 + private String gsBm;
  124 + /** 关联的分公司名称 */
  125 + private String fgsName;
  126 + /** 关联的分公司编码 */
  127 + private String fgsBm;
  128 +
  129 + public Long getId() {
  130 + return id;
  131 + }
  132 +
  133 + public void setId(Long id) {
  134 + this.id = id;
  135 + }
  136 +
  137 + public String getScheduleDateStr() {
  138 + return scheduleDateStr;
  139 + }
  140 +
  141 + public void setScheduleDateStr(String scheduleDateStr) {
  142 + this.scheduleDateStr = scheduleDateStr;
  143 + }
  144 +
  145 + public String getRealExecDate() {
  146 + return realExecDate;
  147 + }
  148 +
  149 + public void setRealExecDate(String realExecDate) {
  150 + this.realExecDate = realExecDate;
  151 + }
  152 +
  153 + public String getXlName() {
  154 + return xlName;
  155 + }
  156 +
  157 + public void setXlName(String xlName) {
  158 + this.xlName = xlName;
  159 + }
  160 +
  161 + public String getXlBm() {
  162 + return xlBm;
  163 + }
  164 +
  165 + public void setXlBm(String xlBm) {
  166 + this.xlBm = xlBm;
  167 + }
  168 +
  169 + public String getLpName() {
  170 + return lpName;
  171 + }
  172 +
  173 + public void setLpName(String lpName) {
  174 + this.lpName = lpName;
  175 + }
  176 +
  177 + public String getClZbh() {
  178 + return clZbh;
  179 + }
  180 +
  181 + public void setClZbh(String clZbh) {
  182 + this.clZbh = clZbh;
  183 + }
  184 +
  185 + public String getjGh() {
  186 + return jGh;
  187 + }
  188 +
  189 + public void setjGh(String jGh) {
  190 + this.jGh = jGh;
  191 + }
  192 +
  193 + public String getjName() {
  194 + return jName;
  195 + }
  196 +
  197 + public void setjName(String jName) {
  198 + this.jName = jName;
  199 + }
  200 +
  201 + public String getsGh() {
  202 + return sGh;
  203 + }
  204 +
  205 + public void setsGh(String sGh) {
  206 + this.sGh = sGh;
  207 + }
  208 +
  209 + public String getsName() {
  210 + return sName;
  211 + }
  212 +
  213 + public void setsName(String sName) {
  214 + this.sName = sName;
  215 + }
  216 +
  217 + public String getXlDir() {
  218 + return xlDir;
  219 + }
  220 +
  221 + public void setXlDir(String xlDir) {
  222 + this.xlDir = xlDir;
  223 + }
  224 +
  225 + public String getQdzCode() {
  226 + return qdzCode;
  227 + }
  228 +
  229 + public void setQdzCode(String qdzCode) {
  230 + this.qdzCode = qdzCode;
  231 + }
  232 +
  233 + public String getQdzName() {
  234 + return qdzName;
  235 + }
  236 +
  237 + public void setQdzName(String qdzName) {
  238 + this.qdzName = qdzName;
  239 + }
  240 +
  241 + public String getZdzCode() {
  242 + return zdzCode;
  243 + }
  244 +
  245 + public void setZdzCode(String zdzCode) {
  246 + this.zdzCode = zdzCode;
  247 + }
  248 +
  249 + public String getZdzName() {
  250 + return zdzName;
  251 + }
  252 +
  253 + public void setZdzName(String zdzName) {
  254 + this.zdzName = zdzName;
  255 + }
  256 +
  257 + public String getFcsj() {
  258 + return fcsj;
  259 + }
  260 +
  261 + public void setFcsj(String fcsj) {
  262 + this.fcsj = fcsj;
  263 + }
  264 +
  265 + public Long getFcsjT() {
  266 + return fcsjT;
  267 + }
  268 +
  269 + public void setFcsjT(Long fcsjT) {
  270 + this.fcsjT = fcsjT;
  271 + }
  272 +
  273 + public String getZdsj() {
  274 + return zdsj;
  275 + }
  276 +
  277 + public void setZdsj(String zdsj) {
  278 + this.zdsj = zdsj;
  279 + }
  280 +
  281 + public Long getZdsjT() {
  282 + return zdsjT;
  283 + }
  284 +
  285 + public void setZdsjT(Long zdsjT) {
  286 + this.zdsjT = zdsjT;
  287 + }
  288 +
  289 + public Double getJhlc() {
  290 + return jhlc;
  291 + }
  292 +
  293 + public void setJhlc(Double jhlc) {
  294 + this.jhlc = jhlc;
  295 + }
  296 +
  297 + public Double getJhlcOrig() {
  298 + return jhlcOrig;
  299 + }
  300 +
  301 + public void setJhlcOrig(Double jhlcOrig) {
  302 + this.jhlcOrig = jhlcOrig;
  303 + }
  304 +
  305 + public Integer getBcsj() {
  306 + return bcsj;
  307 + }
  308 +
  309 + public void setBcsj(Integer bcsj) {
  310 + this.bcsj = bcsj;
  311 + }
  312 +
  313 + public String getBcType() {
  314 + return bcType;
  315 + }
  316 +
  317 + public void setBcType(String bcType) {
  318 + this.bcType = bcType;
  319 + }
  320 +
  321 + public String getMajorStationName() {
  322 + return majorStationName;
  323 + }
  324 +
  325 + public void setMajorStationName(String majorStationName) {
  326 + this.majorStationName = majorStationName;
  327 + }
  328 +
  329 + public Date getCreateDate() {
  330 + return createDate;
  331 + }
  332 +
  333 + public void setCreateDate(Date createDate) {
  334 + this.createDate = createDate;
  335 + }
  336 +
  337 + public Date getUpdateDate() {
  338 + return updateDate;
  339 + }
  340 +
  341 + public void setUpdateDate(Date updateDate) {
  342 + this.updateDate = updateDate;
  343 + }
  344 +
  345 + public String getFcsjActual() {
  346 + return fcsjActual;
  347 + }
  348 +
  349 + public void setFcsjActual(String fcsjActual) {
  350 + this.fcsjActual = fcsjActual;
  351 + }
  352 +
  353 + public Long getFcsjActualTime() {
  354 + return fcsjActualTime;
  355 + }
  356 +
  357 + public void setFcsjActualTime(Long fcsjActualTime) {
  358 + this.fcsjActualTime = fcsjActualTime;
  359 + }
  360 +
  361 + public String getZdsjActual() {
  362 + return zdsjActual;
  363 + }
  364 +
  365 + public void setZdsjActual(String zdsjActual) {
  366 + this.zdsjActual = zdsjActual;
  367 + }
  368 +
  369 + public Long getZdsjActualTime() {
  370 + return zdsjActualTime;
  371 + }
  372 +
  373 + public void setZdsjActualTime(Long zdsjActualTime) {
  374 + this.zdsjActualTime = zdsjActualTime;
  375 + }
  376 +
  377 + public int getStatus() {
  378 + return status;
  379 + }
  380 +
  381 + public void setStatus(int status) {
  382 + this.status = status;
  383 + }
  384 +
  385 + public String getAdjustExps() {
  386 + return adjustExps;
  387 + }
  388 +
  389 + public void setAdjustExps(String adjustExps) {
  390 + this.adjustExps = adjustExps;
  391 + }
  392 +
  393 + public boolean isSflj() {
  394 + return sflj;
  395 + }
  396 +
  397 + public void setSflj(boolean sflj) {
  398 + this.sflj = sflj;
  399 + }
  400 +
  401 + public String getRemarks() {
  402 + return remarks;
  403 + }
  404 +
  405 + public void setRemarks(String remarks) {
  406 + this.remarks = remarks;
  407 + }
  408 +
  409 + public String getDfsj() {
  410 + return dfsj;
  411 + }
  412 +
  413 + public void setDfsj(String dfsj) {
  414 + this.dfsj = dfsj;
  415 + }
  416 +
  417 + public Long getDfsjT() {
  418 + return dfsjT;
  419 + }
  420 +
  421 + public void setDfsjT(Long dfsjT) {
  422 + this.dfsjT = dfsjT;
  423 + }
  424 +
  425 + public Set<ChildTaskPlan> getcTasks() {
  426 + return cTasks;
  427 + }
  428 +
  429 + public void setcTasks(Set<ChildTaskPlan> cTasks) {
  430 + this.cTasks = cTasks;
  431 + }
  432 +
  433 + public String getGsName() {
  434 + return gsName;
  435 + }
  436 +
  437 + public void setGsName(String gsName) {
  438 + this.gsName = gsName;
  439 + }
  440 +
  441 + public String getGsBm() {
  442 + return gsBm;
  443 + }
  444 +
  445 + public void setGsBm(String gsBm) {
  446 + this.gsBm = gsBm;
  447 + }
  448 +
  449 + public String getFgsName() {
  450 + return fgsName;
  451 + }
  452 +
  453 + public void setFgsName(String fgsName) {
  454 + this.fgsName = fgsName;
  455 + }
  456 +
  457 + public String getFgsBm() {
  458 + return fgsBm;
  459 + }
  460 +
  461 + public void setFgsBm(String fgsBm) {
  462 + this.fgsBm = fgsBm;
  463 + }
  464 +}
... ...
src/main/java/com/bsth/entity/Person.java
... ... @@ -27,6 +27,16 @@ public class Person {
27 27 private String personnelName;
28 28  
29 29 /**
  30 + * 全拼
  31 + */
  32 + private String fullChars;
  33 +
  34 + /**
  35 + * 简拼
  36 + */
  37 + private String camelChars;
  38 +
  39 + /**
30 40 * 运营服务证书号
31 41 */
32 42 private String papersCode;
... ... @@ -223,4 +233,20 @@ public class Person {
223 233 public void setRemark(String remark) {
224 234 this.remark = remark;
225 235 }
  236 +
  237 + public String getFullChars() {
  238 + return fullChars;
  239 + }
  240 +
  241 + public void setFullChars(String fullChars) {
  242 + this.fullChars = fullChars;
  243 + }
  244 +
  245 + public String getCamelChars() {
  246 + return camelChars;
  247 + }
  248 +
  249 + public void setCamelChars(String camelChars) {
  250 + this.camelChars = camelChars;
  251 + }
226 252 }
... ...
src/main/java/com/bsth/service/schedule/ScheduleService.java
... ... @@ -26,6 +26,8 @@ public interface ScheduleService {
26 26  
27 27 Map<String, Object> findAbnormalByLineArray(String idx);
28 28  
  29 + Map<String,Object> findSchByLpName(String lineCode, String lpName);
  30 +
29 31 //void inOut(CarInOutEntity obj);
30 32  
31 33 //void busInOut(CarInOutEntity obj);
... ...
src/main/java/com/bsth/service/schedule/impl/ScheduleServiceImpl.java
1 1 package com.bsth.service.schedule.impl;
2 2  
  3 +import com.alibaba.fastjson.JSON;
3 4 import com.bsth.common.ResponseCode;
4 5 import com.bsth.data.abnormal.MainAbnormalClient;
5 6 import com.bsth.data.abnormal.entity.AbnormalEntity;
6 7 import com.bsth.data.attendance.entity.JsyAttendance;
7 8 import com.bsth.data.schedule.dto.ScheduleInOut;
  9 +import com.bsth.data.schedule.dto.dd.ScheduleRealInfo;
8 10 import com.bsth.data.schedule.real.ScheduleDataBuffer;
  11 +import com.bsth.data.utils.HttpClientUtils;
  12 +import com.bsth.data.utils.RsRequestUtils;
9 13 import com.bsth.service.schedule.ScheduleService;
  14 +import com.bsth.util.ConfigUtil;
10 15 import com.google.common.base.Splitter;
11 16 import org.slf4j.Logger;
12 17 import org.slf4j.LoggerFactory;
13 18 import org.springframework.beans.factory.annotation.Autowired;
14 19 import org.springframework.stereotype.Service;
15 20  
  21 +import java.net.URLEncoder;
16 22 import java.util.*;
17 23  
18 24 /**
... ... @@ -22,11 +28,15 @@ import java.util.*;
22 28 public class ScheduleServiceImpl implements ScheduleService {
23 29  
24 30  
25   - /* @Autowired
26   - BerthService berthService;*/
27 31 @Autowired
28 32 MainAbnormalClient mainAbnormalClient;
29 33  
  34 + private static String dataUrl;
  35 +
  36 + static {
  37 + dataUrl = ConfigUtil.get("data.schedule.inout.url");
  38 + }
  39 +
30 40 Logger logger = LoggerFactory.getLogger(this.getClass());
31 41  
32 42 @Override
... ... @@ -89,4 +99,23 @@ public class ScheduleServiceImpl implements ScheduleService {
89 99 }
90 100 return rs;
91 101 }
  102 +
  103 + @Override
  104 + public Map<String, Object> findSchByLpName(String lineCode, String lpName) {
  105 + Map<String, Object> rs = new HashMap<>();
  106 + try{
  107 + //从集调接口获取路牌下的班次信息
  108 + lpName = URLEncoder.encode(lpName, "UTF-8");
  109 + String url = dataUrl + "/findByLpName/" + lineCode + "/" + lpName + RsRequestUtils.getParams();
  110 + StringBuilder sb = HttpClientUtils.get(url);
  111 + List<ScheduleRealInfo> list = JSON.parseArray(sb.toString(), ScheduleRealInfo.class);
  112 +
  113 + rs.put("list", list);
  114 + rs.put("status", ResponseCode.SUCCESS);
  115 + }catch (Exception e){
  116 + rs.put("status", ResponseCode.ERROR);
  117 + logger.error("", e);
  118 + }
  119 + return rs;
  120 + }
92 121 }
... ...
src/main/resources/static/assets/css/abnormal_monitor.css
... ... @@ -96,13 +96,16 @@ span.red_line_empty{
96 96 }
97 97  
98 98 .abnormal_data_list .abnormal_detail{
99   - line-height: 24px;
100   - margin-top: 4px;
  99 + line-height: 22px;
  100 +}
  101 +
  102 +.abnormal_data_list .abnormal_detail:nth-child(1){
  103 + margin-top: 6px;
101 104 }
102 105  
103 106 .abnormal_data_list .abnormal_detail .badge_line_name{
104 107 background: #f2f2f2;
105   - padding: 1px 12px 1px 11px;
  108 + padding: 1px 8px 1px 7px;
106 109 border-radius: 7px;
107 110 font-size: 13px;
108 111 color: #000;
... ... @@ -111,6 +114,14 @@ span.red_line_empty{
111 114 .abnormal_data_list .abnormal_detail ._detail{
112 115 display: inline-block;
113 116 margin-right: 15px;
  117 +
  118 + overflow: hidden;
  119 + text-overflow:ellipsis;
  120 + white-space: nowrap;
  121 +}
  122 +
  123 +.abnormal_data_list .abnormal_detail>._detail:nth-child(1){
  124 + width: 85px;
114 125 }
115 126  
116 127 .abnormal_data_list .abnormal_detail a{
... ... @@ -304,4 +315,153 @@ span.red_line_empty{
304 315 .o_s_expand_table_modal .uk-table td,
305 316 .o_s_expand_table_modal .uk-table th{
306 317 padding: 11px 0px;
  318 +}
  319 +
  320 +.o_s_abnormal_handler_modal form.uk-form-horizontal .uk-form-label{
  321 + width: 100px;
  322 +}
  323 +
  324 +.o_s_abnormal_handler_modal form.uk-form-horizontal .uk-form-controls {
  325 + margin-left: 115px;
  326 +}
  327 +
  328 +.o_s_abnormal_handler_modal form{
  329 + margin: 40px;
  330 +}
  331 +
  332 +table.curr_out_plan_table{
  333 + background: #f8f8f8;
  334 + border: 1px solid #ececec;
  335 + font-size: 14px;
  336 + margin-top: 30px;
  337 +}
  338 +
  339 +.handler_cont_hrcc_wrap table.sch_list_table{
  340 + font-size: 14px;
  341 +}
  342 +
  343 +.uk-badge.ct_badge{
  344 + text-indent: 0;
  345 + font-family: 华文细黑;
  346 + font-size: 12px;
  347 + border-radius: 0;
  348 + height: 17px;
  349 + padding: 0px 5px 1px;
  350 + margin-left: 5px;
  351 + vertical-align: top;
  352 + margin-top: 1px;
  353 +}
  354 +
  355 +.uk-badge.ct_badge.cc{
  356 + background-color: #82bb42;
  357 + background-image: linear-gradient(to bottom,#9fd256,#6fac34);
  358 +}
  359 +
  360 +.uk-badge.ct_badge.jc{
  361 + background-color: #f9a124;
  362 + background-image: linear-gradient(to bottom,#fbb450,#f89406);
  363 +}
  364 +
  365 +.o_s_abnormal_handler_modal .tzrc_form_card form.uk-form-horizontal .uk-form-label{
  366 + width: 80px;
  367 +}
  368 +
  369 +.o_s_abnormal_handler_modal .tzrc_form_card form.uk-form-horizontal .uk-form-controls{
  370 + margin-left: 82px;
  371 + font-size: 14px;
  372 +}
  373 +
  374 +.o_s_abnormal_handler_modal .tzrc_form_card form{
  375 + margin-left: -12px;
  376 +}
  377 +
  378 +.tzrc_form_card{
  379 + padding-left: 12px;
  380 +}
  381 +
  382 +.tzrc_form_card form hr{
  383 + width: calc(100% + 108px);
  384 + margin-left: -42px;
  385 +}
  386 +
  387 +.tzrc_form_card form{
  388 + margin-bottom: 0;
  389 +}
  390 +
  391 +.tzrc_form_card form div.uk-form-controls>input[type=text],
  392 +.tzrc_form_card form div.uk-form-controls>.ct_auto_wrap{
  393 + width: calc(100% - 40px);
  394 + margin-right: 7px;
  395 + display: inline-block;
  396 +}
  397 +
  398 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>th:nth-of-type(1),
  399 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>td:nth-of-type(1){
  400 + width: 5%;
  401 +}
  402 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>th:nth-of-type(2),
  403 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>td:nth-of-type(2){
  404 + width: 16%;
  405 +}
  406 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>th:nth-of-type(3),
  407 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>td:nth-of-type(3){
  408 + width: 21%;
  409 +}
  410 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>th:nth-of-type(4),
  411 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>td:nth-of-type(4){
  412 + width: 18%;
  413 +}
  414 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>th:nth-of-type(5),
  415 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>td:nth-of-type(5){
  416 + width: 15%;
  417 +}
  418 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>th:nth-of-type(6),
  419 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>td:nth-of-type(6){
  420 + width: 12%;
  421 +}
  422 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>th:nth-of-type(7),
  423 +.handler_cont_hrcc_wrap table.tab_wid_1 tr>td:nth-of-type(7){
  424 + width: 13%;
  425 +}
  426 +
  427 +.handler_cont_hrcc_wrap table.tab_wid_1{
  428 + margin: 0;
  429 +}
  430 +
  431 +.handler_cont_hrcc_wrap .sch_list_table.tab_wid_1{
  432 + height: 270px;
  433 + overflow: auto;
  434 + display: block;
  435 + position: relative;
  436 +}
  437 +
  438 +.sch_list_table span.ct_zt_yzx {
  439 + color: #2196F3;
  440 + font-size: 12px;
  441 +}
  442 +
  443 +.sch_list_table span.ct_zt_lb {
  444 + color: red;
  445 + font-size: 12px;
  446 +}
  447 +
  448 +.sch_list_table span.ct_zt_zzzx {
  449 + font-size: 12px;
  450 + color: #38ad3c;
  451 +}
  452 +
  453 +.handler_cont_hrcc_wrap .sch_list_table tr.disabled{
  454 + background: #eaeaea;
  455 + color: #797979;
  456 +}
  457 +
  458 +.handler_cont_hrcc_wrap .sch_list_table tr.active{
  459 + background: #5bd460;
  460 + color: #fff;
  461 +}
  462 +
  463 +.handler_cont_hrcc_wrap .sch_list_table tr.active .uk-checkbox:checked,
  464 +.handler_cont_hrcc_wrap .uk-checkbox:checked,
  465 +.handler_cont_hrcc_wrap .uk-checkbox:checked:focus{
  466 + background-color: #5bd460;
307 467 }
308 468 \ No newline at end of file
... ...
src/main/resources/static/assets/css/ct_autocompleter.css 0 → 100644
  1 +.ct_auto_wrap{
  2 + position: relative;
  3 +}
  4 +
  5 +.ct_autocompleter{
  6 + width: 230px;
  7 + border: 1px solid #cbcbcb;
  8 + position: absolute;
  9 + z-index: 99;
  10 + top: 46px;
  11 + background: #fff;
  12 + box-shadow: 0 2px 5px rgba(0,0,0,.1);
  13 + display: none;
  14 + padding: 15px 0;
  15 + margin-bottom: 10px;
  16 +}
  17 +
  18 +.ct_autocompleter>ul.item-list{
  19 + list-style: none;
  20 + padding-left: 0;
  21 + margin-bottom: 0;
  22 +}
  23 +
  24 +.ct_autocompleter>ul.item-list>li.item{
  25 + padding: 5px 15px;
  26 + cursor: pointer;
  27 +}
  28 +
  29 +.ct_autocompleter>ul.item-list>li.item.active{
  30 + background: #5bd460;
  31 + color: #fff;
  32 + outline: 0;
  33 + box-shadow: inset 0 2px 4px rgba(0,0,0,.2);
  34 + text-shadow: 0 -1px 0 rgba(0,0,0,.2);
  35 +}
  36 +
  37 +.ct_autocompleter>ul.item-list>li.item:first-child{
  38 + margin-top: 0;
  39 +}
  40 +.ct_autocompleter>ul.item-list>li.item:last-child{
  41 + margin-bottom: 0;
  42 +}
0 43 \ No newline at end of file
... ...
src/main/resources/static/assets/js/ct_autocompleter.js 0 → 100644
  1 +/**
  2 + * 自己写一个自动补全
  3 + */
  4 +var ct_autocompleter = (function () {
  5 +
  6 + var maxItem = 10;
  7 +
  8 + var init = function (wrap, searchFun) {
  9 + var input = $('input', wrap);
  10 +
  11 + //var data = gb_o_s_basic_data.findAllPerson();
  12 + //input事件
  13 + input.on('input', function () {
  14 + var list = [],
  15 + v = $(this).val();
  16 +
  17 + if(!v){
  18 + cancel(wrap);
  19 + return;
  20 + }
  21 +
  22 + var list = searchFun(v);
  23 + showRsList(list, wrap);
  24 + });
  25 + $(wrap).append('<div class="ct_autocompleter"><ul class="item-list"></ul></div>');
  26 +
  27 + wrap = $('.ct_autocompleter', wrap);
  28 + $(wrap).on('mouseenter', '.item-list>li.item', function () {
  29 + $('li.item.active', wrap).removeClass('active');
  30 + $(this).addClass('active');
  31 + });
  32 + //事件
  33 + input.on('keydown', function (e) {
  34 + if(e.keyCode == 13){
  35 + var atItem = $('li.item.active', wrap);
  36 + if(atItem.length > 0){
  37 + input.val(atItem.text());
  38 + cancel(wrap);
  39 + return;
  40 + }
  41 + }
  42 + moveFocus(e, wrap)
  43 + });
  44 +
  45 + //选中
  46 + $(wrap).on('click', '.item-list>li.item', function () {
  47 + input.val($(this).text());
  48 + cancel(wrap);
  49 + });
  50 + };
  51 +
  52 + var cancel = function (wrap) {
  53 + $('.item-list', wrap).empty();
  54 + $(wrap).hide();
  55 + };
  56 +
  57 + var showRsList = function (list, wrap) {
  58 + var htmlStr = '';
  59 + for(var i=0,v;v=list[i++];){
  60 + htmlStr += '<li class="item">'+v+'</li>';
  61 + }
  62 + $('.item-list', wrap).html(htmlStr);
  63 + $(wrap).show();
  64 + };
  65 +
  66 + var moveFocus = function (e, wrap) {
  67 + if(e.keyCode != 38 && e.keyCode != 40)
  68 + return;
  69 +
  70 + var ca = $('li.item.active', wrap)
  71 + , i = 0
  72 + , max;
  73 +
  74 + if(ca.length > 0){
  75 + i = ca.index() + 1;
  76 + max = $('li.item', wrap).length;
  77 +
  78 + if(i >= max)
  79 + i = 0;
  80 + }
  81 +
  82 + $('li.item.active', wrap).removeClass('active');
  83 + $('.item-list>li:eq('+i+')', wrap).addClass('active');
  84 + };
  85 +
  86 + var initPerson = function (wrap) {
  87 + init(wrap, function (v) {
  88 + v = v.toUpperCase();
  89 + var data = gb_o_s_basic_data.findAllPerson(),
  90 + list = [];
  91 +
  92 + for(var i=0,p;p=data[i++];){
  93 +
  94 + if(list.length >= maxItem)
  95 + break;
  96 + if(p.name.indexOf(v) != -1
  97 + || p.code.indexOf(v) != -1
  98 + || p.fc.indexOf(v) != -1
  99 + || p.cc.indexOf(v) != -1){
  100 + list.push(p.code + '/' + p.name);
  101 + }
  102 + }
  103 +
  104 + return list;
  105 + });
  106 + };
  107 +
  108 +
  109 + var initBus = function (wrap) {
  110 + init(wrap, function (v) {
  111 + v = v.toUpperCase();
  112 + var data = gb_o_s_basic_data.findAllBus(),
  113 + list = [];
  114 +
  115 + for(var i=0,nbbm;nbbm=data[i++];){
  116 +
  117 + if(list.length >= maxItem)
  118 + break;
  119 + if(nbbm.indexOf(v) != -1)
  120 + list.push(nbbm);
  121 + }
  122 +
  123 + return list;
  124 + });
  125 + };
  126 +
  127 + return {
  128 + initPerson : initPerson,
  129 + initBus: initBus
  130 + }
  131 +})();
0 132 \ No newline at end of file
... ...
src/main/resources/static/index.html
... ... @@ -8,6 +8,7 @@
8 8 <link href="/assets/uikit-3.0.0/css/uikit.min.css" rel="stylesheet" type="text/css"/>
9 9 <link href="/assets/css/main.css" rel="stylesheet" type="text/css"/>
10 10 <link href="/assets/css/abnormal_monitor.css" rel="stylesheet" type="text/css"/>
  11 + <link href="/assets/css/ct_autocompleter.css" rel="stylesheet" type="text/css"/>
11 12 <link href="/assets/selectize/css/selectize.default.css" rel="stylesheet" type="text/css"/>
12 13 <link href="/assets/plugins/simplePagination/simplePagination.css" rel="stylesheet" type="text/css"/>
13 14 <link href="/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" rel="stylesheet" type="text/css"/>
... ... @@ -71,6 +72,7 @@
71 72 <script src="/assets/plugins/toastr/toastr.min.js"></script>
72 73 <script src="/assets/js/tts.js"></script>
73 74  
  75 +<script src="/assets/js/ct_autocompleter.js"></script>
74 76 <!-- websocket -->
75 77 <script src="/assets/plugins/sockjs-client/sockjs.min.js"></script>
76 78 <script>
... ... @@ -177,6 +179,7 @@
177 179 var company_json, company_code_name={};
178 180 var cont = $('.ct-container');
179 181 var top_btn_list = $('.ct-btn-list', cont);
  182 + var current_tcc_name, current_tcc_code;
180 183  
181 184 //按公司_分公司分组的线路数据
182 185 var groupLineArrays;
... ... @@ -192,6 +195,12 @@
192 195 });
193 196 });
194 197  
  198 + //停车场信息
  199 + $.get('/company_json/curr_tcc_info', function (rs) {
  200 + current_tcc_name = rs.name;
  201 + current_tcc_code = rs.code;
  202 + });
  203 +
195 204 //loading end...
196 205 var ep = EventProxy.create('load_company', 'load_lines', function (companyData, linesData) {
197 206 groupLineArrays = {};
... ...
src/main/resources/static/pages/abnormal/fragments/abnormal_handler.html
... ... @@ -5,36 +5,39 @@
5 5 <li><a><i uk-icon="clock"></i>&nbsp;调整出场时间</a></li>
6 6 </ul>
7 7  
8   - <ul class="uk-switcher uk-margin">
9   - <li>
10   - <div class="uk-alert-danger" uk-alert>
11   - <a class="uk-alert-close" uk-close></a>
12   - <p><i uk-icon="info"></i>&nbsp;如果人员无法正常使用刷卡机签到,请手动录入人员报到时间。</p>
13   - </div>
14   -
15   - </li>
16   - <li>222</li>
  8 + <ul class="uk-switcher uk-margin _switcher_cont">
  9 + <li class="_content_one"></li>
  10 + <li class="_content_two"></li>
17 11 <li>333</li>
18 12 </ul>
19 13  
20 14 <script>
21 15 (function () {
22   - var wrap = '.o_s_abnormal_handler_modal', modalId;
  16 + var wrap = '.o_s_abnormal_handler_modal', modalId,
  17 + folder = '/pages/abnormal/fragments/',ae;
23 18  
24 19 $(wrap).on('init', function (e, data) {
25 20 e.stopPropagation();
26 21 modalId = '#' + data.modalId;
  22 + ae = gb_o_s_abnormal.get(data.key);
  23 +
  24 + //加载片段1
  25 + $.get(folder + 'h_cont_rybd.html', function (dom) {
  26 + $('._content_one',wrap).html(dom);
  27 + $('.handler_cont_rybd_wrap', wrap).trigger('init', {ae: ae});
  28 + });
27 29  
28   - var ae = gb_o_s_abnormal.get(data.key);
29   - console.log('aeae', ae);
30   - /*var list = gb_common.get_vals(gb_os_card.findByLineCode(data.lineCode));
31   - list.sort(sch_sort_fun);
32   - //渲染表格
33   - var htmlStr = template('o_s_expand_sch_list-temp', {list: list});
34   - $('table>tbody', wrap).html(htmlStr);*/
  30 + //加载判断2
  31 + $.get(folder + 'h_cont_hrcc.html', function (dom) {
  32 + $('._content_two',wrap).html(dom);
  33 + });
35 34  
36 35 data && data.caller && data.caller();
37 36 });
  37 +
  38 + $('._switcher_cont', wrap).on('show', function (e) {
  39 + $('div:first', e.target).trigger('init', {ae: ae});
  40 + });
38 41 })();
39 42 </script>
40 43 </div>
41 44 \ No newline at end of file
... ...
src/main/resources/static/pages/abnormal/fragments/h_cont_hrcc.html 0 → 100644
  1 +<div class="handler_cont_hrcc_wrap">
  2 + <table class="uk-table uk-table-small uk-table-divider curr_out_plan_table">
  3 + <thead>
  4 + <tr>
  5 + <th width="17%">线路</th>
  6 + <th width="12%">路牌</th>
  7 + <th width="21%">人员</th>
  8 + <th width="17%">车辆</th>
  9 + <th width="19%">计划出场</th>
  10 + </tr>
  11 + </thead>
  12 + <tbody></tbody>
  13 + </table>
  14 +
  15 + <table class="uk-table uk-table-small uk-table-divider tab_wid_1">
  16 + <thead>
  17 + <tr>
  18 + <th><input class="uk-checkbox " type="checkbox" id="globalCheckBox"></th>
  19 + <th>时间</th>
  20 + <th>驾驶员</th>
  21 + <th>售票员</th>
  22 + <th>车辆</th>
  23 + <th>路牌</th>
  24 + <th>状态</th>
  25 + </tr>
  26 + </thead>
  27 + </table>
  28 + <table class="uk-table uk-table-small uk-table-divider sch_list_table tab_wid_1">
  29 + </table>
  30 +
  31 + <div class="tzrc_form_card">
  32 + <form class="uk-grid-small uk-form-horizontal" uk-grid>
  33 + <div class="uk-width-1-2@s">
  34 + <label class="uk-form-label">车辆</label>
  35 + <div class="uk-form-controls">
  36 + <div class="ct_auto_wrap" id="nbbmAutoCompleter">
  37 + <input class="uk-input" name="nbbm" type="text" placeholder="车辆自编号" disabled>
  38 + </div>
  39 + <input class="uk-checkbox switch_c_box" type="checkbox" >
  40 + </div>
  41 + </div>
  42 + <div class="uk-width-1-2@s">
  43 + <label class="uk-form-label">驾驶员</label>
  44 + <div class="uk-form-controls">
  45 + <div class="ct_auto_wrap" id="jsyAutoCompleter">
  46 + <input class="uk-input" name="jsy" type="text" placeholder="驾驶员工号">
  47 + </div>
  48 + <input class="uk-checkbox switch_c_box" type="checkbox" checked>
  49 + </div>
  50 + </div>
  51 + <div class="uk-width-1-2@s">
  52 + <label class="uk-form-label">售票员</label>
  53 + <div class="uk-form-controls">
  54 + <div class="ct_auto_wrap" id="spyAutoCompleter">
  55 + <input class="uk-input" name="spy" type="text" placeholder="售票员工号">
  56 + </div>
  57 + <input class="uk-checkbox switch_c_box" type="checkbox" checked>
  58 + </div>
  59 + </div>
  60 + <div class="uk-width-1-1@s">
  61 + <hr>
  62 + <p class="uk-text-right">
  63 + <button class="uk-button uk-button-default uk-modal-close" type="button">取消</button>
  64 + <button class="uk-button uk-button-primary submit-btn" type="button">保存</button>
  65 + </p>
  66 + </div>
  67 + </form>
  68 + </div>
  69 + <script id="a_h_hrcc_out_tbody-temp" type="text/html">
  70 + <tr>
  71 + <td>{{obj.lineName}}</td>
  72 + <td>{{obj.lpName}}</td>
  73 + <td>{{obj.jsy}}</td>
  74 + <td>{{obj.nbbm}}</td>
  75 + <td>{{obj.dfsjStr}}</td>
  76 + </tr>
  77 + </script>
  78 +
  79 + <script id="jd_schedule_list_table-temp" type="text/html">
  80 + {{each list as sch i}}
  81 + <tr data-id="{{sch.id}}" class="">
  82 + <td><input class="uk-checkbox" type="checkbox"></td>
  83 + <td>{{sch.dfsj}}
  84 + {{if sch.bcType == "out"}}
  85 + <span class="uk-badge ct_badge cc">
  86 + 出场
  87 + {{if sch.qdzCode!=tcc_code}}
  88 + | {{sch.qdzName}}
  89 + {{/if}}
  90 + </span>
  91 + {{else if sch.bcType == "in"}}
  92 + <span class="uk-badge ct_badge jc">进场</span>
  93 + {{else if sch.bcType == "venting"}}
  94 + <span class="uk-badge ct_badge zf">直放</span>
  95 + {{else if sch.bcType == "major"}}
  96 + <span class="uk-badge ct_badge cfz">放站</span>
  97 + {{/if}}
  98 + {{if sch.sflj}}
  99 + <span class="uk-badge ct_badge">临加</span>
  100 + {{/if}}
  101 + {{if sch.cTasks.length > 0}}
  102 + <span class="uk-badge uk-badge-notification">{{sch.cTasks.length}}</span>
  103 + {{/if}}
  104 + </td>
  105 + <td>{{sch.jGh}}/{{sch.jName}}</td>
  106 + <td>{{sch.sGh}}/{{sch.sName}}</td>
  107 + <td>{{sch.clZbh}}</td>
  108 + <td>{{sch.lpName}}</td>
  109 + <td>
  110 + {{if sch.status==2}}
  111 + <span class="ct_zt_yzx">已执行</span>
  112 + {{else if sch.status==1}}
  113 + {{if sch.fcsjActual==null}}
  114 + <span class="ct_zt_zzzx">准备执行</span>
  115 + {{else}}
  116 + <span class="ct_zt_zzzx">正在执行</span>
  117 + {{/if}}
  118 + {{else if sch.status==-1}}
  119 + <span class="ct_zt_lb">烂班</span>
  120 + {{/if}}
  121 + </td>
  122 + </tr>
  123 + {{/each}}
  124 + </script>
  125 +
  126 + <script>
  127 + (function () {
  128 +
  129 + var wrap = '.handler_cont_hrcc_wrap', ae, inoutSch;
  130 +
  131 +
  132 + $(wrap).on('init', function (e, data) {
  133 + e.stopPropagation();
  134 + if($(this).attr('data-init')==1)
  135 + return;
  136 +
  137 + ae = data.ae;
  138 +
  139 + inoutSch = gb_os_card.findByLineCode(ae.lineCode)[ae.schId];
  140 + $('.curr_out_plan_table>tbody', wrap).html(template('a_h_hrcc_out_tbody-temp', {obj: inoutSch}));
  141 +
  142 + //加载集调班次信息
  143 + gb_common.$get('/in_out/findSchByLpName', {lineCode: inoutSch.lineCode, lpName: inoutSch.lpName},readerScheduleList);
  144 +
  145 + //自动补全
  146 + ct_autocompleter.initPerson($('#jsyAutoCompleter', wrap));
  147 + ct_autocompleter.initPerson($('#spyAutoCompleter', wrap));
  148 + ct_autocompleter.initBus($('#nbbmAutoCompleter', wrap));
  149 +
  150 + $(this).attr('data-init', 1);
  151 + });
  152 +
  153 + var readerScheduleList = function (rs) {
  154 + var htmlStr = template('jd_schedule_list_table-temp', {list: rs.list, tcc_code: current_tcc_code});
  155 + $('.sch_list_table', wrap).html(htmlStr);
  156 + //滚动条
  157 + $('.sch_list_table', wrap).perfectScrollbar({suppressScrollX: true});
  158 +
  159 + //将当前出场班次之前的班次都禁选
  160 + var trs = $('.sch_list_table tr', wrap);
  161 + for(var i=0,row;row=trs[i++];){
  162 + if($(row).data('id')==inoutSch.id)
  163 + break;
  164 + $(row).addClass('disabled')
  165 + .find('input[type=checkbox]')
  166 + .attr('disabled','disabled');
  167 + }
  168 + //选中当前出场班次
  169 + $('.sch_list_table tr[data-id="'+inoutSch.id+'"]', wrap).trigger('click');
  170 + };
  171 +
  172 + /**
  173 + * row 点击选中
  174 + */
  175 + $(wrap).on('click', '.sch_list_table tr', function () {
  176 + if($(this).hasClass('disabled'))
  177 + return;
  178 + var cbox = $('input[type=checkbox]', this)[0];
  179 + if($(this).hasClass('active')){
  180 + $(this).removeClass('active');
  181 + cbox.checked = false;
  182 + }
  183 + else{
  184 + $(this).addClass('active');
  185 + cbox.checked = true;
  186 +
  187 + var cells = this.cells;
  188 + var f = $('.tzrc_form_card form', wrap);
  189 + $('[name=nbbm]', f).val($(cells[4]).text());
  190 + $('[name=jsy]', f).val($(cells[2]).text());
  191 + $('[name=spy]', f).val($(cells[3]).text());
  192 + }
  193 + });
  194 +
  195 + //全选
  196 + $('#globalCheckBox', wrap).on('click', function () {
  197 +
  198 + var trs = $('.sch_list_table tr', wrap);
  199 + var cbox;
  200 + for(var i=0,row;row=trs[i++];){
  201 + if($(row).hasClass('disabled'))
  202 + continue;
  203 +
  204 + cbox = $('input[type=checkbox]', row)[0];
  205 +
  206 + if(this.checked)
  207 + $(row).addClass('active');
  208 + else
  209 + $(row).removeClass('active');
  210 + cbox.checked = this.checked;
  211 + }
  212 + });
  213 +
  214 + $('.tzrc_form_card input[type=checkbox]', wrap).on('click', function () {
  215 + var $input = $(this).prev();
  216 + if(this.checked)
  217 + $input.removeAttr('disabled');
  218 + else
  219 + $input.attr('disabled', 'disabled');
  220 + });
  221 +
  222 + //switch_c_box
  223 + $('.switch_c_box', wrap).on('click', function () {
  224 + var input = $(this).parent().find('input[type=text]');
  225 + if(this.checked)
  226 + input.removeAttr('disabled');
  227 + else
  228 + input.attr('disabled', 'disabled');
  229 + });
  230 + })();
  231 + </script>
  232 +</div>
0 233 \ No newline at end of file
... ...
src/main/resources/static/pages/abnormal/fragments/h_cont_rybd.html 0 → 100644
  1 +<div class="handler_cont_rybd_wrap">
  2 + <div class="uk-alert-danger" uk-alert>
  3 + <a class="uk-alert-close" uk-close></a>
  4 + <p><i uk-icon="info"></i>&nbsp;如果人员无法正常使用刷卡机签到,请手动录入人员签到时间。</p>
  5 + </div>
  6 +
  7 + <div class="hc_body"></div>
  8 + <script id="o_s_abnormal_handler_rybd-temp" type="text/html">
  9 + <table class="uk-table uk-table-small uk-table-divider curr_out_plan_table">
  10 + <tr>
  11 + <th width="17%">线路</th>
  12 + <th width="12%">路牌</th>
  13 + <th width="21%">人员</th>
  14 + <th width="17%">计划报到</th>
  15 + <th width="19%">报到地点</th>
  16 + <th width="14%">状态</th>
  17 + </tr>
  18 + <tr>
  19 + <td>{{ae.lineName}}</td>
  20 + <td>{{ae.lpName}}</td>
  21 + <td>{{ae.jsy}}</td>
  22 + <td>{{ae.planTimeStr}}</td>
  23 + <td>{{current_tcc_name}}</td>
  24 + <td><samp>未签到</samp></td>
  25 + </tr>
  26 + </table>
  27 +
  28 + <form class="uk-form-horizontal">
  29 + <div class="uk-margin">
  30 + <label class="uk-form-label" for="form-horizontal-text">实际签到时间</label>
  31 + <div class="uk-form-controls">
  32 + <input class="uk-input" name="attSjTimeStr" id="form-horizontal-text" type="time" required>
  33 + </div>
  34 + </div>
  35 +
  36 + <div class="uk-margin">
  37 + <label class="uk-form-label" for="form-horizontal-select">原因</label>
  38 + <div class="uk-form-controls">
  39 + <select class="uk-select" name="reason" id="form-horizontal-select" required>
  40 + <option value="">请选择...</option>
  41 + <option>缺卡</option>
  42 + <option>其他</option>
  43 + </select>
  44 + </div>
  45 + </div>
  46 +
  47 + <div class="uk-margin">
  48 + <div class="uk-form-label">备注</div>
  49 + <div class="uk-form-controls uk-form-controls-text">
  50 + <textarea class="uk-textarea" name="remarks" rows="5" placeholder="备注,必填,限50字。" required data-fv-stringlength="true" data-fv-stringlength-max="50"></textarea>
  51 + </div>
  52 + </div>
  53 + </form>
  54 +
  55 + <p class="uk-text-right">
  56 + <button class="uk-button uk-button-default uk-modal-close" type="button">取消</button>
  57 + <button class="uk-button uk-button-primary submit-btn" type="button">保存</button>
  58 + </p>
  59 + </script>
  60 +
  61 + <script>
  62 + (function () {
  63 +
  64 + var wrap = '.handler_cont_rybd_wrap', ae, $cont;
  65 +
  66 +
  67 + $(wrap).on('init', function (e, data) {
  68 + e.stopPropagation();
  69 + if($(this).attr('data-init')==1)
  70 + return;
  71 +
  72 + ae = data.ae;
  73 +
  74 + var htmlStr = template('o_s_abnormal_handler_rybd-temp', {ae: ae, current_tcc_name: current_tcc_name});
  75 + $cont = $('.hc_body', wrap).html(htmlStr);
  76 +
  77 + //submit
  78 + var f = $('form', wrap).formValidation(gb_form_validation_opts);
  79 + $('.submit-btn', wrap).on('click', function () {
  80 + f.submit();
  81 + });
  82 + f.on('success.form.fv', function(e) {
  83 + e.preventDefault();
  84 +
  85 + var data = $(this).serializeJSON();
  86 +
  87 + console.log('data', data);
  88 + });
  89 +
  90 + //选择原因
  91 + $('[name=reason]', f).on('change', function () {
  92 + var v = $('[name=remarks]', f).val() + $(this).val() + ';';
  93 + if(!v)
  94 + return;
  95 + $('[name=remarks]', f).val(v);
  96 + });
  97 +
  98 + $(this).attr('data-init', 1);
  99 + });
  100 + })();
  101 + </script>
  102 +</div>
0 103 \ No newline at end of file
... ...
src/main/resources/static/pages/abnormal/js/o_s_abnormal.js
... ... @@ -31,7 +31,7 @@ var gb_o_s_abnormal = (function () {
31 31 */
32 32 $(document).on('click', wrap + ' .handler_btn_panel>button', function () {
33 33 var key = $(this).data('key');
34   - gb_common.open_modal_default('/pages/abnormal/fragments/abnormal_handler.html', '异常处理 -未签到', {key:key}, 800);
  34 + gb_common.open_modal_default('/pages/abnormal/fragments/abnormal_handler.html', '异常处理 -未签到', {key:key}, 700);
35 35 });
36 36  
37 37 var getByKey = function (key) {
... ...
src/main/resources/static/pages/abnormal/js/o_s_basic_data.js
... ... @@ -4,9 +4,14 @@
4 4 var gb_o_s_basic_data = (function () {
5 5  
6 6 var lineCode2NameMaps;
  7 + var personsArray;
  8 + var busArray;
  9 +
7 10 var init = function (cb) {
8   - var ep = EventProxy.create("line_code2name", function (lineCode2Names) {
  11 + var ep = EventProxy.create("line_code2name", "persons", "buss", function (lineCode2Names, personsList, busList) {
9 12 lineCode2NameMaps = lineCode2Names;
  13 + personsArray = personsList;
  14 + busArray = busList;
10 15  
11 16 cb && cb();
12 17 });
... ... @@ -19,6 +24,16 @@ var gb_o_s_basic_data = (function () {
19 24 }
20 25 ep.emit('line_code2name', maps);
21 26 });
  27 +
  28 + //人员信息
  29 + gb_common.$get('/person/allConcise', {}, function (rs) {
  30 + ep.emit('persons', rs.list);
  31 + });
  32 +
  33 + //车辆信息
  34 + gb_common.$get('/bus/allConcise', {}, function (rs) {
  35 + ep.emit('buss', rs.list);
  36 + });
22 37 };
23 38  
24 39 var findLineNameByCode = function (code) {
... ... @@ -27,6 +42,12 @@ var gb_o_s_basic_data = (function () {
27 42  
28 43 return {
29 44 init: init,
30   - findLineNameByCode: findLineNameByCode
  45 + findLineNameByCode: findLineNameByCode,
  46 + findAllPerson: function () {
  47 + return personsArray;
  48 + },
  49 + findAllBus: function () {
  50 + return busArray;
  51 + }
31 52 }
32 53 })();
33 54 \ No newline at end of file
... ...
src/main/resources/static/pages/abnormal/main.html
... ... @@ -24,7 +24,9 @@
24 24 </ul>
25 25  
26 26 <ul class="uk-switcher uk-margin abnormal_data_body_ul">
27   - <li><div class="abnormal_data_list"></div></li>
  27 + <li>
  28 + <div class="abnormal_data_list"></div>
  29 + </li>
28 30 <li>Hello again!</li>
29 31 </ul>
30 32 </div>
... ... @@ -54,7 +56,10 @@
54 56 </div>
55 57  
56 58 <div class="abnormal_detail">
57   - <span class="badge_line_name">{{obj.lineName}}</span>
  59 + <div class="_detail">路牌:{{obj.lpName}}</div>
  60 + <div class="_detail">
  61 + <span class="badge_line_name">{{obj.lineName}}</span>
  62 + </div>
58 63 </div>
59 64 </div>
60 65 {{else obj.type==1}}
... ... @@ -70,12 +75,16 @@
70 75 </div>
71 76  
72 77 <div class="abnormal_detail">
73   - <span class="badge_line_name">{{obj.lineName}}</span>
  78 + <div class="_detail">路牌:{{obj.lpName}}</div>
  79 + <div class="_detail">
  80 + <span class="badge_line_name">{{obj.lineName}}</span>
  81 + </div>
74 82 </div>
75 83 </div>
76 84 {{/if}}
77 85 <div class="handler_btn_panel">
78   - <button class="uk-button uk-button-primary uk-button-small" data-key="{{obj.schId}}_{{obj.type}}">处理</button>
  86 + <button class="uk-button uk-button-primary uk-button-small" data-key="{{obj.schId}}_{{obj.type}}">处理
  87 + </button>
79 88 </div>
80 89 </div>
81 90 {{/each}}
... ... @@ -86,7 +95,8 @@
86 95 <div class="uk-card uk-card-default uk-card-body o_s_line_card">
87 96 <div class="title_name">
88 97 {{data[k][0].lineName}}
89   - <span class="expand_card_icon" data-code="{{data[k][0].lineCode}}" data-name="{{data[k][0].lineName}}"></span>
  98 + <span class="expand_card_icon" data-code="{{data[k][0].lineCode}}"
  99 + data-name="{{data[k][0].lineName}}"></span>
90 100 </div>
91 101 <div class="o_s_c_table">
92 102 <div class="osc_table_head">
... ... @@ -128,7 +138,7 @@
128 138 <script>
129 139 (function () {
130 140 var wrap = '#abnormal_monitor_wrap';
131   - var lineIdx='10066,10067,10068,10146,10253,10335,10337,10340,10348,11014,60009,70123,104731';
  141 + var lineIdx = '10066,10067,10068,10146,10253,10335,10337,10340,10348,11014,60009,70123,104731';
132 142 window.localStorage.setItem("abnormal_line_idx", lineIdx);
133 143  
134 144 gb_o_s_basic_data.init(function () {
... ...