Commit 344861b0f8af99102e94bdb50c0a82ef7034791c

Authored by 王通
1 parent ab560d75

1.青浦和浦东有差异,修正

src/main/java/com/bsth/server_ws/attendance/AttendanceServiceSoap.java
1 package com.bsth.server_ws.attendance; 1 package com.bsth.server_ws.attendance;
2 2
  3 +import java.util.HashMap;
  4 +import java.util.HashSet;
  5 +import java.util.List;
  6 +import java.util.Map;
  7 +import java.util.Set;
  8 +
  9 +import javax.jws.WebService;
  10 +import javax.xml.ws.Holder;
  11 +
  12 +import org.apache.commons.lang3.StringUtils;
  13 +import org.slf4j.Logger;
  14 +import org.springframework.beans.BeansException;
  15 +import org.springframework.context.ApplicationContext;
  16 +import org.springframework.context.ApplicationContextAware;
  17 +import org.springframework.stereotype.Component;
  18 +
3 import com.bsth.entity.SchedulePlanInfo; 19 import com.bsth.entity.SchedulePlanInfo;
4 import com.bsth.entity.ScheduleRealInfo; 20 import com.bsth.entity.ScheduleRealInfo;
5 import com.bsth.redis.PlanScheduleRedisService; 21 import com.bsth.redis.PlanScheduleRedisService;
6 import com.bsth.redis.ScheduleRedisService; 22 import com.bsth.redis.ScheduleRedisService;
7 import com.bsth.server_rs.base_info.line.buffer.LineBufferData; 23 import com.bsth.server_rs.base_info.line.buffer.LineBufferData;
8 -import com.bsth.server_ws.attendance.entity.Ssry_attendance;  
9 import com.bsth.server_ws.attendance.entity.Jsy_attendance; 24 import com.bsth.server_ws.attendance.entity.Jsy_attendance;
  25 +import com.bsth.server_ws.attendance.entity.Ssry_attendance;
10 import com.bsth.server_ws.util.WSDataConver; 26 import com.bsth.server_ws.util.WSDataConver;
11 import com.bsth.service.DDYAuthorityService; 27 import com.bsth.service.DDYAuthorityService;
12 import com.bsth.service.UserService; 28 import com.bsth.service.UserService;
13 29
14 -import org.apache.commons.lang3.StringUtils;  
15 -import org.slf4j.Logger;  
16 -import org.springframework.beans.BeansException;  
17 -import org.springframework.context.ApplicationContext;  
18 -import org.springframework.context.ApplicationContextAware;  
19 -import org.springframework.stereotype.Component;  
20 -  
21 -import javax.jws.WebService;  
22 -import javax.xml.ws.Holder;  
23 -import java.util.HashSet;  
24 -import java.util.List;  
25 -import java.util.Map;  
26 -import java.util.Set;  
27 -  
28 /** 30 /**
29 * Created by panzhao on 2017/3/27. 31 * Created by panzhao on 2017/3/27.
30 */ 32 */
@@ -62,7 +64,8 @@ public class AttendanceServiceSoap implements AttendanceService, ApplicationCont @@ -62,7 +64,8 @@ public class AttendanceServiceSoap implements AttendanceService, ApplicationCont
62 //从计划和实际里提取出驾驶员 64 //从计划和实际里提取出驾驶员
63 Set<String> jsySet = extractJsy(plans, reals); 65 Set<String> jsySet = extractJsy(plans, reals);
64 //驾驶员班型对照 66 //驾驶员班型对照
65 - Map<String, String> types = ddyAuthorityService.findMultiType(jsySet); 67 + //Map<String, String> types = ddyAuthorityService.findMultiType(jsySet);
  68 + Map<String, String> types = new HashMap<String, String>();
