Commit e9ab20327f08038f36af0a34800d7bc306c7282b
1 parent
5e9579e6
批量上传线路站级数据
Showing
3 changed files
with
169 additions
and
57 deletions
src/main/java/com/bsth/controller/schedule/TrafficManageController.java
| ... | ... | @@ -30,6 +30,15 @@ public class TrafficManageController { |
| 30 | 30 | } |
| 31 | 31 | } |
| 32 | 32 | |
| 33 | + @RequestMapping(value = "/setXLByInUse", method = RequestMethod.GET) | |
| 34 | + public String setXLByInUse(@RequestParam("inUse") String inUse) throws Exception { | |
| 35 | + try { | |
| 36 | + return trManageService.setXLByInUse(inUse); | |
| 37 | + } catch (Exception exp) { | |
| 38 | + throw new Exception(exp.getCause()); | |
| 39 | + } | |
| 40 | + } | |
| 41 | + | |
| 33 | 42 | @RequestMapping(value = "/setCL", method = RequestMethod.GET) |
| 34 | 43 | public String setCL() throws Exception { |
| 35 | 44 | try { |
| ... | ... | @@ -57,6 +66,15 @@ public class TrafficManageController { |
| 57 | 66 | } |
| 58 | 67 | } |
| 59 | 68 | |
| 69 | + @RequestMapping(value = "/setLDByDate", method = RequestMethod.GET) | |
| 70 | + public String setLDByDate(@RequestParam("theDate") String theDate) throws Exception { | |
| 71 | + try { | |
| 72 | + return trManageService.setLD(theDate); | |
| 73 | + } catch (Exception exp) { | |
| 74 | + throw new Exception(exp.getCause()); | |
| 75 | + } | |
| 76 | + } | |
| 77 | + | |
| 60 | 78 | @RequestMapping(value = "/setLDFile", method = RequestMethod.GET) |
| 61 | 79 | public String setLDFile() throws Exception { |
| 62 | 80 | try { | ... | ... |
src/main/java/com/bsth/service/TrafficManageService.java
| 1 | 1 | package com.bsth.service; |
| 2 | 2 | |
| 3 | -import java.util.Map; | |
| 4 | - | |
| 5 | 3 | /** |
| 6 | 4 | * |
| 7 | 5 | * @Interface: LineService(线路service业务层实现接口) |
| ... | ... | @@ -27,6 +25,13 @@ public interface TrafficManageService { |
| 27 | 25 | String setXL(String ids); |
| 28 | 26 | |
| 29 | 27 | /** |
| 28 | + * 上传线路信息 | |
| 29 | + * | |
| 30 | + * @return 调用接口返回信息 | |
| 31 | + */ | |
| 32 | + String setXLByInUse(String ids); | |
| 33 | + | |
| 34 | + /** | |
| 30 | 35 | * 上传车辆信息 |
| 31 | 36 | * |
| 32 | 37 | * @return 调用接口返回信息 |
| ... | ... | @@ -65,6 +70,8 @@ public interface TrafficManageService { |
| 65 | 70 | */ |
| 66 | 71 | String setJHBC(); |
| 67 | 72 | |
| 73 | + String setLD(String theDate); | |
| 74 | + | |
| 68 | 75 | String setLD(); |
| 69 | 76 | |
| 70 | 77 | String setLDFile(); | ... | ... |
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
| ... | ... | @@ -19,7 +19,6 @@ import com.bsth.service.TrafficManageService; |
| 19 | 19 | import com.bsth.service.traffic.YgcBasicDataService; |
| 20 | 20 | import com.bsth.util.TimeUtils; |
| 21 | 21 | import com.bsth.util.db.DBUtils_MS; |
| 22 | -import com.bsth.webService.trafficManage.geotool.services.InternalPortType; | |
| 23 | 22 | import com.bsth.webService.trafficManage.org.tempuri.Results; |
| 24 | 23 | import com.bsth.webService.trafficManage.org.tempuri.WebServiceLocator; |
| 25 | 24 | import com.bsth.webService.trafficManage.org.tempuri.WebServiceSoap; |
| ... | ... | @@ -40,6 +39,7 @@ import java.sql.ResultSet; |
| 40 | 39 | import java.text.DecimalFormat; |
| 41 | 40 | import java.text.SimpleDateFormat; |
| 42 | 41 | import java.util.*; |
| 42 | +import java.util.regex.Matcher; | |
| 43 | 43 | import java.util.regex.Pattern; |
| 44 | 44 | |
| 45 | 45 | /** |
| ... | ... | @@ -67,10 +67,16 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 67 | 67 | @Autowired |
| 68 | 68 | private LineRepository lineRepository; |
| 69 | 69 | |
| 70 | + @Autowired | |
| 71 | + private LineInformationRepository lineInformationRepository; | |
| 72 | + | |
| 70 | 73 | // 站点路由repository |
| 71 | 74 | @Autowired |
| 72 | 75 | private StationRouteRepository stationRouteRepository; |
| 73 | 76 | |
| 77 | + @Autowired | |
| 78 | + private SectionRepository sectionRepository; | |
| 79 | + | |
| 74 | 80 | // 车辆repository |
| 75 | 81 | @Autowired |
| 76 | 82 | private CarsRepository carsRepository; |
| ... | ... | @@ -104,8 +110,8 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 104 | 110 | private YgcBasicDataService ygcBasicDataService; |
| 105 | 111 | |
| 106 | 112 | |
| 107 | - // 运管处接口 | |
| 108 | - private InternalPortType portType = null;//new Internal().getInternalHttpSoap11Endpoint(); | |
| 113 | + // 运管处上传接口 | |
| 114 | + private com.bsth.webService.trafficManage.up.org.tempuri.WebServiceSoap webServiceSoapUp; | |
| 109 | 115 | private WebServiceSoap ssop ; |
| 110 | 116 | { |
| 111 | 117 | try { |
| ... | ... | @@ -127,6 +133,23 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 127 | 133 | private final String userNameOther = "user"; |
| 128 | 134 | // 密码 |
| 129 | 135 | private final String passwordOther = "user"; |
| 136 | + | |
| 137 | + // 用户名 | |
| 138 | + private final String userNameUp = "user"; | |
| 139 | + // 密码 | |
| 140 | + private final String passwordUp = "user"; | |
| 141 | + | |
| 142 | + private synchronized com.bsth.webService.trafficManage.up.org.tempuri.WebServiceSoap getWebServiceSoapUp(){ | |
| 143 | + try { | |
| 144 | + if(webServiceSoapUp == null){ | |
| 145 | + webServiceSoapUp = new com.bsth.webService.trafficManage.up.org.tempuri.WebServiceLocator().getWebServiceSoap(); | |
| 146 | + } | |
| 147 | + }catch (Exception e){ | |
| 148 | + e.printStackTrace(); | |
| 149 | + }finally { | |
| 150 | + return webServiceSoapUp; | |
| 151 | + } | |
| 152 | + } | |
| 130 | 153 | /** |
| 131 | 154 | * 上传线路信息 |
| 132 | 155 | */ |
| ... | ... | @@ -137,26 +160,44 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 137 | 160 | String[] idArray = ids.split(","); |
| 138 | 161 | try { |
| 139 | 162 | for (String id : idArray) { |
| 163 | + if(id == null || id.trim().equals("")){ | |
| 164 | + continue; | |
| 165 | + } | |
| 140 | 166 | Map<String,Object> map = new HashMap<>(); |
| 141 | 167 | map.put("lineCode_eq", id); |
| 142 | 168 | Line line ; |
| 169 | + LineInformation lineInformation; | |
| 143 | 170 | line = lineRepository.findOne(new CustomerSpecs<Line>(map)); |
| 144 | 171 | if(line == null){ |
| 145 | 172 | continue; |
| 146 | 173 | } |
| 147 | 174 | List<StationRoute> upStationsList ;// 上行站点路由集 |
| 148 | - List<StationRoute> downStationsList = null;// 下行站点路由集 | |
| 149 | - sBuffer.append("<Data>"); | |
| 150 | - sBuffer.append("<RequestOrg>上海巴士拓华科技发展有限公司</RequestOrg>"); | |
| 151 | - sBuffer.append("<DataList>"); | |
| 175 | + List<StationRoute> downStationsList;// 下行站点路由集 | |
| 176 | + List<Object[]> downPointList;// 下行站点集 | |
| 177 | + List<Object[]> upPointList;// 上行站点集 | |
| 178 | + sBuffer.append("<XLs>"); | |
| 179 | + sBuffer.append("<XL>"); | |
| 152 | 180 | if(BasicData.lineId2ShangHaiCodeMap.get(line.getId()) == null){ |
| 153 | 181 | return result; |
| 154 | 182 | } |
| 155 | - sBuffer.append("<LINE_ID>").append(line.getId()).append("</LINE_ID>"); | |
| 156 | - sBuffer.append("<LINE_CODE>").append(BasicData.lineId2ShangHaiCodeMap.get(line.getId())).append("</LINE_CODE>"); | |
| 157 | - sBuffer.append("<LINE_NAME>").append(line.getName()).append("</LINE_NAME>"); | |
| 183 | + map = new HashMap<>(); | |
| 184 | + map.put("line.id_eq",line.getId()); | |
| 185 | + lineInformation = lineInformationRepository.findOne(new CustomerSpecs<LineInformation>(map)); | |
| 186 | + if(lineInformation == null){ | |
| 187 | + continue; | |
| 188 | + } | |
| 189 | + sBuffer.append("<XLBM>").append(BasicData.lineId2ShangHaiCodeMap.get(line.getId())).append("</XLBM>"); | |
| 190 | + sBuffer.append("<XLMC>").append(line.getName()).append("</XLMC>"); | |
| 191 | + sBuffer.append("<QDZ>").append(line.getStartStationName()).append("</QDZ>"); | |
| 192 | + sBuffer.append("<ZDZ>").append(line.getEndStationName()).append("</ZDZ>"); | |
| 193 | + sBuffer.append("<QZLC>").append(lineInformation.getUpMileage()).append("</QZLC>"); | |
| 194 | + sBuffer.append("<ZQLC>").append(lineInformation.getDownMileage()).append("</ZQLC>"); | |
| 195 | + sBuffer.append("<XLGH>").append(line.getLinePlayType()).append("</XLGH>"); | |
| 196 | + sBuffer.append("<UPDATE_DATE>").append(sdfnyr.format(new Date())).append("</UPDATE_DATE>"); | |
| 197 | + | |
| 158 | 198 | // 循环添加站点信息 |
| 159 | - sBuffer.append("<LineStationList>"); | |
| 199 | + sBuffer.append("<StationList>"); | |
| 200 | + | |
| 160 | 201 | // 先查上行 |
| 161 | 202 | upStationsList = stationRouteRepository.findByLine(line.getLineCode(), 0); |
| 162 | 203 | int startId = 1; |
| ... | ... | @@ -167,25 +208,23 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 167 | 208 | downStationsList = stationRouteRepository.findByLine(line.getLineCode(), 1); |
| 168 | 209 | packagStationXml(downStationsList, sBuffer, startId); |
| 169 | 210 | } |
| 170 | - sBuffer.append("</LineStationList>"); | |
| 211 | + sBuffer.append("</StationList>"); | |
| 171 | 212 | |
| 172 | 213 | // 循环添加站点点位信息 |
| 173 | 214 | sBuffer.append("<LinePointList>"); |
| 215 | + upPointList = sectionRepository.getSectionDirByLineId(line.getId(),0); | |
| 174 | 216 | startId = 1; |
| 175 | - startId = packagStationPointXml(upStationsList, sBuffer, startId); | |
| 217 | + startId = packagStationPointXml(upPointList, sBuffer, startId); | |
| 176 | 218 | // 环线不查下行 |
| 177 | 219 | if(line.getLinePlayType() != 1){ |
| 178 | - packagStationPointXml(downStationsList, sBuffer, startId); | |
| 220 | + downPointList = sectionRepository.getSectionDirByLineId(line.getId(),1); | |
| 221 | + packagStationPointXml(downPointList, sBuffer, startId); | |
| 179 | 222 | } |
| 180 | 223 | sBuffer.append("</LinePointList>"); |
| 181 | - sBuffer.append("</DataList>"); | |
| 182 | - sBuffer.append("</Data>"); | |
| 224 | + sBuffer.append("</XL>"); | |
| 225 | + sBuffer.append("</XLs>"); | |
| 183 | 226 | // 调用上传方法 |
| 184 | - result = ygcBasicDataService.invokeMethod("UpdateBusLineStation",sBuffer.toString()); | |
| 185 | - String str = "ReturnCode"; | |
| 186 | - // 解析返回值 | |
| 187 | - result = result.substring(result.indexOf(str)+str.length()+1,result.lastIndexOf(str)-2); | |
| 188 | - if(result.equals("1")){ | |
| 227 | + if(getWebServiceSoapUp().setXL(userNameUp,passwordUp,sBuffer.toString()).isSuccess()){ | |
| 189 | 228 | result = "success"; |
| 190 | 229 | }else{ |
| 191 | 230 | result = "failure"; |
| ... | ... | @@ -201,6 +240,36 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 201 | 240 | } |
| 202 | 241 | |
| 203 | 242 | /** |
| 243 | + * 上传线路信息(按in_use上传) | |
| 244 | + */ | |
| 245 | + @Override | |
| 246 | + public String setXLByInUse(String inUse) { | |
| 247 | + StringBuffer result = new StringBuffer(); | |
| 248 | + try { | |
| 249 | + Map<String,Object> map = new HashMap<>(); | |
| 250 | + if(inUse != null && inUse.equals("1")){ | |
| 251 | + map.put("inUse_eq", inUse); | |
| 252 | + } | |
| 253 | + List<Line> lines ; | |
| 254 | + Line line; | |
| 255 | + lines = lineRepository.findAll(new CustomerSpecs<Line>(map)); | |
| 256 | + if(lines != null && lines.size() > 0){ | |
| 257 | + for(int i = 0 ; i < lines.size() ; i ++){ | |
| 258 | + line = lines.get(i); | |
| 259 | + if(line != null && line.getId() != null){ | |
| 260 | + result.append(line.getLineCode()).append(":").append(setXL(line.getLineCode())).append(";"); | |
| 261 | + } | |
| 262 | + } | |
| 263 | + } | |
| 264 | + } catch (Exception e) { | |
| 265 | + result.append("failure"); | |
| 266 | + logger.error("setXLByInUse:",e); | |
| 267 | + e.printStackTrace(); | |
| 268 | + } | |
| 269 | + return result.toString(); | |
| 270 | + } | |
| 271 | + | |
| 272 | + /** | |
| 204 | 273 | * 上传车辆信息 |
| 205 | 274 | */ |
| 206 | 275 | @Override |
| ... | ... | @@ -279,14 +348,30 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 279 | 348 | } |
| 280 | 349 | |
| 281 | 350 | /** |
| 351 | + * 上传路单 指定日期 yyyy-MM-dd | |
| 352 | + * @param theDate | |
| 353 | + * @return | |
| 354 | + */ | |
| 355 | + public String setLD(String theDate){ | |
| 356 | + return uploadLD(theDate); | |
| 357 | + } | |
| 358 | + | |
| 359 | + /** | |
| 360 | + * 上传路单 上传前一天的路单 | |
| 361 | + * @return | |
| 362 | + */ | |
| 363 | + public String setLD(){ | |
| 364 | + return uploadLD(null); | |
| 365 | + } | |
| 366 | + /** | |
| 282 | 367 | * 上传路单 |
| 283 | 368 | * @return 上传成功标识 |
| 284 | 369 | */ |
| 285 | - public String setLD(){ | |
| 370 | + private String uploadLD(String theDate){ | |
| 286 | 371 | String result = "failure"; |
| 287 | 372 | Line line; |
| 288 | 373 | // 取昨天 的日期 |
| 289 | - String date = sdfnyr.format(DateUtils.addDays(new Date(), -1)); | |
| 374 | + String date = theDate == null ?sdfnyr.format(DateUtils.addDays(new Date(), -1)) : theDate; | |
| 290 | 375 | StringBuffer sf = new StringBuffer(); |
| 291 | 376 | String str; |
| 292 | 377 | try { |
| ... | ... | @@ -710,7 +795,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 710 | 795 | // 判断XML是否以</BCList>结尾,如果不是,则加上 |
| 711 | 796 | String regex = "^*</JHBC>$"; |
| 712 | 797 | Pattern p = Pattern.compile(regex); |
| 713 | - java.util.regex.Matcher m = p.matcher(sBuffer); | |
| 798 | + Matcher m = p.matcher(sBuffer); | |
| 714 | 799 | boolean isEndWithTrueFlag = false; |
| 715 | 800 | while (m.find()) { |
| 716 | 801 | isEndWithTrueFlag = true; |
| ... | ... | @@ -1146,15 +1231,15 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 1146 | 1231 | } |
| 1147 | 1232 | paraMap = packageYgcStationNumParam(srRoute,null); |
| 1148 | 1233 | sBuffer.append("<Station>"); |
| 1149 | - sBuffer.append("<STATION_ID>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paraMap)).append("</STATION_ID>"); | |
| 1150 | - sBuffer.append("<UPDDOWN>").append(srRoute.getDirections()).append("</UPDDOWN>"); | |
| 1151 | - sBuffer.append("<STATION_NO>").append(i).append("</STATION_NO>"); | |
| 1152 | - sBuffer.append("<STATION_CODE>").append(srRoute.getStationCode()).append("</STATION_CODE>"); | |
| 1153 | - sBuffer.append("<STATION_NAME>").append(srRoute.getStationName()).append("</STATION_NAME>"); | |
| 1154 | - sBuffer.append("<STATION_LON>").append(srRoute.getStation().getgLonx()).append("</STATION_LON>"); | |
| 1155 | - sBuffer.append("<STATION_LAT>").append(srRoute.getStation().getgLaty()).append("</STATION_LAT>"); | |
| 1156 | - sBuffer.append("<STATION_TYPE>").append(zdlx).append("</STATION_TYPE>"); | |
| 1157 | - sBuffer.append("<STATION_DISTANCE>").append(srRoute.getDistances()).append("</STATION_DISTANCE>"); | |
| 1234 | + sBuffer.append("<ZDXH>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paraMap)).append("</ZDXH>"); | |
| 1235 | + sBuffer.append("<SXX>").append(srRoute.getDirections()).append("</SXX>"); | |
| 1236 | + sBuffer.append("<ZDMC>").append(srRoute.getStationName()).append("</ZDMC>"); | |
| 1237 | + sBuffer.append("<ZDBM>").append(srRoute.getStationCode()).append("</ZDBM>"); | |
| 1238 | + sBuffer.append("<ZDJD>").append(srRoute.getStation().getgLonx()).append("</ZDJD>"); | |
| 1239 | + sBuffer.append("<ZDWD>").append(srRoute.getStation().getgLaty()).append("</ZDWD>"); | |
| 1240 | + sBuffer.append("<ZZ>").append(srRoute.getStation().getAddr() == null ? "" : srRoute.getStation().getAddr()).append("</ZZ>"); | |
| 1241 | + sBuffer.append("<ZDLX>").append(zdlx).append("</ZDLX>"); | |
| 1242 | + sBuffer.append("<ZJLC>").append(srRoute.getDistances()).append("</ZJLC>"); | |
| 1158 | 1243 | sBuffer.append("</Station>"); |
| 1159 | 1244 | startId++; |
| 1160 | 1245 | } |
| ... | ... | @@ -1162,35 +1247,37 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 1162 | 1247 | } |
| 1163 | 1248 | |
| 1164 | 1249 | /** |
| 1165 | - * @param stationsList 站点路由集 | |
| 1250 | + * @param pointList 站点点位集 | |
| 1166 | 1251 | * @param sBuffer sBuffer |
| 1167 | 1252 | * @param startId 站点序号起始ID |
| 1168 | 1253 | * |
| 1169 | 1254 | * @return 站点序号累加后的ID |
| 1170 | 1255 | */ |
| 1171 | - private int packagStationPointXml(List<StationRoute> stationsList,StringBuffer sBuffer,int startId){ | |
| 1172 | - int size = stationsList.size(); | |
| 1173 | - StationRoute srRoute; | |
| 1174 | - HashMap<String,String> paraMap; | |
| 1175 | - String zdlx ;// 站点类型:0:起点站、1:终点站、2:中途站 | |
| 1256 | + private int packagStationPointXml(List<Object[]> pointList,StringBuffer sBuffer,int startId){ | |
| 1257 | + int size = pointList.size(); | |
| 1258 | + Object[] objs; | |
| 1259 | + String bsection,dir,section; | |
| 1260 | + String[] sections ; | |
| 1176 | 1261 | for (int i = 0; i < size; i++) { |
| 1177 | - srRoute = stationsList.get(i); | |
| 1178 | - zdlx = srRoute.getStationMark(); | |
| 1179 | - if(zdlx.equals("B")){ | |
| 1180 | - zdlx = "0"; | |
| 1181 | - }else if(zdlx.equals("E")){ | |
| 1182 | - zdlx = "1"; | |
| 1183 | - }else{ | |
| 1184 | - zdlx = "2"; | |
| 1262 | + objs = pointList.get(i); | |
| 1263 | + bsection = objs[0]+""; | |
| 1264 | + dir = objs[1]+""; | |
| 1265 | + // 取括号内的内容 | |
| 1266 | + Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))"); | |
| 1267 | + Matcher matcher = pattern.matcher(bsection); | |
| 1268 | + if(matcher.find()){ | |
| 1269 | + sections = matcher.group().split(","); | |
| 1270 | + for (int j = 0 ; j < sections.length ; j ++){ | |
| 1271 | + section = sections[j]; | |
| 1272 | + sBuffer.append("<LinePoint>"); | |
| 1273 | + sBuffer.append("<ZDXH>").append(startId).append("</ZDXH>"); | |
| 1274 | + sBuffer.append("<SXX>").append(dir).append("</SXX>"); | |
| 1275 | + sBuffer.append("<ZDJD>").append(section.split(" ")[0]).append("</ZDJD>"); | |
| 1276 | + sBuffer.append("<ZDWD>").append(section.split(" ")[1]).append("</ZDWD>"); | |
| 1277 | + sBuffer.append("</LinePoint>"); | |
| 1278 | + startId++; | |
| 1279 | + } | |
| 1185 | 1280 | } |
| 1186 | - paraMap = packageYgcStationNumParam(srRoute,null); | |
| 1187 | - sBuffer.append("<Point>"); | |
| 1188 | - sBuffer.append("<POINT_ID>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paraMap)).append("</POINT_ID>"); | |
| 1189 | - sBuffer.append("<UPDDOWN>").append(srRoute.getDirections()).append("</UPDDOWN>"); | |
| 1190 | - sBuffer.append("<POINTLON>").append(srRoute.getStation().getgLonx()).append("</POINTLON>"); | |
| 1191 | - sBuffer.append("<POINTLAT>").append(srRoute.getStation().getgLaty()).append("</POINTLAT>"); | |
| 1192 | - sBuffer.append("</Point>"); | |
| 1193 | - startId++; | |
| 1194 | 1281 | } |
| 1195 | 1282 | return startId; |
| 1196 | 1283 | } | ... | ... |