66 69
67 //转换成工资系统想要的数据 70 //转换成工资系统想要的数据
68 result.value = WSDataConver.to_jsyAttendanceNH(plans, reals, jsySet, types, rq); 71 result.value = WSDataConver.to_jsyAttendanceNH(plans, reals, jsySet, types, rq);
src/main/java/com/bsth/server_ws/attendance/entity/Jsy_attendance.java
1 -package com.bsth.server_ws.attendance.entity;  
2 -  
3 -import com.bsth.entity.ScheduleRealInfo;  
4 -  
5 -import java.util.Collections;  
6 -import java.util.Comparator;  
7 -import java.util.List;  
8 -  
9 -/**  
10 - * 南汇驾驶员考勤  
11 - * Created by panzhao on 2017/3/27.  
12 - */  
13 -public class Jsy_attendance {  
14 -  
15 - /** 日期 */  
16 - private String rq;  
17 -  
18 - /** 公司编码 */  
19 - private String company;  
20 -  
21 - /** 分公司编码 */  
22 - private String fgsCompany;  
23 -  
24 - /** 线路编码 */  
25 - private String xlBm;  
26 -  
27 - /** 线路名称 */  
28 - private String xlName;  
29 -  
30 - /** 驾驶员工号 */  
31 - private String jGh;  
32 -  
33 - /** 驾驶员名称 */  
34 - private String jName;  
35 -  
36 - /** 售票员工号 */  
37 - private String sGh;  
38 -  
39 - /** 售票员名称 */  
40 - private String sName;  
41 -  
42 - /** 班型 */  
43 - private String planType;  
44 -  
45 - /**  
46 - * 出勤状态 应出,实出  
47 - * 1,0 应出未出  
48 - * 1,1 应出实出  
49 - * 0,1 无计划,临加出勤  
50 - */  
51 - private String status;  
52 -  
53 - /**  
54 - * 路牌  
55 - */  
56 - private String lpNames;  
57 -  
58 - /** 车辆 */  
59 - private String cls;  
60 -  
61 - /**  
62 - * 早夜班类型  
63 - *  
64 - * 早班:上班时间五点之前;  
65 - * 中班:下班时间为22点之后到24点之间;  
66 - * 晚班:下班时间24点之后为深夜班  
67 - *  
68 - * 1、早班  
69 - 2、中班  
70 - 3、晚班  
71 - 4、早中班  
72 - 5、早晚班  
73 - */  
74 - private int zybType;  
75 -  
76 -  
77 - public void calcZybType(List<ScheduleRealInfo> list){  
78 - ScheduleRealInfo s,e;  
79 - Collections.sort(list, new Comparator<ScheduleRealInfo>() {  
80 - @Override  
81 - public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {  
82 - return (int) (o1.getFcsjT() - o2.getFcsjT());  
83 - }  
84 - });  
85 -  
86 - s = list.get(0);  
87 - e = list.get(list.size() - 1);  
88 -  
89 - if(s.getFcsj().compareTo("05:00") <= 0)  
90 - this.zybType=1;//早班  
91 - else if(e.getZdsj().compareTo("05:00") > 0)  
92 - this.zybType=2;//中班  
93 - else if(e.getZdsj().compareTo("05:00") < 0)  
94 - this.zybType=3;//晚班  
95 -  
96 - //早中班  
97 - if(this.zybType==1 && e.getZdsj().compareTo("22:00") >=0 && e.getZdsj().compareTo("23:59") <= 0){  
98 - this.zybType = 4;  
99 - }  
100 -  
101 - //早晚班  
102 - if(this.zybType==1 && e.getZdsj().compareTo(s.getFcsj()) < 0){  
103 - this.zybType = 5;  
104 - }  
105 - }  
106 -  
107 - public Jsy_attendance() {  
108 - }  
109 -  
110 - public String getRq() {  
111 - return rq;  
112 - }  
113 -  
114 - public void setRq(String rq) {  
115 - this.rq = rq;  
116 - }  
117 -  
118 - public String getXlBm() {  
119 - return xlBm;  
120 - }  
121 -  
122 - public void setXlBm(String xlBm) {  
123 - this.xlBm = xlBm;  
124 - }  
125 -  
126 - public String getXlName() {  
127 - return xlName;  
128 - }  
129 -  
130 - public void setXlName(String xlName) {  
131 - this.xlName = xlName;  
132 - }  
133 -  
134 - public String getjGh() {  
135 - return jGh;  
136 - }  
137 -  
138 - public void setjGh(String jGh) {  
139 - this.jGh = jGh;  
140 - }  
141 -  
142 - public String getjName() {  
143 - return jName;  
144 - }  
145 -  
146 - public void setjName(String jName) {  
147 - this.jName = jName;  
148 - }  
149 -  
150 - public String getsGh() {  
151 - return sGh;  
152 - }  
153 -  
154 - public void setsGh(String sGh) {  
155 - this.sGh = sGh;  
156 - }  
157 -  
158 - public String getsName() {  
159 - return sName;  
160 - }  
161 -  
162 - public void setsName(String sName) {  
163 - this.sName = sName;  
164 - }  
165 -  
166 - public String getPlanType() {  
167 - return planType;  
168 - }  
169 -  
170 - public void setPlanType(String planType) {  
171 - this.planType = planType;  
172 - }  
173 -  
174 - public String getStatus() {  
175 - return status;  
176 - }  
177 -  
178 - public void setStatus(String status) {  
179 - this.status = status;  
180 - }  
181 -  
182 - public String getCompany() {  
183 - return company;  
184 - }  
185 -  
186 - public void setCompany(String company) {  
187 - this.company = company;  
188 - }  
189 -  
190 - public String getFgsCompany() {  
191 - return fgsCompany;  
192 - }  
193 -  
194 - public void setFgsCompany(String fgsCompany) {  
195 - this.fgsCompany = fgsCompany;  
196 - }  
197 -  
198 - public String getLpNames() {  
199 - return lpNames;  
200 - }  
201 -  
202 - public void setLpNames(String lpNames) {  
203 - this.lpNames = lpNames;  
204 - }  
205 -  
206 - public String getCls() {  
207 - return cls;  
208 - }  
209 -  
210 - public void setCls(String cls) {  
211 - this.cls = cls;  
212 - }  
213 -  
214 - public void addLpName(String name){  
215 - if(null==this.lpNames)  
216 - this.lpNames="";  
217 - else  
218 - this.lpNames+=",";  
219 - this.lpNames+=name;  
220 - }  
221 -  
222 - public void addCl(String nbbm){  
223 - if(null==this.cls)  
224 - this.cls="";  
225 - else  
226 - this.cls+=",";  
227 -  
228 - this.cls+=nbbm;  
229 - }  
230 -  
231 - public int getZybType() {  
232 - return zybType;  
233 - }  
234 -  
235 - public void setZybType(int zybType) {  
236 - this.zybType = zybType;  
237 - }  
238 -} 1 +package com.bsth.server_ws.attendance.entity;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.Collections;
  5 +import java.util.Comparator;
  6 +import java.util.List;
  7 +
  8 +import com.bsth.entity.ScheduleRealInfo;
  9 +
  10 +/**
  11 + * 南汇驾驶员考勤
  12 + * Created by panzhao on 2017/3/27.
  13 + */
  14 +public class Jsy_attendance {
  15 +
  16 + /** 日期 */
  17 + private String rq;
  18 +
  19 + /** 公司编码 */
  20 + private String company;
  21 +
  22 + /** 分公司编码 */
  23 + private String fgsCompany;
  24 +
  25 + /** 线路编码 */
  26 + private String xlBm;
  27 +
  28 + /** 线路名称 */
  29 + private String xlName;
  30 +
  31 + /** 驾驶员工号 */
  32 + private String jGh;
  33 +
  34 + /** 驾驶员名称 */
  35 + private String jName;
  36 +
  37 + /** 售票员工号 */
  38 + private String sGh;
  39 +
  40 + /** 售票员名称 */
  41 + private String sName;
  42 +
  43 + /** 班型 */
  44 + private String planType;
  45 +
  46 + /**
  47 + * 出勤状态 应出,实出
  48 + * 1,0 应出未出
  49 + * 1,1 应出实出
  50 + * 0,1 无计划,临加出勤
  51 + */
  52 + private String status;
  53 +
  54 + /**
  55 + * 路牌
  56 + */
  57 + private String lpNames;
  58 +
  59 + /** 车辆 */
  60 + private String cls;
  61 +
  62 + /**
  63 + * 早夜班类型
  64 + *
  65 + * 早班:上班时间五点之前;
  66 + * 中班:下班时间为22点之后到24点之间;
  67 + * 晚班:下班时间24点之后为深夜班
  68 + *
  69 + * 1、早班
  70 + 2、中班
  71 + 3、晚班
  72 + 4、早中班
  73 + 5、早晚班
  74 + */
  75 + private int zybType;
  76 +
  77 +
  78 + public void calcZybType(List<ScheduleRealInfo> list){
  79 + ScheduleRealInfo s,e;
  80 + List<ScheduleRealInfo> temp = new ArrayList<ScheduleRealInfo>();
  81 + for (ScheduleRealInfo sri : list) {
  82 + if (sri.getFcsjT() != null) {
  83 + temp.add(sri);
  84 + }
  85 + }
  86 + Collections.sort(temp, new Comparator<ScheduleRealInfo>() {
  87 + @Override
  88 + public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
  89 + return (int) (o1.getFcsjT() - o2.getFcsjT());
  90 + }
  91 + });
  92 +
  93 + s = list.get(0);
  94 + e = list.get(list.size() - 1);
  95 +
  96 + if(s.getFcsj().compareTo("05:00") <= 0)
  97 + this.zybType=1;//早班
  98 + else if(e.getZdsj().compareTo("05:00") > 0)
  99 + this.zybType=2;//中班
  100 + else if(e.getZdsj().compareTo("05:00") < 0)
  101 + this.zybType=3;//晚班
  102 +
  103 + //早中班
  104 + if(this.zybType==1 && e.getZdsj().compareTo("22:00") >=0 && e.getZdsj().compareTo("23:59") <= 0){
  105 + this.zybType = 4;
  106 + }
  107 +
  108 + //早晚班
  109 + if(this.zybType==1 && e.getZdsj().compareTo(s.getFcsj()) < 0){
  110 + this.zybType = 5;
  111 + }
  112 + }
  113 +
  114 + public Jsy_attendance() {
  115 + }
  116 +
  117 + public String getRq() {
  118 + return rq;
  119 + }
  120 +
  121 + public void setRq(String rq) {
  122 + this.rq = rq;
  123 + }
  124 +
  125 + public String getXlBm() {
  126 + return xlBm;
  127 + }
  128 +
  129 + public void setXlBm(String xlBm) {
  130 + this.xlBm = xlBm;
  131 + }
  132 +
  133 + public String getXlName() {
  134 + return xlName;
  135 + }
  136 +
  137 + public void setXlName(String xlName) {
  138 + this.xlName = xlName;
  139 + }
  140 +
  141 + public String getjGh() {
  142 + return jGh;
  143 + }
  144 +
  145 + public void setjGh(String jGh) {
  146 + this.jGh = jGh;
  147 + }
  148 +
  149 + public String getjName() {
  150 + return jName;
  151 + }
  152 +
  153 + public void setjName(String jName) {
  154 + this.jName = jName;
  155 + }
  156 +
  157 + public String getsGh() {
  158 + return sGh;
  159 + }
  160 +
  161 + public void setsGh(String sGh) {
  162 + this.sGh = sGh;
  163 + }
  164 +
  165 + public String getsName() {
  166 + return sName;
  167 + }
  168 +
  169 + public void setsName(String sName) {
  170 + this.sName = sName;
  171 + }
  172 +
  173 + public String getPlanType() {
  174 + return planType;
  175 + }
  176 +
  177 + public void setPlanType(String planType) {
  178 + this.planType = planType;
  179 + }
  180 +
  181 + public String getStatus() {
  182 + return status;
  183 + }
  184 +
  185 + public void setStatus(String status) {
  186 + this.status = status;
  187 + }
  188 +
  189 + public String getCompany() {
  190 + return company;
  191 + }
  192 +
  193 + public void setCompany(String company) {
  194 + this.company = company;
  195 + }
  196 +
  197 + public String getFgsCompany() {
  198 + return fgsCompany;
  199 + }
  200 +
  201 + public void setFgsCompany(String fgsCompany) {
  202 + this.fgsCompany = fgsCompany;
  203 + }
  204 +
  205 + public String getLpNames() {
  206 + return lpNames;
  207 + }
  208 +
  209 + public void setLpNames(String lpNames) {
  210 + this.lpNames = lpNames;
  211 + }
  212 +
  213 + public String getCls() {
  214 + return cls;
  215 + }
  216 +
  217 + public void setCls(String cls) {
  218 + this.cls = cls;
  219 + }
  220 +
  221 + public void addLpName(String name){
  222 + if(null==this.lpNames)
  223 + this.lpNames="";
  224 + else
  225 + this.lpNames+=",";
  226 + this.lpNames+=name;
  227 + }
  228 +
  229 + public void addCl(String nbbm){
  230 + if(null==this.cls)
  231 + this.cls="";
  232 + else
  233 + this.cls+=",";
  234 +
  235 + this.cls+=nbbm;
  236 + }
  237 +
  238 + public int getZybType() {
  239 + return zybType;
  240 + }
  241 +
  242 + public void setZybType(int zybType) {
  243 + this.zybType = zybType;
  244 + }
  245 +}
src/main/java/com/bsth/server_ws/util/WSDataConver.java
@@ -757,7 +757,7 @@ public class WSDataConver { @@ -757,7 +757,7 @@ public class WSDataConver {
757 //考勤 757 //考勤
758 attendance.setStatus((plan==null?"0":"1") + "," + (real==null?"0":"1")); 758 attendance.setStatus((plan==null?"0":"1") + "," + (real==null?"0":"1"));
759 //班型 759 //班型
760 - attendance.setPlanType(types.get(jGh)==null?"1":types.get(jGh)); 760 + attendance.setPlanType("1");
761 //驾驶员工号 761 //驾驶员工号
762 attendance.setjGh(jGh); 762 attendance.setjGh(jGh);
763 //早晚班类型 763 //早晚班类型
src/main/java/com/bsth/service/impl/DDYAuthorityServiceImpl.java
1 -package com.bsth.service.impl;  
2 -  
3 -import com.bsth.Application;  
4 -import com.bsth.service.DDYAuthorityService;  
5 -import com.google.common.base.Splitter;  
6 -import org.slf4j.Logger;  
7 -import org.slf4j.LoggerFactory;  
8 -import org.springframework.beans.factory.annotation.Autowired;  
9 -import org.springframework.boot.CommandLineRunner;  
10 -import org.springframework.core.annotation.Order;  
11 -import org.springframework.jdbc.core.JdbcTemplate;  
12 -import org.springframework.stereotype.Component;  
13 -import org.springframework.stereotype.Service;  
14 -  
15 -import java.util.*;  
16 -import java.util.concurrent.TimeUnit;  
17 -  
18 -/**  
19 - * Created by panzhao on 2017/3/27.  
20 - */  
21 -@Service  
22 -@Order(5)  
23 -public class DDYAuthorityServiceImpl implements DDYAuthorityService, CommandLineRunner {  
24 -  
25 - @Autowired  
26 - JdbcTemplate jdbcTemplate;  
27 -  
28 - /**  
29 - * 驾驶员班型对照  
30 - * 1: 做1休1  
31 - * 1,1,1,1,1,0,0 : 做5休2  
32 - */  
33 - static Map<String, String> planTypesMap;  
34 -  
35 - Logger logger = LoggerFactory.getLogger(this.getClass());  
36 -  
37 - @Override  
38 - public List<String> findLinesByDDY(String ddy_id) {  
39 - List<String> rs;  
40 - try {  
41 - Map<String, Object> map = jdbcTemplate.queryForMap("select LINE_CODE_STR from bsth_c_real_control_authority a left join bsth_c_sys_user u on a.user_id=u.id where u.user_name=?", ddy_id);  
42 - String idx = map.get("LINE_CODE_STR").toString();  
43 -  
44 - rs = Splitter.on(",").trimResults().splitToList(idx);  
45 - }catch (Exception e){  
46 - logger.error("", e);  
47 - rs = new ArrayList<>();  
48 - }  
49 - return rs;  
50 - }  
51 -  
52 - @Override  
53 - public String findPlanType(String jGh) {  
54 - return planTypesMap.get(jGh);  
55 - }  
56 -  
57 - /**  
58 - * 加载驾驶员班型数据  
59 - */  
60 - @Override  
61 - public void loadPlanTypes(){  
62 - Map<String, String> rsMap = new HashMap<>();  
63 - //线路_搭班编码 ——> 班型  
64 - Map<String, String> ddbm2bxMap = new HashMap<>();  
65 - List<Map<String, Object>> listMap = jdbcTemplate.queryForList("select IFNULL(FBGS, '1') as FBGS, RY_DBBMS, XL from bsth_c_s_sr1_flat where ry_dbbms is not null and xl is not null");  
66 - List<String> fbList, dbList;  
67 - String xl, fbgs;  
68 - for(Map<String, Object> map : listMap){  
69 - xl = map.get("XL").toString();  
70 - fbgs = map.get("FBGS").toString();  
71 - //拆分分班  
72 - fbList = Splitter.on("-").trimResults().splitToList(map.get("RY_DBBMS").toString());  
73 - for(String fb : fbList){  
74 - //拆分搭班编码  
75 - dbList = Splitter.on(",").trimResults().splitToList(fb);  
76 -  
77 - for(String db : dbList)  
78 - ddbm2bxMap.put(xl + "_" + db, fbgs);  
79 - }  
80 - }  
81 -  
82 - //线路_搭班编码 ——> 驾驶员  
83 - Map<String, String> ddbm2jsyMap = new HashMap<>();  
84 - listMap = jdbcTemplate.queryForList("select ec.DBBM,ec.XL,p.JOB_CODE from bsth_c_s_ecinfo ec LEFT JOIN bsth_c_personnel p on ec.jsy=p.id where ec.dbbm is not null and ec.xl is not null and p.job_code is not null");  
85 - for(Map<String, Object> map : listMap){  
86 - ddbm2jsyMap.put(map.get("XL") + "_" + map.get("DBBM"), map.get("JOB_CODE").toString());  
87 - }  
88 -  
89 - Set<String> dbms = ddbm2jsyMap.keySet();  
90 - for(String bm : dbms){  
91 - if(ddbm2bxMap.containsKey(bm))  
92 - rsMap.put(ddbm2jsyMap.get(bm), ddbm2bxMap.get(bm));  
93 - }  
94 - planTypesMap = rsMap;  
95 - }  
96 -  
97 - @Override  
98 - public Map<String, String> findMultiType(Set<String> jsySet) {  
99 - Map<String, String> rs = new HashMap<>();  
100 - for(String jGh: jsySet){  
101 - rs.put(jGh, planTypesMap.get(jGh));  
102 - }  
103 - return rs;  
104 - }  
105 -  
106 -  
107 - @Autowired  
108 - RefreshPlanTypesThread refreshPlanTypesThread;  
109 -  
110 - @Override  
111 - public void run(String... strings) throws Exception {  
112 - //加载驾驶员班型数据  
113 - Application.mainServices.scheduleWithFixedDelay(refreshPlanTypesThread, 30, 60 * 120, TimeUnit.SECONDS);  
114 - }  
115 -  
116 - @Component  
117 - public static class RefreshPlanTypesThread extends Thread{  
118 -  
119 - @Autowired  
120 - DDYAuthorityService ddyAuthorityService;  
121 -  
122 - @Override  
123 - public void run() {  
124 - ddyAuthorityService.loadPlanTypes();  
125 - }  
126 - }  
127 -} 1 +package com.bsth.service.impl;
  2 +
  3 +import com.bsth.Application;
  4 +import com.bsth.service.DDYAuthorityService;
  5 +import com.google.common.base.Splitter;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.boot.CommandLineRunner;
  10 +import org.springframework.core.annotation.Order;
  11 +import org.springframework.jdbc.core.JdbcTemplate;
  12 +import org.springframework.stereotype.Component;
  13 +import org.springframework.stereotype.Service;
  14 +
  15 +import java.util.*;
  16 +import java.util.concurrent.TimeUnit;
  17 +
  18 +/**
  19 + * Created by panzhao on 2017/3/27.
  20 + */
  21 +@Service
  22 +@Order(5)
  23 +public class DDYAuthorityServiceImpl implements DDYAuthorityService, CommandLineRunner {
  24 +
  25 + @Autowired
  26 + JdbcTemplate jdbcTemplate;
  27 +
  28 + /**
  29 + * 驾驶员班型对照
  30 + * 1: 做1休1
  31 + * 1,1,1,1,1,0,0 : 做5休2
  32 + */
  33 + static Map<String, String> planTypesMap;
  34 +
  35 + Logger logger = LoggerFactory.getLogger(this.getClass());
  36 +
  37 + @Override
  38 + public List<String> findLinesByDDY(String ddy_id) {
  39 + List<String> rs;
  40 + try {
  41 + Map<String, Object> map = jdbcTemplate.queryForMap("select LINE_CODE_STR from bsth_c_real_control_authority a left join bsth_c_sys_user u on a.user_id=u.id where u.user_name=?", ddy_id);
  42 + String idx = map.get("LINE_CODE_STR").toString();
  43 +
  44 + rs = Splitter.on(",").trimResults().splitToList(idx);
  45 + }catch (Exception e){
  46 + logger.error("", e);
  47 + rs = new ArrayList<>();
  48 + }
  49 + return rs;
  50 + }
  51 +
  52 + @Override
  53 + public String findPlanType(String jGh) {
  54 + return planTypesMap.get(jGh);
  55 + }
  56 +
  57 + /**
  58 + * 加载驾驶员班型数据
  59 + */
  60 + @Override
  61 + public void loadPlanTypes(){
  62 + Map<String, String> rsMap = new HashMap<>();
  63 + //线路_搭班编码 ——> 班型
  64 + Map<String, String> ddbm2bxMap = new HashMap<>();
  65 + List<Map<String, Object>> listMap = jdbcTemplate.queryForList("select IFNULL(FBGS, '1') as FBGS, RY_DBBMS, XL from bsth_c_s_sr1_flat where ry_dbbms is not null and xl is not null");
  66 + List<String> fbList, dbList;
  67 + String xl, fbgs;
  68 + for(Map<String, Object> map : listMap){
  69 + xl = map.get("XL").toString();
  70 + fbgs = map.get("FBGS").toString();
  71 + //拆分分班
  72 + fbList = Splitter.on("-").trimResults().splitToList(map.get("RY_DBBMS").toString());
  73 + for(String fb : fbList){
  74 + //拆分搭班编码
  75 + dbList = Splitter.on(",").trimResults().splitToList(fb);
  76 +
  77 + for(String db : dbList)
  78 + ddbm2bxMap.put(xl + "_" + db, fbgs);
  79 + }
  80 + }
  81 +
  82 + //线路_搭班编码 ——> 驾驶员
  83 + Map<String, String> ddbm2jsyMap = new HashMap<>();
  84 + listMap = jdbcTemplate.queryForList("select ec.DBBM,ec.XL,p.JOB_CODE from bsth_c_s_ecinfo ec LEFT JOIN bsth_c_personnel p on ec.jsy=p.id where ec.dbbm is not null and ec.xl is not null and p.job_code is not null");
  85 + for(Map<String, Object> map : listMap){
  86 + ddbm2jsyMap.put(map.get("XL") + "_" + map.get("DBBM"), map.get("JOB_CODE").toString());
  87 + }
  88 +
  89 + Set<String> dbms = ddbm2jsyMap.keySet();
  90 + for(String bm : dbms){
  91 + if(ddbm2bxMap.containsKey(bm))
  92 + rsMap.put(ddbm2jsyMap.get(bm), ddbm2bxMap.get(bm));
  93 + }
  94 + planTypesMap = rsMap;
  95 + }
  96 +
  97 + @Override
  98 + public Map<String, String> findMultiType(Set<String> jsySet) {
  99 + Map<String, String> rs = new HashMap<>();
  100 + for(String jGh: jsySet){
  101 + System.out.println(jGh + " " + planTypesMap.get(jGh));
  102 + rs.put(jGh, planTypesMap.get(jGh));
  103 + }
  104 + return rs;
  105 + }
  106 +
  107 +
  108 + @Autowired
  109 + RefreshPlanTypesThread refreshPlanTypesThread;
  110 +
  111 + @Override
  112 + public void run(String... strings) throws Exception {
  113 + //加载驾驶员班型数据
  114 + Application.mainServices.scheduleWithFixedDelay(refreshPlanTypesThread, 30, 60 * 120, TimeUnit.SECONDS);
  115 + }
  116 +
  117 + @Component
  118 + public static class RefreshPlanTypesThread extends Thread{
  119 +
  120 + @Autowired
  121 + DDYAuthorityService ddyAuthorityService;
  122 +
  123 + @Override
  124 + public void run() {
  125 + ddyAuthorityService.loadPlanTypes();
  126 + }
  127 + }
  128 +}