Commit e67c91e30bfa5f62f1469fed8941e57debba6fcb

Authored by liujun001
2 parents 156f7f3e ef1f213f

Merge remote-tracking branch 'origin/pudong_jdk8_wvp' into pudong_jdk8_wvp

Showing 35 changed files with 2292 additions and 985 deletions

Too many changes to show.

To preserve performance only 35 of 146 files are displayed.

src/main/java/com/bsth/XDApplication.java
@@ -259,7 +259,7 @@ public class XDApplication implements CommandLineRunner { @@ -259,7 +259,7 @@ public class XDApplication implements CommandLineRunner {
259 sexec.scheduleWithFixedDelay(basicDataLoader, 1, 1, TimeUnit.HOURS);//基础数据更新 259 sexec.scheduleWithFixedDelay(basicDataLoader, 1, 1, TimeUnit.HOURS);//基础数据更新
260 sexec.scheduleWithFixedDelay(whiteIpDataLoader, 0, 1, TimeUnit.MINUTES);//IP白名单数据更新 260 sexec.scheduleWithFixedDelay(whiteIpDataLoader, 0, 1, TimeUnit.MINUTES);//IP白名单数据更新
261 sexec.scheduleWithFixedDelay(autoExecScanThread, 180, 50, TimeUnit.SECONDS);//班次自动执行 261 sexec.scheduleWithFixedDelay(autoExecScanThread, 180, 50, TimeUnit.SECONDS);//班次自动执行
262 - //DirectivePushQueue.start();//消息队列 -指令,系统下发的 262 + DirectivePushQueue.start();//消息队列 -指令,系统下发的
263 WebSocketPushQueue.start();//消息队列 -webSocket ,推送至线调web页面的 263 WebSocketPushQueue.start();//消息队列 -webSocket ,推送至线调web页面的
264 264
265 /** 线调为其他程序提供的数据 --写入数据库 */ 265 /** 线调为其他程序提供的数据 --写入数据库 */
src/main/java/com/bsth/controller/schedule/BController.java
@@ -8,6 +8,7 @@ import com.bsth.service.schedule.BService; @@ -8,6 +8,7 @@ import com.bsth.service.schedule.BService;
8 import com.bsth.service.schedule.exception.ScheduleException; 8 import com.bsth.service.schedule.exception.ScheduleException;
9 import com.bsth.service.schedule.utils.DataToolsFile; 9 import com.bsth.service.schedule.utils.DataToolsFile;
10 import com.bsth.service.sys.SysUserService; 10 import com.bsth.service.sys.SysUserService;
  11 +import com.bsth.util.I18n;
11 import com.google.common.base.Splitter; 12 import com.google.common.base.Splitter;
12 import org.apache.commons.lang3.StringUtils; 13 import org.apache.commons.lang3.StringUtils;
13 import org.apache.poi.ss.usermodel.Workbook; 14 import org.apache.poi.ss.usermodel.Workbook;
@@ -30,6 +31,8 @@ public class BController<T, ID extends Serializable> { @@ -30,6 +31,8 @@ public class BController<T, ID extends Serializable> {
30 protected BService<T, ID> bService; 31 protected BService<T, ID> bService;
31 @Autowired 32 @Autowired
32 private SysUserService sysUserService; 33 private SysUserService sysUserService;
  34 + @Autowired
  35 + private I18n i18n;
33 36
34 //---------------- CRUD 操作 ----------------// 37 //---------------- CRUD 操作 ----------------//
35 // Create操作 38 // Create操作
@@ -186,12 +189,12 @@ public class BController&lt;T, ID extends Serializable&gt; { @@ -186,12 +189,12 @@ public class BController&lt;T, ID extends Serializable&gt; {
186 try { 189 try {
187 File file = new File(String.valueOf(params.get("filename"))); 190 File file = new File(String.valueOf(params.get("filename")));
188 if (!file.exists()) { 191 if (!file.exists()) {
189 - throw new Exception("导入文件不存在!"); 192 + throw new Exception(this.i18n.getMessage("bController-line192"));
190 } 193 }
191 bService.importData(file, params); 194 bService.importData(file, params);
192 195
193 rtn.put("status", ResponseCode.SUCCESS); 196 rtn.put("status", ResponseCode.SUCCESS);
194 - rtn.put("msg", "导入文件成功"); 197 + rtn.put("msg", this.i18n.getMessage("bController-line197"));
195 } catch (Exception exp) { 198 } catch (Exception exp) {
196 rtn.put("status", ResponseCode.ERROR); 199 rtn.put("status", ResponseCode.ERROR);
197 rtn.put("msg", exp.getMessage()); 200 rtn.put("msg", exp.getMessage());
@@ -211,7 +214,7 @@ public class BController&lt;T, ID extends Serializable&gt; { @@ -211,7 +214,7 @@ public class BController&lt;T, ID extends Serializable&gt; {
211 bService.importData(dataToolsFile.getFile(), params); 214 bService.importData(dataToolsFile.getFile(), params);
212 215
213 rtn.put("status", ResponseCode.SUCCESS); 216 rtn.put("status", ResponseCode.SUCCESS);
214 - rtn.put("msg", "上传&导入文件成功"); 217 + rtn.put("msg", this.i18n.getMessage("bController-line217"));
215 } catch (Exception exp) { 218 } catch (Exception exp) {
216 exp.printStackTrace(); 219 exp.printStackTrace();
217 rtn.put("status", ResponseCode.ERROR); 220 rtn.put("status", ResponseCode.ERROR);
src/main/java/com/bsth/controller/schedule/core/legacy/EmployeeConfigInfoController.java
@@ -9,6 +9,7 @@ import com.bsth.entity.sys.CompanyAuthority; @@ -9,6 +9,7 @@ import com.bsth.entity.sys.CompanyAuthority;
9 import com.bsth.repository.schedule.EmployeeConfigInfoRepository; 9 import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
10 import com.bsth.service.schedule.EmployeeConfigInfoService; 10 import com.bsth.service.schedule.EmployeeConfigInfoService;
11 import com.bsth.service.schedule.exception.ScheduleException; 11 import com.bsth.service.schedule.exception.ScheduleException;
  12 +import com.bsth.util.I18n;
12 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; 14 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
14 import org.springframework.web.bind.annotation.*; 15 import org.springframework.web.bind.annotation.*;
@@ -77,7 +78,7 @@ public class EmployeeConfigInfoController extends BController&lt;EmployeeConfigInfo @@ -77,7 +78,7 @@ public class EmployeeConfigInfoController extends BController&lt;EmployeeConfigInfo
77 public void exportValidateGetDestroyInfo(HttpServletResponse response) throws Exception { 78 public void exportValidateGetDestroyInfo(HttpServletResponse response) throws Exception {
78 // 流输出导出文件 79 // 流输出导出文件
79 response.setHeader("content-type", "application/octet-stream"); 80 response.setHeader("content-type", "application/octet-stream");
80 - response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("$$$$$${txt-929}.txt", "UTF-8")); 81 + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(I18n.getInstance().getMessage("employeeConfigInfoController_line81_txt-929"), "UTF-8"));
81 response.setContentType("application/octet-stream"); 82 response.setContentType("application/octet-stream");
82 83
83 try ( 84 try (
src/main/java/com/bsth/controller/schedule/core/legacy/TTInfoDetailController.java
@@ -11,6 +11,7 @@ import com.bsth.service.schedule.timetable.TimetableExcelFormatType; @@ -11,6 +11,7 @@ import com.bsth.service.schedule.timetable.TimetableExcelFormatType;
11 import com.bsth.service.schedule.utils.DataToolsFile; 11 import com.bsth.service.schedule.utils.DataToolsFile;
12 import com.bsth.service.schedule.utils.DataToolsFileType; 12 import com.bsth.service.schedule.utils.DataToolsFileType;
13 import com.bsth.service.schedule.utils.MyHttpUtils; 13 import com.bsth.service.schedule.utils.MyHttpUtils;
  14 +import com.bsth.util.I18n;
14 import org.springframework.beans.factory.annotation.Autowired; 15 import org.springframework.beans.factory.annotation.Autowired;
15 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; 16 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
16 import org.springframework.web.bind.annotation.*; 17 import org.springframework.web.bind.annotation.*;
@@ -51,7 +52,7 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; { @@ -51,7 +52,7 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; {
51 Map<String, Object> rtn = new HashMap<>(); 52 Map<String, Object> rtn = new HashMap<>();
52 try { 53 try {
53 if (lineversion == null) { 54 if (lineversion == null) {
54 - throw new Exception("线路版本未知"); 55 + throw new Exception(I18n.getInstance().getMessage("tTInfoDetailController-line54"));
55 } 56 }
56 ttInfoDetailService.validateExcelSheet(filename, sheetname, lineid, linename, lineversion, 57 ttInfoDetailService.validateExcelSheet(filename, sheetname, lineid, linename, lineversion,
57 TimetableExcelFormatType.fromDesc(excelFormatType)); 58 TimetableExcelFormatType.fromDesc(excelFormatType));
@@ -145,11 +146,11 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; { @@ -145,11 +146,11 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; {
145 try { 146 try {
146 this.ttInfoDetailService.addLp(ttInfoId, lpId); 147 this.ttInfoDetailService.addLp(ttInfoId, lpId);
147 rtn.put("status", ResponseCode.SUCCESS); 148 rtn.put("status", ResponseCode.SUCCESS);
148 - rtn.put("data", "添加路牌成功!"); 149 + rtn.put("data", "ok!");
149 } catch (Exception exp) { 150 } catch (Exception exp) {
150 exp.printStackTrace(); 151 exp.printStackTrace();
151 rtn.put("status", ResponseCode.ERROR); 152 rtn.put("status", ResponseCode.ERROR);
152 - rtn.put("msg", "添加路牌失败:" + exp.getMessage()); 153 + rtn.put("msg", "Failure:" + exp.getMessage());
153 } 154 }
154 return rtn; 155 return rtn;
155 } 156 }
@@ -160,11 +161,11 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; { @@ -160,11 +161,11 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; {
160 try { 161 try {
161 this.ttInfoDetailService.removeBcByLp(ttInfoId, lpId); 162 this.ttInfoDetailService.removeBcByLp(ttInfoId, lpId);
162 rtn.put("status", ResponseCode.SUCCESS); 163 rtn.put("status", ResponseCode.SUCCESS);
163 - rtn.put("data", "删除路牌成功!"); 164 + rtn.put("data", "ok!");
164 } catch (Exception exp) { 165 } catch (Exception exp) {
165 exp.printStackTrace(); 166 exp.printStackTrace();
166 rtn.put("status", ResponseCode.ERROR); 167 rtn.put("status", ResponseCode.ERROR);
167 - rtn.put("msg", "删除路牌失败:" + exp.getMessage()); 168 + rtn.put("msg", "Failure:" + exp.getMessage());
168 } 169 }
169 return rtn; 170 return rtn;
170 } 171 }
@@ -177,11 +178,11 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; { @@ -177,11 +178,11 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; {
177 try { 178 try {
178 this.ttInfoDetailService.switchBcByLp(ttInfoId, lpAId, lpBId); 179 this.ttInfoDetailService.switchBcByLp(ttInfoId, lpAId, lpBId);
179 rtn.put("status", ResponseCode.SUCCESS); 180 rtn.put("status", ResponseCode.SUCCESS);
180 - rtn.put("data", "调换路牌成功!"); 181 + rtn.put("data", "ok!");
181 } catch (Exception exp) { 182 } catch (Exception exp) {
182 exp.printStackTrace(); 183 exp.printStackTrace();
183 rtn.put("status", ResponseCode.ERROR); 184 rtn.put("status", ResponseCode.ERROR);
184 - rtn.put("msg", "调换路牌失败:" + exp.getMessage()); 185 + rtn.put("msg", "Failure:" + exp.getMessage());
185 } 186 }
186 return rtn; 187 return rtn;
187 } 188 }
@@ -197,7 +198,7 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; { @@ -197,7 +198,7 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; {
197 } else if ("xlsx".equals(type)) { 198 } else if ("xlsx".equals(type)) {
198 dataToolsFile = ttInfoDetailService.exportDynamicTTinfo(dtInfos, DataToolsFileType.XLSX); 199 dataToolsFile = ttInfoDetailService.exportDynamicTTinfo(dtInfos, DataToolsFileType.XLSX);
199 } else { 200 } else {
200 - throw new Exception("未知的导出格式==>" + type); 201 + throw new Exception("unknown export type==>" + type);
201 } 202 }
202 203
203 // 流输出导出文件 204 // 流输出导出文件
src/main/java/com/bsth/controller/sys/UserController.java
@@ -155,7 +155,8 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; { @@ -155,7 +155,8 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; {
155 userName = RSAUtils.decryptBase64(userName); 155 userName = RSAUtils.decryptBase64(userName);
156 password = RSAUtils.decryptBase64(password); 156 password = RSAUtils.decryptBase64(password);
157 } catch (RuntimeException e) { 157 } catch (RuntimeException e) {
158 - return put(rs, "msg", "decrypt RSA fail!可能页面已过期,尝试刷新页面。"); 158 + //return put(rs, "msg", "decrypt RSA fail!可能页面已过期,尝试刷新页面。");
  159 + return put(rs, "msg", "page is expired, refresh it and try again");
159 } 160 }
160 161
161 SysUser user = sysUserService.findByUserName(userName); 162 SysUser user = sysUserService.findByUserName(userName);
@@ -168,12 +169,14 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; { @@ -168,12 +169,14 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; {
168 169
169 // 校验用户状态 170 // 校验用户状态
170 if (!user.isEnabled()) { 171 if (!user.isEnabled()) {
171 - return put(rs, "msg", "该用户已被锁定,请联系管理员"); 172 + //return put(rs, "msg", "该用户已被锁定,请联系管理员");
  173 + return put(rs, "msg", "your account is locked, please contact administrator");
172 } 174 }
173 175
174 // 校验临时状态 176 // 校验临时状态
175 if (USER_LOCKTIME.get(userName) != null && USER_LOCKTIME.get(userName) >= System.currentTimeMillis()) { 177 if (USER_LOCKTIME.get(userName) != null && USER_LOCKTIME.get(userName) >= System.currentTimeMillis()) {
176 - return put(rs, "msg", "您的账户因密码错误次数过多,处于锁定状态中"); 178 + //return put(rs, "msg", "您的账户因密码错误次数过多,处于锁定状态中");
  179 + return put(rs, "msg", "your account is locked");
177 } 180 }
178 181
179 // 校验验证码 182 // 校验验证码
@@ -183,7 +186,8 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; { @@ -183,7 +186,8 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; {
183 return put(rs, "msg", I18n.getInstance().getMessage("txt-2321")); 186 return put(rs, "msg", I18n.getInstance().getMessage("txt-2321"));
184 } 187 }
185 if (!verCode.equals(captcha)) { 188 if (!verCode.equals(captcha)) {
186 - return put(rs, "msg", "验证码有误,请刷新后重新输入"); 189 + //return put(rs, "msg", "验证码有误,请刷新后重新输入");
  190 + return put(rs, "msg", I18n.getInstance().getMessage("captcha is error,please refresh and enter again"));
187 } 191 }
188 } 192 }
189 193
@@ -217,7 +221,8 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; { @@ -217,7 +221,8 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; {
217 logger.error("用户:" + user.getUserName() + "登录"); 221 logger.error("用户:" + user.getUserName() + "登录");
218 } catch (Exception e) { 222 } catch (Exception e) {
219 logger.error("", e); 223 logger.error("", e);
220 - rs.put("msg", "服务器出现异常,请联系管理员"); 224 + //rs.put("msg", "服务器出现异常,请联系管理员");
  225 + rs.put("msg", "server is abnormal, please contact administrator");
221 } 226 }
222 return rs; 227 return rs;
223 } 228 }
src/main/java/com/bsth/service/directive/DirectiveServiceImpl.java
@@ -208,7 +208,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;D60, Integer&gt; implemen @@ -208,7 +208,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;D60, Integer&gt; implemen
208 public int send60Operation(String nbbm, int state, int upDown, String sender) { 208 public int send60Operation(String nbbm, int state, int upDown, String sender) {
209 logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown); 209 logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown);
210 210
211 - String text = "切换为 " + (upDown == 0 ? I18n.getInstance().getMessage("txt-3858") : I18n.getInstance().getMessage("txt-3857")) + (state == 0 ? I18n.getInstance().getMessage("txt-3966") : I18n.getInstance().getMessage("txt-4457")); 211 + String text = I18n.getInstance().getMessage("txt-4531") + (upDown == 0 ? I18n.getInstance().getMessage("txt-3858") : I18n.getInstance().getMessage("txt-3857")) + "/" + (state == 0 ? I18n.getInstance().getMessage("txt-3966") : I18n.getInstance().getMessage("txt-4457"));
212 D60 d60 = new DirectiveCreator().createD60(nbbm, text, (short) 0x03, upDown, state, null); 212 D60 d60 = new DirectiveCreator().createD60(nbbm, text, (short) 0x03, upDown, state, null);
213 213
214 if (null == d60) 214 if (null == d60)
src/main/java/com/bsth/service/schedule/datatools/CarConfigInfoDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.*;  
5 -import jxl.write.Label;  
6 -import jxl.write.WritableSheet;  
7 -import jxl.write.WritableWorkbook;  
8 -import org.apache.poi.ss.usermodel.Sheet;  
9 -import org.apache.poi.ss.usermodel.Workbook; 4 +import com.bsth.service.schedule.utils.DataToolsFile;
  5 +import com.bsth.service.schedule.utils.DataToolsProperties;
  6 +import com.bsth.service.schedule.utils.DataToolsService;
  7 +import com.bsth.util.I18n;
10 import org.slf4j.Logger; 8 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
12 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.beans.factory.annotation.Qualifier; 11 import org.springframework.beans.factory.annotation.Qualifier;
14 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
15 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
16 13
17 import java.io.File; 14 import java.io.File;
18 import java.io.PrintWriter; 15 import java.io.PrintWriter;
19 import java.io.StringWriter; 16 import java.io.StringWriter;
20 import java.util.HashMap; 17 import java.util.HashMap;
  18 +import java.util.Locale;
21 import java.util.Map; 19 import java.util.Map;
22 20
23 /** 21 /**
@@ -37,48 +35,7 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService { @@ -37,48 +35,7 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService {
37 35
38 @Override 36 @Override
39 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException { 37 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
40 - try {  
41 - // 对上传的excel文件做处理  
42 - // 将第一个sheet保存成一个xls文件  
43 - DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);  
44 - File file = dataToolsFile.getFile();  
45 -  
46 - // poi api  
47 - Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);  
48 - Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet  
49 - int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行  
50 - if (rowNum < 0) {  
51 - throw new RuntimeException("表格内容为空!");  
52 - }  
53 - int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主  
54 -  
55 - // jxl api  
56 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
57 - WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);  
58 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
59 -  
60 - for (int i = 0; i <= rowNum; i++) {  
61 - for (int j = 0; j <= colNum; j++) {  
62 - // poi读  
63 - String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));  
64 - // jxl写  
65 - writableSheet.addCell(new Label(j, i, cellContent));  
66 - }  
67 -  
68 - }  
69 - writableWorkbook.write();  
70 - writableWorkbook.close();  
71 - poi_workbook.close();  
72 -  
73 - DataToolsFile dataToolsFile1 = new DataToolsFile();  
74 - dataToolsFile1.setFile(fileCal);  
75 - dataToolsFile1.setFileType(DataToolsFileType.XLS);  
76 -  
77 - return dataToolsFile1;  
78 -  
79 - } catch (Exception exp) {  
80 - throw new ScheduleException(exp);  
81 - } 38 + return this.dataToolsService.uploadFile(filename, filedata);
82 } 39 }
83 40
84 @Override 41 @Override
@@ -87,8 +44,17 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService { @@ -87,8 +44,17 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService {
87 LOGGER.info("//---------------- 导入车辆配置信息 start... ----------------//"); 44 LOGGER.info("//---------------- 导入车辆配置信息 start... ----------------//");
88 // 创建ktr转换所需参数 45 // 创建ktr转换所需参数
89 Map<String, Object> ktrParms = new HashMap<>(); 46 Map<String, Object> ktrParms = new HashMap<>();
90 - File ktrFile = new File(this.getClass().getResource(  
91 - dataToolsProperties.getCarsconfigDatainputktr()).toURI()); 47 + String country = Locale.getDefault().getLanguage();
  48 + File ktrFile = null;
  49 + if ("zh".equals(country)) {
  50 + ktrFile = new File(this.getClass().getResource(
  51 + dataToolsProperties.getZhVehicleConfigDataImport()).toURI());
  52 + } else if ("en".equals(country)) {
  53 + ktrFile = new File(this.getClass().getResource(
  54 + dataToolsProperties.getEnVehicleConfigDataImport()).toURI());
  55 + } else {
  56 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  57 + }
92 58
93 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径 59 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
94 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 60 ktrParms.put("transpath", ktrFile.getAbsolutePath());
@@ -117,12 +83,21 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService { @@ -117,12 +83,21 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService {
117 LOGGER.info("//---------------- 导出车辆配置信息 start... ----------------//"); 83 LOGGER.info("//---------------- 导出车辆配置信息 start... ----------------//");
118 // 创建ktr转换所需参数 84 // 创建ktr转换所需参数
119 Map<String, Object> ktrParms = new HashMap<>(); 85 Map<String, Object> ktrParms = new HashMap<>();
120 - File ktrFile = new File(this.getClass().getResource(  
121 - dataToolsProperties.getCarsconfigDataoutputktr()).toURI()); 86 + String country = Locale.getDefault().getLanguage();
  87 + File ktrFile = null;
  88 + if ("zh".equals(country)) {
  89 + ktrFile = new File(this.getClass().getResource(
  90 + dataToolsProperties.getZhVehicleConfigDataExport()).toURI());
  91 + } else if ("en".equals(country)) {
  92 + ktrFile = new File(this.getClass().getResource(
  93 + dataToolsProperties.getEnVehicleConfigDataExport()).toURI());
  94 + } else {
  95 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  96 + }
122 97
123 // 通用参数,转换文件路径,excel输出文件名 98 // 通用参数,转换文件路径,excel输出文件名
124 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 99 ktrParms.put("transpath", ktrFile.getAbsolutePath());
125 - ktrParms.put("filename", "$$$$$${txt-1616}_download-"); 100 + ktrParms.put("filename", I18n.getInstance().getMessage("txt-1616") + "_download-");
126 101
127 ktrParms.putAll(params); 102 ktrParms.putAll(params);
128 103
src/main/java/com/bsth/service/schedule/datatools/CarsDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.*; 4 +import com.bsth.service.schedule.utils.DataToolsFile;
  5 +import com.bsth.service.schedule.utils.DataToolsProperties;
  6 +import com.bsth.service.schedule.utils.DataToolsService;
5 import com.bsth.util.I18n; 7 import com.bsth.util.I18n;
6 -import jxl.write.Label;  
7 -import jxl.write.WritableSheet;  
8 -import jxl.write.WritableWorkbook;  
9 import org.slf4j.Logger; 8 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
11 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.beans.factory.annotation.Qualifier; 11 import org.springframework.beans.factory.annotation.Qualifier;
13 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
14 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
15 13
16 import java.io.File; 14 import java.io.File;
17 import java.io.PrintWriter; 15 import java.io.PrintWriter;
18 import java.io.StringWriter; 16 import java.io.StringWriter;
19 import java.util.HashMap; 17 import java.util.HashMap;
  18 +import java.util.Locale;
20 import java.util.Map; 19 import java.util.Map;
21 20
22 /** 21 /**
@@ -36,48 +35,7 @@ public class CarsDataToolsImpl implements DataToolsService { @@ -36,48 +35,7 @@ public class CarsDataToolsImpl implements DataToolsService {
36 35
37 @Override 36 @Override
38 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException { 37 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
39 - try {  
40 - // 对上传的excel文件做处理  
41 - // 将第一个sheet保存成一个xls文件  
42 - DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);  
43 - File file = dataToolsFile.getFile();  
44 -  
45 - // poi api  
46 - org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);  
47 - org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet  
48 - int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行  
49 - if (rowNum < 0) {  
50 - throw new RuntimeException("表格内容为空!");  
51 - }  
52 - int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主  
53 -  
54 - // jxl api  
55 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
56 - WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);  
57 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
58 -  
59 - for (int i = 0; i <= rowNum; i++) {  
60 - for (int j = 0; j <= colNum; j++) {  
61 - // poi读  
62 - String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));  
63 - // jxl写  
64 - writableSheet.addCell(new Label(j, i, cellContent));  
65 - }  
66 -  
67 - }  
68 - writableWorkbook.write();  
69 - writableWorkbook.close();  
70 - poi_workbook.close();  
71 -  
72 - DataToolsFile dataToolsFile1 = new DataToolsFile();  
73 - dataToolsFile1.setFile(fileCal);  
74 - dataToolsFile1.setFileType(DataToolsFileType.XLS);  
75 -  
76 - return dataToolsFile1;  
77 -  
78 - } catch (Exception exp) {  
79 - throw new ScheduleException(exp);  
80 - } 38 + return this.dataToolsService.uploadFile(filename, filedata);
81 } 39 }
82 40
83 @Override 41 @Override
@@ -86,8 +44,17 @@ public class CarsDataToolsImpl implements DataToolsService { @@ -86,8 +44,17 @@ public class CarsDataToolsImpl implements DataToolsService {
86 LOGGER.info("//---------------- 导入车辆基础信息 start... ----------------//"); 44 LOGGER.info("//---------------- 导入车辆基础信息 start... ----------------//");
87 // 创建ktr转换所需参数 45 // 创建ktr转换所需参数
88 Map<String, Object> ktrParms = new HashMap<>(); 46 Map<String, Object> ktrParms = new HashMap<>();
89 - File ktrFile = new File(this.getClass().getResource(  
90 - dataToolsProperties.getCarsDatainputktr()).toURI()); 47 + String country = Locale.getDefault().getLanguage();
  48 + File ktrFile = null;
  49 + if ("zh".equals(country)) {
  50 + ktrFile = new File(this.getClass().getResource(
  51 + dataToolsProperties.getZhVehicleBasicDataImport()).toURI());
  52 + } else if ("en".equals(country)) {
  53 + ktrFile = new File(this.getClass().getResource(
  54 + dataToolsProperties.getEnVehicleBasicDataImport()).toURI());
  55 + } else {
  56 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  57 + }
91 58
92 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径 59 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
93 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 60 ktrParms.put("transpath", ktrFile.getAbsolutePath());
@@ -114,8 +81,17 @@ public class CarsDataToolsImpl implements DataToolsService { @@ -114,8 +81,17 @@ public class CarsDataToolsImpl implements DataToolsService {
114 LOGGER.info("//---------------- 导出车辆基础信息 start... ----------------//"); 81 LOGGER.info("//---------------- 导出车辆基础信息 start... ----------------//");
115 // 创建ktr转换所需参数 82 // 创建ktr转换所需参数
116 Map<String, Object> ktrParms = new HashMap<>(); 83 Map<String, Object> ktrParms = new HashMap<>();
117 - File ktrFile = new File(this.getClass().getResource(  
118 - dataToolsProperties.getCarsDataoutputktr()).toURI()); 84 + String country = Locale.getDefault().getLanguage();
  85 + File ktrFile = null;
  86 + if ("zh".equals(country)) {
  87 + ktrFile = new File(this.getClass().getResource(
  88 + dataToolsProperties.getZhVehicleBasicDataExport()).toURI());
  89 + } else if ("en".equals(country)) {
  90 + ktrFile = new File(this.getClass().getResource(
  91 + dataToolsProperties.getEnVehicleBasicDataExport()).toURI());
  92 + } else {
  93 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  94 + }
119 95
120 // 通用参数,转换文件路径,excel输出文件名 96 // 通用参数,转换文件路径,excel输出文件名
121 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 97 ktrParms.put("transpath", ktrFile.getAbsolutePath());
src/main/java/com/bsth/service/schedule/datatools/EmployeeConfigInfoDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.*;  
5 -import jxl.write.Label;  
6 -import jxl.write.WritableSheet;  
7 -import jxl.write.WritableWorkbook; 4 +import com.bsth.service.schedule.utils.DataToolsFile;
  5 +import com.bsth.service.schedule.utils.DataToolsProperties;
  6 +import com.bsth.service.schedule.utils.DataToolsService;
  7 +import com.bsth.util.I18n;
8 import org.slf4j.Logger; 8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
10 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.beans.factory.annotation.Qualifier; 11 import org.springframework.beans.factory.annotation.Qualifier;
12 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
13 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
14 13
15 import java.io.File; 14 import java.io.File;
16 import java.io.PrintWriter; 15 import java.io.PrintWriter;
17 import java.io.StringWriter; 16 import java.io.StringWriter;
18 import java.util.HashMap; 17 import java.util.HashMap;
  18 +import java.util.Locale;
19 import java.util.Map; 19 import java.util.Map;
20 20
21 /** 21 /**
@@ -35,48 +35,7 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService { @@ -35,48 +35,7 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService {
35 35
36 @Override 36 @Override
37 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException { 37 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
38 - try {  
39 - // 对上传的excel文件做处理  
40 - // 将第一个sheet保存成一个xls文件  
41 - DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);  
42 - File file = dataToolsFile.getFile();  
43 -  
44 - // poi api  
45 - org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);  
46 - org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet  
47 - int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行  
48 - if (rowNum < 0) {  
49 - throw new RuntimeException("表格内容为空!");  
50 - }  
51 - int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主  
52 -  
53 - // jxl api  
54 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
55 - WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);  
56 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
57 -  
58 - for (int i = 0; i <= rowNum; i++) {  
59 - for (int j = 0; j <= colNum; j++) {  
60 - // poi读  
61 - String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));  
62 - // jxl写  
63 - writableSheet.addCell(new Label(j, i, cellContent));  
64 - }  
65 -  
66 - }  
67 - writableWorkbook.write();  
68 - writableWorkbook.close();  
69 - poi_workbook.close();  
70 -  
71 - DataToolsFile dataToolsFile1 = new DataToolsFile();  
72 - dataToolsFile1.setFile(fileCal);  
73 - dataToolsFile1.setFileType(DataToolsFileType.XLS);  
74 -  
75 - return dataToolsFile1;  
76 -  
77 - } catch (Exception exp) {  
78 - throw new ScheduleException(exp);  
79 - } 38 + return this.dataToolsService.uploadFile(filename, filedata);
80 } 39 }
81 40
82 @Override 41 @Override
@@ -85,8 +44,17 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService { @@ -85,8 +44,17 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService {
85 LOGGER.info("//---------------- 导入人员配置信息 start... ----------------//"); 44 LOGGER.info("//---------------- 导入人员配置信息 start... ----------------//");
86 // 创建ktr转换所需参数 45 // 创建ktr转换所需参数
87 Map<String, Object> ktrParms = new HashMap<>(); 46 Map<String, Object> ktrParms = new HashMap<>();
88 - File ktrFile = new File(this.getClass().getResource(  
89 - dataToolsProperties.getEmployeesconfigDatainputktr()).toURI()); 47 + String country = Locale.getDefault().getLanguage();
  48 + File ktrFile = null;
  49 + if ("zh".equals(country)) {
  50 + ktrFile = new File(this.getClass().getResource(
  51 + dataToolsProperties.getZhEmployeeConfigDataImport()).toURI());
  52 + } else if ("en".equals(country)) {
  53 + ktrFile = new File(this.getClass().getResource(
  54 + dataToolsProperties.getEnEmployeeConfigDataImport()).toURI());
  55 + } else {
  56 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  57 + }
90 58
91 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径 59 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
92 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 60 ktrParms.put("transpath", ktrFile.getAbsolutePath());
@@ -115,12 +83,21 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService { @@ -115,12 +83,21 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService {
115 LOGGER.info("//---------------- 导出人员配置信息 start... ----------------//"); 83 LOGGER.info("//---------------- 导出人员配置信息 start... ----------------//");
116 // 创建ktr转换所需参数 84 // 创建ktr转换所需参数
117 Map<String, Object> ktrParms = new HashMap<>(); 85 Map<String, Object> ktrParms = new HashMap<>();
118 - File ktrFile = new File(this.getClass().getResource(  
119 - dataToolsProperties.getEmployeesconfigDataoutputktr()).toURI()); 86 + String country = Locale.getDefault().getLanguage();
  87 + File ktrFile = null;
  88 + if ("zh".equals(country)) {
  89 + ktrFile = new File(this.getClass().getResource(
  90 + dataToolsProperties.getZhEmployeeConfigDataExport()).toURI());
  91 + } else if ("en".equals(country)) {
  92 + ktrFile = new File(this.getClass().getResource(
  93 + dataToolsProperties.getEnEmployeeConfigDataExport()).toURI());
  94 + } else {
  95 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  96 + }
120 97
121 // 通用参数,转换文件路径,excel输出文件名 98 // 通用参数,转换文件路径,excel输出文件名
122 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 99 ktrParms.put("transpath", ktrFile.getAbsolutePath());
123 - ktrParms.put("filename", "$$$$$${txt-1613}_download-"); 100 + ktrParms.put("filename", I18n.getInstance().getMessage("txt-1613") + "_download-");
124 101
125 ktrParms.putAll(params); 102 ktrParms.putAll(params);
126 103
src/main/java/com/bsth/service/schedule/datatools/EmployeeDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.*;  
5 -import jxl.write.Label;  
6 -import jxl.write.WritableSheet;  
7 -import jxl.write.WritableWorkbook; 4 +import com.bsth.service.schedule.utils.DataToolsFile;
  5 +import com.bsth.service.schedule.utils.DataToolsProperties;
  6 +import com.bsth.service.schedule.utils.DataToolsService;
  7 +import com.bsth.util.I18n;
8 import org.slf4j.Logger; 8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
10 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.beans.factory.annotation.Qualifier; 11 import org.springframework.beans.factory.annotation.Qualifier;
12 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
13 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
14 13
15 import java.io.File; 14 import java.io.File;
16 import java.io.PrintWriter; 15 import java.io.PrintWriter;
17 import java.io.StringWriter; 16 import java.io.StringWriter;
18 import java.util.HashMap; 17 import java.util.HashMap;
  18 +import java.util.Locale;
19 import java.util.Map; 19 import java.util.Map;
20 20
21 /** 21 /**
@@ -35,48 +35,7 @@ public class EmployeeDataToolsImpl implements DataToolsService { @@ -35,48 +35,7 @@ public class EmployeeDataToolsImpl implements DataToolsService {
35 35
36 @Override 36 @Override
37 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException { 37 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
38 - try {  
39 - // 对上传的excel文件做处理  
40 - // 将第一个sheet保存成一个xls文件  
41 - DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);  
42 - File file = dataToolsFile.getFile();  
43 -  
44 - // poi api  
45 - org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);  
46 - org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet  
47 - int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行  
48 - if (rowNum < 0) {  
49 - throw new RuntimeException("表格内容为空!");  
50 - }  
51 - int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主  
52 -  
53 - // jxl api  
54 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
55 - WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);  
56 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
57 -  
58 - for (int i = 0; i <= rowNum; i++) {  
59 - for (int j = 0; j <= colNum; j++) {  
60 - // poi读  
61 - String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));  
62 - // jxl写  
63 - writableSheet.addCell(new Label(j, i, cellContent));  
64 - }  
65 -  
66 - }  
67 - writableWorkbook.write();  
68 - writableWorkbook.close();  
69 - poi_workbook.close();  
70 -  
71 - DataToolsFile dataToolsFile1 = new DataToolsFile();  
72 - dataToolsFile1.setFile(fileCal);  
73 - dataToolsFile1.setFileType(DataToolsFileType.XLS);  
74 -  
75 - return dataToolsFile1;  
76 -  
77 - } catch (Exception exp) {  
78 - throw new ScheduleException(exp);  
79 - } 38 + return this.dataToolsService.uploadFile(filename, filedata);
80 } 39 }
81 40
82 @Override 41 @Override
@@ -85,8 +44,17 @@ public class EmployeeDataToolsImpl implements DataToolsService { @@ -85,8 +44,17 @@ public class EmployeeDataToolsImpl implements DataToolsService {
85 LOGGER.info("//---------------- 导入人员基础信息 start... ----------------//"); 44 LOGGER.info("//---------------- 导入人员基础信息 start... ----------------//");
86 // 创建ktr转换所需参数 45 // 创建ktr转换所需参数
87 Map<String, Object> ktrParms = new HashMap<>(); 46 Map<String, Object> ktrParms = new HashMap<>();
88 - File ktrFile = new File(this.getClass().getResource(  
89 - dataToolsProperties.getEmployeesDatainputktr()).toURI()); 47 + String country = Locale.getDefault().getLanguage();
  48 + File ktrFile = null;
  49 + if ("zh".equals(country)) {
  50 + ktrFile = new File(this.getClass().getResource(
  51 + dataToolsProperties.getZhPersonnelBasicDataImport()).toURI());
  52 + } else if ("en".equals(country)) {
  53 + ktrFile = new File(this.getClass().getResource(
  54 + dataToolsProperties.getEnPersonnelBasicDataImport()).toURI());
  55 + } else {
  56 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  57 + }
90 58
91 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径 59 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
92 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 60 ktrParms.put("transpath", ktrFile.getAbsolutePath());
@@ -113,12 +81,21 @@ public class EmployeeDataToolsImpl implements DataToolsService { @@ -113,12 +81,21 @@ public class EmployeeDataToolsImpl implements DataToolsService {
113 LOGGER.info("//---------------- 导出人员基础信息 start... ----------------//"); 81 LOGGER.info("//---------------- 导出人员基础信息 start... ----------------//");
114 // 创建ktr转换所需参数 82 // 创建ktr转换所需参数
115 Map<String, Object> ktrParms = new HashMap<>(); 83 Map<String, Object> ktrParms = new HashMap<>();
116 - File ktrFile = new File(this.getClass().getResource(  
117 - dataToolsProperties.getEmployeesDataoutputktr()).toURI()); 84 + String country = Locale.getDefault().getLanguage();
  85 + File ktrFile = null;
  86 + if ("zh".equals(country)) {
  87 + ktrFile = new File(this.getClass().getResource(
  88 + dataToolsProperties.getZhPersonnelBasicDataExport()).toURI());
  89 + } else if ("en".equals(country)) {
  90 + ktrFile = new File(this.getClass().getResource(
  91 + dataToolsProperties.getEnPersonnelBasicDataExport()).toURI());
  92 + } else {
  93 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  94 + }
118 95
119 // 通用参数,转换文件路径,excel输出文件名 96 // 通用参数,转换文件路径,excel输出文件名
120 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 97 ktrParms.put("transpath", ktrFile.getAbsolutePath());
121 - ktrParms.put("filename", "$$$$$${txt-1614}_download-"); 98 + ktrParms.put("filename", I18n.getInstance().getMessage("txt-1614") + "_download-");
122 99
123 ktrParms.putAll(params); 100 ktrParms.putAll(params);
124 101
src/main/java/com/bsth/service/schedule/datatools/GuideboardInfoDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.*;  
5 -import jxl.write.Label;  
6 -import jxl.write.WritableSheet;  
7 -import jxl.write.WritableWorkbook; 4 +import com.bsth.service.schedule.utils.DataToolsFile;
  5 +import com.bsth.service.schedule.utils.DataToolsProperties;
  6 +import com.bsth.service.schedule.utils.DataToolsService;
  7 +import com.bsth.util.I18n;
8 import org.slf4j.Logger; 8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
10 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.beans.factory.annotation.Qualifier; 11 import org.springframework.beans.factory.annotation.Qualifier;
12 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
13 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
14 13
15 import java.io.File; 14 import java.io.File;
16 import java.io.PrintWriter; 15 import java.io.PrintWriter;
17 import java.io.StringWriter; 16 import java.io.StringWriter;
18 import java.util.HashMap; 17 import java.util.HashMap;
  18 +import java.util.Locale;
19 import java.util.Map; 19 import java.util.Map;
20 20
21 /** 21 /**
@@ -35,48 +35,7 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService { @@ -35,48 +35,7 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService {
35 35
36 @Override 36 @Override
37 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException { 37 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
38 - try {  
39 - // 对上传的excel文件做处理  
40 - // 将第一个sheet保存成一个xls文件  
41 - DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);  
42 - File file = dataToolsFile.getFile();  
43 -  
44 - // poi api  
45 - org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);  
46 - org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet  
47 - int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行  
48 - if (rowNum < 0) {  
49 - throw new RuntimeException("表格内容为空!");  
50 - }  
51 - int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主  
52 -  
53 - // jxl api  
54 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
55 - WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);  
56 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
57 -  
58 - for (int i = 0; i <= rowNum; i++) {  
59 - for (int j = 0; j <= colNum; j++) {  
60 - // poi读  
61 - String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));  
62 - // jxl写  
63 - writableSheet.addCell(new Label(j, i, cellContent));  
64 - }  
65 -  
66 - }  
67 - writableWorkbook.write();  
68 - writableWorkbook.close();  
69 - poi_workbook.close();  
70 -  
71 - DataToolsFile dataToolsFile1 = new DataToolsFile();  
72 - dataToolsFile1.setFile(fileCal);  
73 - dataToolsFile1.setFileType(DataToolsFileType.XLS);  
74 -  
75 - return dataToolsFile1;  
76 -  
77 - } catch (Exception exp) {  
78 - throw new ScheduleException(exp);  
79 - } 38 + return this.dataToolsService.uploadFile(filename, filedata);
80 } 39 }
81 40
82 @Override 41 @Override
@@ -85,8 +44,17 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService { @@ -85,8 +44,17 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService {
85 LOGGER.info("//---------------- 导入路牌信息 start... ----------------//"); 44 LOGGER.info("//---------------- 导入路牌信息 start... ----------------//");
86 // 创建ktr转换所需参数 45 // 创建ktr转换所需参数
87 Map<String, Object> ktrParms = new HashMap<>(); 46 Map<String, Object> ktrParms = new HashMap<>();
88 - File ktrFile = new File(this.getClass().getResource(  
89 - dataToolsProperties.getGuideboardsDatainputktr()).toURI()); 47 + String country = Locale.getDefault().getLanguage();
  48 + File ktrFile = null;
  49 + if ("zh".equals(country)) {
  50 + ktrFile = new File(this.getClass().getResource(
  51 + dataToolsProperties.getZhRoadSignDataImport()).toURI());
  52 + } else if ("en".equals(country)) {
  53 + ktrFile = new File(this.getClass().getResource(
  54 + dataToolsProperties.getEnRoadSignDataImport()).toURI());
  55 + } else {
  56 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  57 + }
90 58
91 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径 59 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
92 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 60 ktrParms.put("transpath", ktrFile.getAbsolutePath());
@@ -115,12 +83,21 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService { @@ -115,12 +83,21 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService {
115 LOGGER.info("//---------------- 导出路牌信息 start... ----------------//"); 83 LOGGER.info("//---------------- 导出路牌信息 start... ----------------//");
116 // 创建ktr转换所需参数 84 // 创建ktr转换所需参数
117 Map<String, Object> ktrParms = new HashMap<>(); 85 Map<String, Object> ktrParms = new HashMap<>();
118 - File ktrFile = new File(this.getClass().getResource(  
119 - dataToolsProperties.getGuideboardsDataoutputktr()).toURI()); 86 + String country = Locale.getDefault().getLanguage();
  87 + File ktrFile = null;
  88 + if ("zh".equals(country)) {
  89 + ktrFile = new File(this.getClass().getResource(
  90 + dataToolsProperties.getZhRoadSignDataExport()).toURI());
  91 + } else if ("en".equals(country)) {
  92 + ktrFile = new File(this.getClass().getResource(
  93 + dataToolsProperties.getEnRoadSignDataExport()).toURI());
  94 + } else {
  95 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  96 + }
120 97
121 // 通用参数,转换文件路径,excel输出文件名 98 // 通用参数,转换文件路径,excel输出文件名
122 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 99 ktrParms.put("transpath", ktrFile.getAbsolutePath());
123 - ktrParms.put("filename", "路牌信息_download-"); 100 + ktrParms.put("filename", I18n.getInstance().getMessage("txt-2943") + "_download-");
124 101
125 ktrParms.putAll(params); 102 ktrParms.putAll(params);
126 103
src/main/java/com/bsth/service/schedule/datatools/ScheduleRule1FlatDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.*;  
5 -import jxl.write.Label;  
6 -import jxl.write.WritableSheet;  
7 -import jxl.write.WritableWorkbook; 4 +import com.bsth.service.schedule.utils.DataToolsFile;
  5 +import com.bsth.service.schedule.utils.DataToolsProperties;
  6 +import com.bsth.service.schedule.utils.DataToolsService;
  7 +import com.bsth.util.I18n;
8 import org.slf4j.Logger; 8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
10 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.beans.factory.annotation.Qualifier; 11 import org.springframework.beans.factory.annotation.Qualifier;
12 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
13 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
14 13
15 import java.io.File; 14 import java.io.File;
16 import java.io.PrintWriter; 15 import java.io.PrintWriter;
17 import java.io.StringWriter; 16 import java.io.StringWriter;
18 import java.util.HashMap; 17 import java.util.HashMap;
  18 +import java.util.Locale;
19 import java.util.Map; 19 import java.util.Map;
20 20
21 /** 21 /**
@@ -35,48 +35,7 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService { @@ -35,48 +35,7 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService {
35 35
36 @Override 36 @Override
37 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException { 37 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
38 - try {  
39 - // 对上传的excel文件做处理  
40 - // 将第一个sheet保存成一个xls文件  
41 - DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);  
42 - File file = dataToolsFile.getFile();  
43 -  
44 - // poi api  
45 - org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);  
46 - org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet  
47 - int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行  
48 - if (rowNum < 0) {  
49 - throw new RuntimeException("表格内容为空!");  
50 - }  
51 - int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主  
52 -  
53 - // jxl api  
54 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
55 - WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);  
56 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
57 -  
58 - for (int i = 0; i <= rowNum; i++) {  
59 - for (int j = 0; j <= colNum; j++) {  
60 - // poi读  
61 - String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));  
62 - // jxl写  
63 - writableSheet.addCell(new Label(j, i, cellContent));  
64 - }  
65 -  
66 - }  
67 - writableWorkbook.write();  
68 - writableWorkbook.close();  
69 - poi_workbook.close();  
70 -  
71 - DataToolsFile dataToolsFile1 = new DataToolsFile();  
72 - dataToolsFile1.setFile(fileCal);  
73 - dataToolsFile1.setFileType(DataToolsFileType.XLS);  
74 -  
75 - return dataToolsFile1;  
76 -  
77 - } catch (Exception exp) {  
78 - throw new ScheduleException(exp);  
79 - } 38 + return this.dataToolsService.uploadFile(filename, filedata);
80 } 39 }
81 40
82 @Override 41 @Override
@@ -85,8 +44,17 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService { @@ -85,8 +44,17 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService {
85 LOGGER.info("//---------------- 导入排版规则信息 start... ----------------//"); 44 LOGGER.info("//---------------- 导入排版规则信息 start... ----------------//");
86 // 创建ktr转换所需参数 45 // 创建ktr转换所需参数
87 Map<String, Object> ktrParms = new HashMap<>(); 46 Map<String, Object> ktrParms = new HashMap<>();
88 - File ktrFile = new File(this.getClass().getResource(  
89 - dataToolsProperties.getScheduleruleDatainputktr()).toURI()); 47 + String country = Locale.getDefault().getLanguage();
  48 + File ktrFile = null;
  49 + if ("zh".equals(country)) {
  50 + ktrFile = new File(this.getClass().getResource(
  51 + dataToolsProperties.getZhScheduleRuleDataImport()).toURI());
  52 + } else if ("en".equals(country)) {
  53 + ktrFile = new File(this.getClass().getResource(
  54 + dataToolsProperties.getEnScheduleRuleDataImport()).toURI());
  55 + } else {
  56 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  57 + }
90 58
91 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径 59 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
92 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 60 ktrParms.put("transpath", ktrFile.getAbsolutePath());
@@ -115,12 +83,21 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService { @@ -115,12 +83,21 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService {
115 LOGGER.info("//---------------- 导出排版规则信息 start... ----------------//"); 83 LOGGER.info("//---------------- 导出排版规则信息 start... ----------------//");
116 // 创建ktr转换所需参数 84 // 创建ktr转换所需参数
117 Map<String, Object> ktrParms = new HashMap<>(); 85 Map<String, Object> ktrParms = new HashMap<>();
118 - File ktrFile = new File(this.getClass().getResource(  
119 - dataToolsProperties.getScheduleruleOutput()).toURI()); 86 + String country = Locale.getDefault().getLanguage();
  87 + File ktrFile = null;
  88 + if ("zh".equals(country)) {
  89 + ktrFile = new File(this.getClass().getResource(
  90 + dataToolsProperties.getZhScheduleRuleDataExport()).toURI());
  91 + } else if ("en".equals(country)) {
  92 + ktrFile = new File(this.getClass().getResource(
  93 + dataToolsProperties.getEnScheduleRuleDataExport()).toURI());
  94 + } else {
  95 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  96 + }
120 97
121 // 通用参数,转换文件路径,excel输出文件名 98 // 通用参数,转换文件路径,excel输出文件名
122 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 99 ktrParms.put("transpath", ktrFile.getAbsolutePath());
123 - ktrParms.put("filename", "$$$$$${txt-1836}_download-"); 100 + ktrParms.put("filename", I18n.getInstance().getMessage("txt-1836") + "_download-");
124 101
125 ktrParms.putAll(params); 102 ktrParms.putAll(params);
126 103
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailDataToolsImpl.java
@@ -7,6 +7,8 @@ import com.bsth.service.schedule.timetable.TimetableExcelData; @@ -7,6 +7,8 @@ import com.bsth.service.schedule.timetable.TimetableExcelData;
7 import com.bsth.service.schedule.timetable.TimetableExcelFormatType; 7 import com.bsth.service.schedule.timetable.TimetableExcelFormatType;
8 import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelDataImportStrategyImpl; 8 import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelDataImportStrategyImpl;
9 import com.bsth.service.schedule.utils.*; 9 import com.bsth.service.schedule.utils.*;
  10 +import com.bsth.util.I18n;
  11 +import com.google.common.io.Files;
10 import jxl.Sheet; 12 import jxl.Sheet;
11 import jxl.Workbook; 13 import jxl.Workbook;
12 import jxl.write.Label; 14 import jxl.write.Label;
@@ -53,26 +55,43 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -53,26 +55,43 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
53 @Override 55 @Override
54 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException { 56 public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
55 try { 57 try {
56 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
57 - DataToolsFile file = dataToolsService.uploadFile(filename, filedata);  
58 -// Workbook workbook = Workbook.getWorkbook(file);  
59 -// Sheet sheet = workbook.getSheet(0);  
60 -//  
61 -// File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
62 -// WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);  
63 -// WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
64 -// for (int i = 0; i < sheet.getRows(); i++) {  
65 -// Cell[] cells = sheet.getRow(i);  
66 -// for (int j = 0; j < cells.length; j++) {  
67 -// writableSheet.addCell(new Label(j, i, cells[j].getContents()));  
68 -// }  
69 -// }  
70 -// writableWorkbook.write();  
71 -// writableWorkbook.close();  
72 -//  
73 -// return fileCal; 58 + LOGGER.info("start uploadFile...originalFilename={}", filename);
74 59
75 - return file; 60 + // 1、上传文件到指定目录
  61 +
  62 + DataToolsFile dataToolsFile = new DataToolsFile();
  63 + // 判定文件类型(目前只支持xls,xlsx文件)
  64 + if (DataToolsFileType.XLS.isThisType(filedata)) {
  65 + // xls文件
  66 + dataToolsFile.setFileType(DataToolsFileType.XLS);
  67 + dataToolsFile.setFile(new File(DataToolsFileType.XLS.getNewFileName(
  68 + dataToolsProperties.getFileuploadDir(),
  69 + File.separator,
  70 + filename,
  71 + "-upload-",
  72 + new DateTime().toString("yyyyMMddHHmmss")
  73 + )));
  74 + Files.write(filedata, dataToolsFile.getFile());
  75 + } else if (DataToolsFileType.XLSX.isThisType(filedata)) {
  76 + // xlsx文件
  77 + dataToolsFile.setFileType(DataToolsFileType.XLSX);
  78 + dataToolsFile.setFile(new File(DataToolsFileType.XLSX.getNewFileName(
  79 + dataToolsProperties.getFileuploadDir(),
  80 + File.separator,
  81 + filename,
  82 + "-upload-",
  83 + new DateTime().toString("yyyyMMddHHmmss")
  84 + )));
  85 + Files.write(filedata, dataToolsFile.getFile());
  86 + } else {
  87 + // 非excel文件
  88 + throw new Exception(I18n.getInstance().getMessage("dataToolsServiceImpl-line132"));
  89 + }
  90 +
  91 + LOGGER.info("uploadFile success...newFilename={}", dataToolsFile.getFile().getAbsolutePath());
  92 +
  93 +
  94 + return dataToolsFile;
76 95
77 } catch (Exception exp) { 96 } catch (Exception exp) {
78 throw new ScheduleException(exp); 97 throw new ScheduleException(exp);
@@ -242,14 +261,26 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -242,14 +261,26 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
242 261
243 // 创建ktr转换所需参数 262 // 创建ktr转换所需参数
244 Map<String, Object> ktrParms = new HashMap<>(); 263 Map<String, Object> ktrParms = new HashMap<>();
245 - File ktrFile = new File(this.getClass().getResource(  
246 - dataToolsProperties.getTtinfodetailMetaoutput()).toURI());  
247 - File ktrFile2 = new File(this.getClass().getResource(  
248 - dataToolsProperties.getTtinfodetailOutput()).toURI()); 264 + String country = Locale.getDefault().getLanguage();
  265 + File ktrFile = null;
  266 + File ktrFile2 = null;
  267 + if ("zh".equals(country)) {
  268 + ktrFile = new File(this.getClass().getResource(
  269 + dataToolsProperties.getZhTtinfoDetailMetaDataForExport()).toURI());
  270 + ktrFile2 = new File(this.getClass().getResource(
  271 + dataToolsProperties.getZhTtinfoDetailDataExport()).toURI());
  272 + } else if ("en".equals(country)) {
  273 + ktrFile = new File(this.getClass().getResource(
  274 + dataToolsProperties.getEnTtinfoDetailMetaDataForExport()).toURI());
  275 + ktrFile2 = new File(this.getClass().getResource(
  276 + dataToolsProperties.getEnTtinfoDetailDataExport()).toURI());
  277 + } else {
  278 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  279 + }
249 280
250 // 通用参数,转换文件路径,excel输出文件名 281 // 通用参数,转换文件路径,excel输出文件名
251 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 282 ktrParms.put("transpath", ktrFile.getAbsolutePath());
252 - ktrParms.put("filename", String.format("时刻表_(id=%s)_download-", String.valueOf(params.get("ttinfoid")))); 283 + ktrParms.put("filename", String.format(I18n.getInstance().getMessage("tTInfoDetailDataToolsImpl-line264") + "_(id=%s)_download-", String.valueOf(params.get("ttinfoid"))));
253 284
254 // 附加参数 285 // 附加参数
255 ktrParms.put("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件 286 ktrParms.put("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件
@@ -267,9 +298,9 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -267,9 +298,9 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
267 } else if (DataToolsFileType.XLSX.isThisType(file.getFile())) { 298 } else if (DataToolsFileType.XLSX.isThisType(file.getFile())) {
268 poi_workbook = DataToolsFileType.XLSX.getWorkBook(file.getFile()); 299 poi_workbook = DataToolsFileType.XLSX.getWorkBook(file.getFile());
269 } else { 300 } else {
270 - throw new Exception("不是xls xlsx文件!"); 301 + throw new Exception(I18n.getInstance().getMessage("tTInfoDetailDataToolsImpl-line283"));
271 } 302 }
272 - poi_sheet = poi_workbook.getSheet("Sheet1"); 303 + poi_sheet = poi_workbook.getSheetAt(0); // 获取第一个sheet,前提ktr输出的第一个sheet就是导出内容
273 List<String> colList = new ArrayList<>(); 304 List<String> colList = new ArrayList<>();
274 int rownums = poi_sheet.getLastRowNum() + 1; 305 int rownums = poi_sheet.getLastRowNum() + 1;
275 int colnums = poi_sheet.getRow(0).getLastCellNum(); 306 int colnums = poi_sheet.getRow(0).getLastCellNum();
@@ -322,8 +353,17 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -322,8 +353,17 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
322 353
323 // 创建ktr转换所需参数 354 // 创建ktr转换所需参数
324 Map<String, Object> ktrParms = new HashMap<>(); 355 Map<String, Object> ktrParms = new HashMap<>();
325 - File ktrFile = new File(this.getClass().getResource(  
326 - dataToolsProperties.getTtinfodetailForeditktr()).toURI()); 356 + String country = Locale.getDefault().getLanguage();
  357 + File ktrFile;
  358 + if ("zh".equals(country)) {
  359 + ktrFile = new File(this.getClass().getResource(
  360 + dataToolsProperties.getZhTtinfoDetailDataExportForEdit()).toURI());
  361 + } else if ("en".equals(country)) {
  362 + ktrFile = new File(this.getClass().getResource(
  363 + dataToolsProperties.getEnTtinfoDetailDataExportForEdit()).toURI());
  364 + } else {
  365 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  366 + }
327 367
328 // 通用参数,转换文件路径,excel输出文件名,错误输出文件路径 368 // 通用参数,转换文件路径,excel输出文件名,错误输出文件路径
329 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 369 ktrParms.put("transpath", ktrFile.getAbsolutePath());
@@ -358,9 +398,9 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -358,9 +398,9 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
358 double all_lc_yy = 0; // 总营运里程 398 double all_lc_yy = 0; // 总营运里程
359 399
360 String[] headarrays = new String[maxfcno.intValue() + 3]; 400 String[] headarrays = new String[maxfcno.intValue() + 3];
361 - headarrays[0] = "$$$$$${txt-4022}";  
362 - headarrays[maxfcno.intValue() + 1] = "$$$$$${txt-4376}";  
363 - headarrays[maxfcno.intValue() + 2] = "$$$$$${txt-2804}"; 401 + headarrays[0] = I18n.getInstance().getMessage("tTInfoDetailDataToolsImpl-line383");
  402 + headarrays[maxfcno.intValue() + 1] = I18n.getInstance().getMessage("tTInfoDetailDataToolsImpl-line384");
  403 + headarrays[maxfcno.intValue() + 2] = I18n.getInstance().getMessage("tTInfoDetailDataToolsImpl-line385");
364 404
365 for (int r = 1; r < sheet.getRows(); r++) { 405 for (int r = 1; r < sheet.getRows(); r++) {
366 List<FcInfo> fcInfos = new ArrayList<>(); 406 List<FcInfo> fcInfos = new ArrayList<>();
@@ -435,7 +475,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -435,7 +475,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
435 } 475 }
436 editInfo.getHeader().addAll(Arrays.asList(headarrays)); 476 editInfo.getHeader().addAll(Arrays.asList(headarrays));
437 477
438 - editInfo.setYy_desc(String.format("$$$$$${txt-2914}", all_bc_ks, all_bc_yy, all_lc_ks, all_lc_yy, all_lc_ks + all_lc_yy)); 478 + editInfo.setYy_desc(String.format(I18n.getInstance().getMessage("tTInfoDetailDataToolsImpl-line460"), all_bc_ks, all_bc_yy, all_lc_ks, all_lc_yy, all_lc_ks + all_lc_yy));
439 } 479 }
440 480
441 LOGGER.info("//---------------- 时刻表编辑用数据输出 success... ----------------//"); 481 LOGGER.info("//---------------- 时刻表编辑用数据输出 success... ----------------//");
src/main/java/com/bsth/service/schedule/exception/ScheduleException.java
@@ -5,7 +5,7 @@ package com.bsth.service.schedule.exception; @@ -5,7 +5,7 @@ package com.bsth.service.schedule.exception;
5 */ 5 */
6 public class ScheduleException extends Exception { 6 public class ScheduleException extends Exception {
7 public ScheduleException(String message) { 7 public ScheduleException(String message) {
8 - super("计划调度业务错误==>>" + message); 8 + super(message);
9 } 9 }
10 public ScheduleException(Throwable throwable) { 10 public ScheduleException(Throwable throwable) {
11 super(throwable); 11 super(throwable);
src/main/java/com/bsth/service/schedule/impl/CarConfigInfoServiceImpl.java
@@ -10,6 +10,7 @@ import com.bsth.service.schedule.ScheduleRule1FlatService; @@ -10,6 +10,7 @@ import com.bsth.service.schedule.ScheduleRule1FlatService;
10 import com.bsth.service.schedule.exception.ScheduleException; 10 import com.bsth.service.schedule.exception.ScheduleException;
11 import com.bsth.service.schedule.utils.DataToolsFile; 11 import com.bsth.service.schedule.utils.DataToolsFile;
12 import com.bsth.service.schedule.utils.DataToolsService; 12 import com.bsth.service.schedule.utils.DataToolsService;
  13 +import com.bsth.util.I18n;
13 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.beans.factory.annotation.Qualifier; 15 import org.springframework.beans.factory.annotation.Qualifier;
15 import org.springframework.stereotype.Service; 16 import org.springframework.stereotype.Service;
@@ -53,7 +54,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt; @@ -53,7 +54,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt;
53 @Override 54 @Override
54 public void validate_cars_gs(CarConfigInfo carConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException { 55 public void validate_cars_gs(CarConfigInfo carConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException {
55 if (CollectionUtils.isEmpty(companyAuthorityList)) { 56 if (CollectionUtils.isEmpty(companyAuthorityList)) {
56 - throw new ScheduleException("当前用户没有公司权限!"); 57 + throw new ScheduleException(I18n.getInstance().getMessage("carConfigInfoServiceImpl-line57"));
57 } 58 }
58 59
59 boolean isFind = false; 60 boolean isFind = false;
@@ -65,14 +66,14 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt; @@ -65,14 +66,14 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt;
65 } 66 }
66 } 67 }
67 if (!isFind) { 68 if (!isFind) {
68 - throw new ScheduleException("当前车辆不在用户所属公司中!"); 69 + throw new ScheduleException(I18n.getInstance().getMessage("carConfigInfoServiceImpl-line69"));
69 } 70 }
70 } 71 }
71 72
72 @Override 73 @Override
73 public void validate_cars_fgs(CarConfigInfo carConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException { 74 public void validate_cars_fgs(CarConfigInfo carConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException {
74 if (CollectionUtils.isEmpty(companyAuthorityList)) { 75 if (CollectionUtils.isEmpty(companyAuthorityList)) {
75 - throw new ScheduleException("当前用户没有分公司权限!"); 76 + throw new ScheduleException(I18n.getInstance().getMessage("carConfigInfoServiceImpl-line76"));
76 } 77 }
77 78
78 boolean isFind = false; 79 boolean isFind = false;
@@ -97,7 +98,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt; @@ -97,7 +98,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt;
97 } 98 }
98 } 99 }
99 if (!isFind) { 100 if (!isFind) {
100 - throw new ScheduleException("当前车辆不在用户所属分公司中!"); 101 + throw new ScheduleException(I18n.getInstance().getMessage("carConfigInfoServiceImpl-line101"));
101 } 102 }
102 } 103 }
103 104
@@ -112,17 +113,18 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt; @@ -112,17 +113,18 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt;
112 if (carConfigInfo.getXl() == null || 113 if (carConfigInfo.getXl() == null ||
113 carConfigInfo.getXl().getId() == null || 114 carConfigInfo.getXl().getId() == null ||
114 carConfigInfo.getXl().getName() == null) { 115 carConfigInfo.getXl().getName() == null) {
115 - throw new ScheduleException("线路未选择"); 116 + throw new ScheduleException(I18n.getInstance().getMessage("carConfigInfoServiceImpl-line116"));
116 } else { 117 } else {
117 // param.put("xl.id_eq", carConfigInfo.getXl().getId()); 118 // param.put("xl.id_eq", carConfigInfo.getXl().getId());
118 param.put("isCancel_eq", false); 119 param.put("isCancel_eq", false);
119 if (carConfigInfo.getCl() == null || carConfigInfo.getCl().getId() == null) { 120 if (carConfigInfo.getCl() == null || carConfigInfo.getCl().getId() == null) {
120 - throw new ScheduleException("车辆未选择"); 121 + throw new ScheduleException(I18n.getInstance().getMessage("carConfigInfoServiceImpl-line121"));
121 } else { 122 } else {
122 param.put("cl.id_eq", carConfigInfo.getCl().getId()); 123 param.put("cl.id_eq", carConfigInfo.getCl().getId());
123 List<CarConfigInfo> carConfigInfos = list(param); 124 List<CarConfigInfo> carConfigInfos = list(param);
124 if (!CollectionUtils.isEmpty(carConfigInfos)) { 125 if (!CollectionUtils.isEmpty(carConfigInfos)) {
125 - throw new ScheduleException("车辆已经配置在" + carConfigInfos.get(0).getXl().getName() + "线路中!"); 126 + throw new ScheduleException(I18n.getInstance().getMessage("carConfigInfoServiceImpl-line126",
  127 + carConfigInfos.get(0).getXl().getName()));
126 } 128 }
127 } 129 }
128 } 130 }
@@ -137,7 +139,8 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt; @@ -137,7 +139,8 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt;
137 List<CarConfigInfo> carConfigInfos = list(param); 139 List<CarConfigInfo> carConfigInfos = list(param);
138 for (CarConfigInfo carConfigInfo : carConfigInfos) { 140 for (CarConfigInfo carConfigInfo : carConfigInfos) {
139 if (!carConfigInfo.getXl().getId().equals(xlId)) { 141 if (!carConfigInfo.getXl().getId().equals(xlId)) {
140 - throw new ScheduleException("车辆不配置在当前线路下,配置在" + carConfigInfo.getXl().getName() + "线路中!"); 142 + throw new ScheduleException(I18n.getInstance().getMessage("carConfigInfoServiceImpl-line142",
  143 + carConfigInfo.getXl().getName()));
141 } 144 }
142 } 145 }
143 } 146 }
@@ -150,7 +153,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt; @@ -150,7 +153,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt;
150 param.put("isCancel_eq", false); 153 param.put("isCancel_eq", false);
151 List<CarConfigInfo> carConfigInfos = list(param); 154 List<CarConfigInfo> carConfigInfos = list(param);
152 if (CollectionUtils.isEmpty(carConfigInfos)) { 155 if (CollectionUtils.isEmpty(carConfigInfos)) {
153 - throw new ScheduleException("当前车辆没有配置在当前线路中,不属于当前线路!"); 156 + throw new ScheduleException(I18n.getInstance().getMessage("carConfigInfoServiceImpl-line156"));
154 } 157 }
155 } 158 }
156 159
@@ -174,7 +177,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt; @@ -174,7 +177,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt;
174 if (CollectionUtils.isEmpty(scheduleRule1Flats)) { 177 if (CollectionUtils.isEmpty(scheduleRule1Flats)) {
175 carConfigInfo.setIsCancel(true); 178 carConfigInfo.setIsCancel(true);
176 } else { 179 } else {
177 - throw new ScheduleException("车辆配置已被规则使用,不能作废,请先修改规则!"); 180 + throw new ScheduleException(I18n.getInstance().getMessage("carConfigInfoServiceImpl-line180"));
178 } 181 }
179 } 182 }
180 } 183 }
src/main/java/com/bsth/service/schedule/impl/CarDeviceServiceImpl.java
@@ -5,6 +5,7 @@ import com.bsth.entity.Cars; @@ -5,6 +5,7 @@ import com.bsth.entity.Cars;
5 import com.bsth.service.CarsService; 5 import com.bsth.service.CarsService;
6 import com.bsth.service.schedule.CarDeviceService; 6 import com.bsth.service.schedule.CarDeviceService;
7 import com.bsth.service.schedule.exception.ScheduleException; 7 import com.bsth.service.schedule.exception.ScheduleException;
  8 +import com.bsth.util.I18n;
8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.stereotype.Service; 10 import org.springframework.stereotype.Service;
10 import org.springframework.transaction.annotation.Isolation; 11 import org.springframework.transaction.annotation.Isolation;
@@ -39,10 +40,10 @@ public class CarDeviceServiceImpl extends BServiceImpl&lt;CarDevice, Long&gt; implemen @@ -39,10 +40,10 @@ public class CarDeviceServiceImpl extends BServiceImpl&lt;CarDevice, Long&gt; implemen
39 @Override 40 @Override
40 public void validate_qyrq(CarDevice carDevice) throws ScheduleException { 41 public void validate_qyrq(CarDevice carDevice) throws ScheduleException {
41 if (carDevice.getXl() == null) { 42 if (carDevice.getXl() == null) {
42 - throw new ScheduleException("线路未选择"); 43 + throw new ScheduleException(I18n.getInstance().getMessage("carDeviceServiceImpl-line43"));
43 } 44 }
44 if (carDevice.getCl() == null) { 45 if (carDevice.getCl() == null) {
45 - throw new ScheduleException("车辆未选择"); 46 + throw new ScheduleException(I18n.getInstance().getMessage("carDeviceServiceImpl-line46"));
46 } 47 }
47 Map<String, Object> param = new HashMap<>(); 48 Map<String, Object> param = new HashMap<>();
48 if (carDevice.getId() != null) { 49 if (carDevice.getId() != null) {
@@ -53,7 +54,7 @@ public class CarDeviceServiceImpl extends BServiceImpl&lt;CarDevice, Long&gt; implemen @@ -53,7 +54,7 @@ public class CarDeviceServiceImpl extends BServiceImpl&lt;CarDevice, Long&gt; implemen
53 param.put("isCancel_eq", false); // 未标记作废删除的 54 param.put("isCancel_eq", false); // 未标记作废删除的
54 param.put("qyrq_ge", carDevice.getQyrq()); 55 param.put("qyrq_ge", carDevice.getQyrq());
55 if (!CollectionUtils.isEmpty(list(param))) { 56 if (!CollectionUtils.isEmpty(list(param))) {
56 - throw new ScheduleException("启用日期必须比历史的启用日期大"); 57 + throw new ScheduleException(I18n.getInstance().getMessage("carDeviceServiceImpl-line57"));
57 } 58 }
58 } 59 }
59 60
src/main/java/com/bsth/service/schedule/impl/CarsServiceImpl.java
@@ -9,6 +9,7 @@ import com.bsth.service.schedule.CarsService; @@ -9,6 +9,7 @@ import com.bsth.service.schedule.CarsService;
9 import com.bsth.service.schedule.exception.ScheduleException; 9 import com.bsth.service.schedule.exception.ScheduleException;
10 import com.bsth.service.schedule.utils.DataToolsFile; 10 import com.bsth.service.schedule.utils.DataToolsFile;
11 import com.bsth.service.schedule.utils.DataToolsService; 11 import com.bsth.service.schedule.utils.DataToolsService;
  12 +import com.bsth.util.I18n;
12 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.beans.factory.annotation.Qualifier; 14 import org.springframework.beans.factory.annotation.Qualifier;
14 import org.springframework.stereotype.Service; 15 import org.springframework.stereotype.Service;
@@ -37,6 +38,9 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars @@ -37,6 +38,9 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars
37 @Autowired 38 @Autowired
38 private CarConfigInfoRepository carConfigInfoRepository; 39 private CarConfigInfoRepository carConfigInfoRepository;
39 40
  41 + @Autowired
  42 + private I18n i18n;
  43 +
40 @Override 44 @Override
41 public Cars save(Cars cars) { 45 public Cars save(Cars cars) {
42 if (cars.getId() != null && cars.getScrapState()) { // 更新车辆信息,报废车辆 46 if (cars.getId() != null && cars.getScrapState()) { // 更新车辆信息,报废车辆
@@ -97,7 +101,7 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars @@ -97,7 +101,7 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars
97 } 101 }
98 param.put("insideCode_eq", cars.getInsideCode()); 102 param.put("insideCode_eq", cars.getInsideCode());
99 if (!CollectionUtils.isEmpty(list(param))) { 103 if (!CollectionUtils.isEmpty(list(param))) {
100 - throw new ScheduleException("车辆内部编号/自编号重复"); 104 + throw new ScheduleException(this.i18n.getMessage("carsServiceImpl-line104"));
101 } 105 }
102 } 106 }
103 107
@@ -111,7 +115,7 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars @@ -111,7 +115,7 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars
111 } 115 }
112 param.put("carCode_eq", cars.getCarCode()); 116 param.put("carCode_eq", cars.getCarCode());
113 if (!CollectionUtils.isEmpty(list(param))) { 117 if (!CollectionUtils.isEmpty(list(param))) {
114 - throw new ScheduleException("车辆编号重复"); 118 + throw new ScheduleException(this.i18n.getMessage("carsServiceImpl-line118"));
115 } 119 }
116 } 120 }
117 121
@@ -125,7 +129,7 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars @@ -125,7 +129,7 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars
125 } 129 }
126 param.put("carPlate_eq", cars.getCarPlate()); 130 param.put("carPlate_eq", cars.getCarPlate());
127 if (!CollectionUtils.isEmpty(list(param))) { 131 if (!CollectionUtils.isEmpty(list(param))) {
128 - throw new ScheduleException("车牌号重复"); 132 + throw new ScheduleException(this.i18n.getMessage("carsServiceImpl-line132"));
129 } 133 }
130 } 134 }
131 135
@@ -140,7 +144,7 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars @@ -140,7 +144,7 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars
140 param.put("scrapState_eq", false); 144 param.put("scrapState_eq", false);
141 param.put("equipmentCode_eq", cars.getEquipmentCode()); 145 param.put("equipmentCode_eq", cars.getEquipmentCode());
142 if (!CollectionUtils.isEmpty(list(param))) { 146 if (!CollectionUtils.isEmpty(list(param))) {
143 - throw new ScheduleException("设备编号重复"); 147 + throw new ScheduleException(this.i18n.getMessage("carsServiceImpl-line147"));
144 } 148 }
145 } 149 }
146 150
src/main/java/com/bsth/service/schedule/impl/EmployeeConfigInfoServiceImpl.java
@@ -14,6 +14,7 @@ import com.bsth.service.schedule.utils.DataToolsFile; @@ -14,6 +14,7 @@ import com.bsth.service.schedule.utils.DataToolsFile;
14 import com.bsth.service.schedule.utils.DataToolsService; 14 import com.bsth.service.schedule.utils.DataToolsService;
15 import com.bsth.service.sys.ModuleService; 15 import com.bsth.service.sys.ModuleService;
16 import com.bsth.util.DateUtils; 16 import com.bsth.util.DateUtils;
  17 +import com.bsth.util.I18n;
17 import org.apache.commons.lang3.time.DateFormatUtils; 18 import org.apache.commons.lang3.time.DateFormatUtils;
18 import org.springframework.beans.factory.annotation.Autowired; 19 import org.springframework.beans.factory.annotation.Autowired;
19 import org.springframework.beans.factory.annotation.Qualifier; 20 import org.springframework.beans.factory.annotation.Qualifier;
@@ -89,7 +90,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -89,7 +90,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
89 public void validate_jsy_destroy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException { 90 public void validate_jsy_destroy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException {
90 Personnel jsy = this.personnelRepository.findById(employeeConfigInfo.getJsy().getId()).get(); 91 Personnel jsy = this.personnelRepository.findById(employeeConfigInfo.getJsy().getId()).get();
91 if (jsy.getDestroy() != null && jsy.getDestroy() == 1) { 92 if (jsy.getDestroy() != null && jsy.getDestroy() == 1) {
92 - throw new ScheduleException("当前驾驶员已经停用!"); 93 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line93"));
93 } 94 }
94 } 95 }
95 @Transactional 96 @Transactional
@@ -97,7 +98,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -97,7 +98,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
97 public void validate_spy_destroy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException { 98 public void validate_spy_destroy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException {
98 Personnel spy = this.personnelRepository.findById(employeeConfigInfo.getSpy().getId()).get(); 99 Personnel spy = this.personnelRepository.findById(employeeConfigInfo.getSpy().getId()).get();
99 if (spy.getDestroy() != null && spy.getDestroy() == 1) { 100 if (spy.getDestroy() != null && spy.getDestroy() == 1) {
100 - throw new ScheduleException("当前售票员已经停用!"); 101 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line101"));
101 } 102 }
102 } 103 }
103 104
@@ -113,19 +114,20 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -113,19 +114,20 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
113 if (employeeConfigInfo.getXl() == null || 114 if (employeeConfigInfo.getXl() == null ||
114 employeeConfigInfo.getXl().getId() == null || 115 employeeConfigInfo.getXl().getId() == null ||
115 employeeConfigInfo.getXl().getName() == null) { 116 employeeConfigInfo.getXl().getName() == null) {
116 - throw new ScheduleException("线路未选择"); 117 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line117"));
117 } else { 118 } else {
118 // param.put("xl.id_eq", employeeConfigInfo.getXl().getId()); 119 // param.put("xl.id_eq", employeeConfigInfo.getXl().getId());
119 param.put("isCancel_eq", false); // 未作废的人员配置 120 param.put("isCancel_eq", false); // 未作废的人员配置
120 121
121 if (employeeConfigInfo.getJsy() == null || employeeConfigInfo.getJsy().getId() == null) { 122 if (employeeConfigInfo.getJsy() == null || employeeConfigInfo.getJsy().getId() == null) {
122 - throw new ScheduleException("驾驶员未选择"); 123 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line123"));
123 } else { 124 } else {
124 // 检测人员是否已经配置在其他线路的驾驶员列表中 125 // 检测人员是否已经配置在其他线路的驾驶员列表中
125 param.put("jsy.id_eq", employeeConfigInfo.getJsy().getId()); 126 param.put("jsy.id_eq", employeeConfigInfo.getJsy().getId());
126 List<EmployeeConfigInfo> employeeConfigInfos = list(param); 127 List<EmployeeConfigInfo> employeeConfigInfos = list(param);
127 if (!CollectionUtils.isEmpty(list(param))) { 128 if (!CollectionUtils.isEmpty(list(param))) {
128 - throw new ScheduleException("人员已经配置在线路[" + employeeConfigInfos.get(0).getXl().getName() + "]驾驶员列表中!"); 129 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line129",
  130 + employeeConfigInfos.get(0).getXl().getName()));
129 } 131 }
130 132
131 // 检测人员是否已经配置在其他线路的售票员列表中 133 // 检测人员是否已经配置在其他线路的售票员列表中
@@ -133,7 +135,8 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -133,7 +135,8 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
133 param.put("spy.id_eq", employeeConfigInfo.getJsy().getId()); 135 param.put("spy.id_eq", employeeConfigInfo.getJsy().getId());
134 employeeConfigInfos = list(param); 136 employeeConfigInfos = list(param);
135 if (!CollectionUtils.isEmpty(list(param))) { 137 if (!CollectionUtils.isEmpty(list(param))) {
136 - throw new ScheduleException("人员已经配置在线路[" + employeeConfigInfos.get(0).getXl().getName() + "]售票员列表中!"); 138 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line138",
  139 + employeeConfigInfos.get(0).getXl().getName()));
137 } 140 }
138 141
139 } 142 }
@@ -148,14 +151,14 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -148,14 +151,14 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
148 param.put("jsy.id_eq", employeeConfigInfo.getJsy().getId()); 151 param.put("jsy.id_eq", employeeConfigInfo.getJsy().getId());
149 List<EmployeeConfigInfo> employeeConfigInfos = list(param); 152 List<EmployeeConfigInfo> employeeConfigInfos = list(param);
150 if (CollectionUtils.isEmpty(employeeConfigInfos)) { 153 if (CollectionUtils.isEmpty(employeeConfigInfos)) {
151 - throw new ScheduleException("驾驶员没有配置在当前线路中,不属于当前线路!"); 154 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line154"));
152 } 155 }
153 } 156 }
154 157
155 @Override 158 @Override
156 public void validate_jsy_gs(EmployeeConfigInfo employeeConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException { 159 public void validate_jsy_gs(EmployeeConfigInfo employeeConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException {
157 if (CollectionUtils.isEmpty(companyAuthorityList)) { 160 if (CollectionUtils.isEmpty(companyAuthorityList)) {
158 - throw new ScheduleException("当前用户没有公司权限!"); 161 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line161"));
159 } 162 }
160 163
161 boolean isFind = false; 164 boolean isFind = false;
@@ -167,14 +170,14 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -167,14 +170,14 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
167 } 170 }
168 } 171 }
169 if (!isFind) { 172 if (!isFind) {
170 - throw new ScheduleException("当前驾驶员不在用户所属公司中!"); 173 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line173"));
171 } 174 }
172 } 175 }
173 176
174 @Override 177 @Override
175 public void validate_jsy_fgs(EmployeeConfigInfo employeeConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException { 178 public void validate_jsy_fgs(EmployeeConfigInfo employeeConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException {
176 if (CollectionUtils.isEmpty(companyAuthorityList)) { 179 if (CollectionUtils.isEmpty(companyAuthorityList)) {
177 - throw new ScheduleException("当前用户没有分公司权限!"); 180 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line180"));
178 } 181 }
179 182
180 boolean isFind = false; 183 boolean isFind = false;
@@ -199,7 +202,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -199,7 +202,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
199 } 202 }
200 } 203 }
201 if (!isFind) { 204 if (!isFind) {
202 - throw new ScheduleException("当前驾驶员不在用户所属分公司中!"); 205 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line205"));
203 } 206 }
204 } 207 }
205 208
@@ -215,7 +218,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -215,7 +218,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
215 if (employeeConfigInfo.getXl() == null || 218 if (employeeConfigInfo.getXl() == null ||
216 employeeConfigInfo.getXl().getId() == null || 219 employeeConfigInfo.getXl().getId() == null ||
217 employeeConfigInfo.getXl().getName() == null) { 220 employeeConfigInfo.getXl().getName() == null) {
218 - throw new ScheduleException("线路未选择"); 221 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line221"));
219 } else { 222 } else {
220 // param.put("xl.id_eq", employeeConfigInfo.getXl().getId()); 223 // param.put("xl.id_eq", employeeConfigInfo.getXl().getId());
221 param.put("isCancel_eq", false); // 未作废的人员配置 224 param.put("isCancel_eq", false); // 未作废的人员配置
@@ -227,7 +230,8 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -227,7 +230,8 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
227 param.put("spy.id_eq", employeeConfigInfo.getSpy().getId()); 230 param.put("spy.id_eq", employeeConfigInfo.getSpy().getId());
228 List<EmployeeConfigInfo> employeeConfigInfos = list(param); 231 List<EmployeeConfigInfo> employeeConfigInfos = list(param);
229 if (!CollectionUtils.isEmpty(list(param))) { 232 if (!CollectionUtils.isEmpty(list(param))) {
230 - throw new ScheduleException("人员已经配置在线路[" + employeeConfigInfos.get(0).getXl().getName() + "]售票员列表中!"); 233 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line233",
  234 + employeeConfigInfos.get(0).getXl().getName()));
231 } 235 }
232 236
233 // 检测人员是否已经配置在其他线路的驾驶员列表中 237 // 检测人员是否已经配置在其他线路的驾驶员列表中
@@ -235,7 +239,8 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -235,7 +239,8 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
235 param.put("jsy.id_eq", employeeConfigInfo.getSpy().getId()); 239 param.put("jsy.id_eq", employeeConfigInfo.getSpy().getId());
236 employeeConfigInfos = list(param); 240 employeeConfigInfos = list(param);
237 if (!CollectionUtils.isEmpty(list(param))) { 241 if (!CollectionUtils.isEmpty(list(param))) {
238 - throw new ScheduleException("人员已经配置在线路[" + employeeConfigInfos.get(0).getXl().getName() + "]驾驶员列表中!"); 242 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line242",
  243 + employeeConfigInfos.get(0).getXl().getName()));
239 } 244 }
240 245
241 } 246 }
@@ -245,7 +250,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -245,7 +250,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
245 @Override 250 @Override
246 public void validate_spy_gs(EmployeeConfigInfo employeeConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException { 251 public void validate_spy_gs(EmployeeConfigInfo employeeConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException {
247 if (CollectionUtils.isEmpty(companyAuthorityList)) { 252 if (CollectionUtils.isEmpty(companyAuthorityList)) {
248 - throw new ScheduleException("当前用户没有公司权限!"); 253 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line253"));
249 } 254 }
250 255
251 boolean isFind = false; 256 boolean isFind = false;
@@ -257,14 +262,14 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -257,14 +262,14 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
257 } 262 }
258 } 263 }
259 if (!isFind) { 264 if (!isFind) {
260 - throw new ScheduleException("当前售票员不在用户所属公司中!"); 265 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line265"));
261 } 266 }
262 } 267 }
263 268
264 @Override 269 @Override
265 public void validate_spy_fgs(EmployeeConfigInfo employeeConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException { 270 public void validate_spy_fgs(EmployeeConfigInfo employeeConfigInfo, List<CompanyAuthority> companyAuthorityList) throws ScheduleException {
266 if (CollectionUtils.isEmpty(companyAuthorityList)) { 271 if (CollectionUtils.isEmpty(companyAuthorityList)) {
267 - throw new ScheduleException("当前用户没有分公司权限!"); 272 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line272"));
268 } 273 }
269 274
270 boolean isFind = false; 275 boolean isFind = false;
@@ -289,7 +294,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -289,7 +294,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
289 } 294 }
290 } 295 }
291 if (!isFind) { 296 if (!isFind) {
292 - throw new ScheduleException("当前售票员不在用户所属分公司中!"); 297 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line297"));
293 } 298 }
294 } 299 }
295 300
@@ -301,7 +306,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -301,7 +306,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
301 param.put("spy.id_eq", employeeConfigInfo.getSpy().getId()); 306 param.put("spy.id_eq", employeeConfigInfo.getSpy().getId());
302 List<EmployeeConfigInfo> employeeConfigInfos = list(param); 307 List<EmployeeConfigInfo> employeeConfigInfos = list(param);
303 if (CollectionUtils.isEmpty(employeeConfigInfos)) { 308 if (CollectionUtils.isEmpty(employeeConfigInfos)) {
304 - throw new ScheduleException("售票员没有配置在当前线路中,不属于当前线路!"); 309 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line309"));
305 } 310 }
306 } 311 }
307 312
@@ -314,7 +319,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -314,7 +319,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
314 List<Module> moduleList = this.moduleService.findByCurrentUser(); 319 List<Module> moduleList = this.moduleService.findByCurrentUser();
315 boolean hasPlanModule = false; 320 boolean hasPlanModule = false;
316 for (Module module : moduleList) { 321 for (Module module : moduleList) {
317 - if ("$$$$$${txt-1303}".equals(module.getName())) { 322 + if (I18n.getInstance().getMessage("txt-1303").equals(module.getName())) {
318 hasPlanModule = true; 323 hasPlanModule = true;
319 break; 324 break;
320 } 325 }
@@ -355,13 +360,13 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -355,13 +360,13 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
355 360
356 Date currentDate = new Date(DateUtils.getTimestamp()); 361 Date currentDate = new Date(DateUtils.getTimestamp());
357 System.out.println(currentDate); 362 System.out.println(currentDate);
358 - String info_format = "线路[%s][%s]排班中有人员已经停用,请及时处理!"; 363 + String info_format = I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line363");
359 List<String> infoList = this.jdbcTemplate.query(sql, new Object[] {currentDate}, new RowMapper<String>() { 364 List<String> infoList = this.jdbcTemplate.query(sql, new Object[] {currentDate}, new RowMapper<String>() {
360 @Override 365 @Override
361 public String mapRow(ResultSet resultSet, int i) throws SQLException { 366 public String mapRow(ResultSet resultSet, int i) throws SQLException {
362 String xlName = resultSet.getString("xlName"); 367 String xlName = resultSet.getString("xlName");
363 Date scheduleDate = new Date(resultSet.getDate("scheduleDate").getTime()); 368 Date scheduleDate = new Date(resultSet.getDate("scheduleDate").getTime());
364 - return String.format(info_format, xlName, DateFormatUtils.format(scheduleDate, "yyyy年MM月dd日")); 369 + return String.format(info_format, xlName, DateFormatUtils.format(scheduleDate, "yyyy-MM-dd"));
365 } 370 }
366 }); 371 });
367 372
@@ -395,7 +400,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -395,7 +400,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
395 } 400 }
396 401
397 if (ryConfigIds.contains(String.valueOf(id))) { 402 if (ryConfigIds.contains(String.valueOf(id))) {
398 - throw new ScheduleException("人员配置已被规则使用,不能作废,请先修改规则!"); 403 + throw new ScheduleException(I18n.getInstance().getMessage("employeeConfigInfoServiceImpl-line403"));
399 } else { 404 } else {
400 employeeConfigInfo.setIsCancel(true); 405 employeeConfigInfo.setIsCancel(true);
401 } 406 }
src/main/java/com/bsth/service/schedule/impl/EmployeeServiceImpl.java
@@ -5,6 +5,7 @@ import com.bsth.service.schedule.EmployeeService; @@ -5,6 +5,7 @@ import com.bsth.service.schedule.EmployeeService;
5 import com.bsth.service.schedule.exception.ScheduleException; 5 import com.bsth.service.schedule.exception.ScheduleException;
6 import com.bsth.service.schedule.utils.DataToolsFile; 6 import com.bsth.service.schedule.utils.DataToolsFile;
7 import com.bsth.service.schedule.utils.DataToolsService; 7 import com.bsth.service.schedule.utils.DataToolsService;
  8 +import com.bsth.util.I18n;
8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.beans.factory.annotation.Qualifier; 10 import org.springframework.beans.factory.annotation.Qualifier;
10 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
@@ -48,9 +49,9 @@ public class EmployeeServiceImpl extends BServiceImpl&lt;Personnel, Integer&gt; implem @@ -48,9 +49,9 @@ public class EmployeeServiceImpl extends BServiceImpl&lt;Personnel, Integer&gt; implem
48 param.put("id_ne", personnel.getId()); 49 param.put("id_ne", personnel.getId());
49 } 50 }
50 param.put("companyCode_eq", personnel.getCompanyCode()); 51 param.put("companyCode_eq", personnel.getCompanyCode());
51 - param.put("jobCode_eq", personnel.getJobCode()); 52 + param.put("jobCodeori_eq", personnel.getJobCode());
52 if (!CollectionUtils.isEmpty(list(param))) { 53 if (!CollectionUtils.isEmpty(list(param))) {
53 - throw new ScheduleException("相同公司工号重复"); 54 + throw new ScheduleException(I18n.getInstance().getMessage("employeeServiceImpl-line54"));
54 } 55 }
55 } 56 }
56 } 57 }
src/main/java/com/bsth/service/schedule/impl/GuideboardInfoServiceImpl.java
@@ -7,6 +7,7 @@ import com.bsth.service.schedule.TTInfoDetailService; @@ -7,6 +7,7 @@ import com.bsth.service.schedule.TTInfoDetailService;
7 import com.bsth.service.schedule.exception.ScheduleException; 7 import com.bsth.service.schedule.exception.ScheduleException;
8 import com.bsth.service.schedule.utils.DataToolsFile; 8 import com.bsth.service.schedule.utils.DataToolsFile;
9 import com.bsth.service.schedule.utils.DataToolsService; 9 import com.bsth.service.schedule.utils.DataToolsService;
  10 +import com.bsth.util.I18n;
10 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.beans.factory.annotation.Qualifier; 12 import org.springframework.beans.factory.annotation.Qualifier;
12 import org.springframework.dao.DataAccessException; 13 import org.springframework.dao.DataAccessException;
@@ -65,13 +66,13 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long @@ -65,13 +66,13 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long
65 } 66 }
66 67
67 if (guideboardInfo.getXl() == null || guideboardInfo.getXl().getId() == null) { 68 if (guideboardInfo.getXl() == null || guideboardInfo.getXl().getId() == null) {
68 - throw new ScheduleException("线路未选择"); 69 + throw new ScheduleException(I18n.getInstance().getMessage("guideboardInfoServiceImpl-line69"));
69 } else { 70 } else {
70 param.put("isCancel_eq", false); // 作废的也算入判定区 71 param.put("isCancel_eq", false); // 作废的也算入判定区
71 param.put("xl.id_eq", guideboardInfo.getXl().getId()); 72 param.put("xl.id_eq", guideboardInfo.getXl().getId());
72 param.put("lpNo_eq", guideboardInfo.getLpNo()); 73 param.put("lpNo_eq", guideboardInfo.getLpNo());
73 if (!CollectionUtils.isEmpty(list(param))) { 74 if (!CollectionUtils.isEmpty(list(param))) {
74 - throw new ScheduleException("路牌编号重复"); 75 + throw new ScheduleException(I18n.getInstance().getMessage("guideboardInfoServiceImpl-line75"));
75 } 76 }
76 } 77 }
77 } 78 }
@@ -85,13 +86,13 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long @@ -85,13 +86,13 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long
85 } 86 }
86 87
87 if (guideboardInfo.getXl() == null || guideboardInfo.getXl().getId() == null) { 88 if (guideboardInfo.getXl() == null || guideboardInfo.getXl().getId() == null) {
88 - throw new ScheduleException("线路未选择"); 89 + throw new ScheduleException(I18n.getInstance().getMessage("guideboardInfoServiceImpl-line89"));
89 } else { 90 } else {
90 param.put("isCancel_eq", false); // 作废的也算入判定区 91 param.put("isCancel_eq", false); // 作废的也算入判定区
91 param.put("xl.id_eq", guideboardInfo.getXl().getId()); 92 param.put("xl.id_eq", guideboardInfo.getXl().getId());
92 param.put("lpName_eq", guideboardInfo.getLpName()); 93 param.put("lpName_eq", guideboardInfo.getLpName());
93 if (!CollectionUtils.isEmpty(list(param))) { 94 if (!CollectionUtils.isEmpty(list(param))) {
94 - throw new ScheduleException("路牌名字重复"); 95 + throw new ScheduleException(I18n.getInstance().getMessage("guideboardInfoServiceImpl-line95"));
95 } 96 }
96 } 97 }
97 } 98 }
@@ -121,9 +122,8 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long @@ -121,9 +122,8 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long
121 if (CollectionUtils.isEmpty(ttInfoDetailList)) { 122 if (CollectionUtils.isEmpty(ttInfoDetailList)) {
122 guideboardInfo.setIsCancel(true); 123 guideboardInfo.setIsCancel(true);
123 } else { 124 } else {
124 - throw new ScheduleException("在时刻表" +  
125 - ttInfoDetailList.get(0).getTtinfo().getName() +  
126 - "已使用,无法作废!"); 125 + throw new ScheduleException(I18n.getInstance().getMessage("guideboardInfoServiceImpl-line125",
  126 + ttInfoDetailList.get(0).getTtinfo().getName()));
127 } 127 }
128 } 128 }
129 } 129 }
src/main/java/com/bsth/service/schedule/impl/SchedulePlanInfoServiceImpl.java
@@ -3,6 +3,7 @@ package com.bsth.service.schedule.impl; @@ -3,6 +3,7 @@ package com.bsth.service.schedule.impl;
3 import com.bsth.entity.schedule.SchedulePlanInfo; 3 import com.bsth.entity.schedule.SchedulePlanInfo;
4 import com.bsth.repository.schedule.SchedulePlanInfoRepository; 4 import com.bsth.repository.schedule.SchedulePlanInfoRepository;
5 import com.bsth.service.schedule.SchedulePlanInfoService; 5 import com.bsth.service.schedule.SchedulePlanInfoService;
  6 +import com.bsth.util.I18n;
6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.jdbc.core.JdbcTemplate; 8 import org.springframework.jdbc.core.JdbcTemplate;
8 import org.springframework.jdbc.core.RowCallbackHandler; 9 import org.springframework.jdbc.core.RowCallbackHandler;
@@ -185,7 +186,7 @@ public class SchedulePlanInfoServiceImpl extends BServiceImpl&lt;SchedulePlanInfo, @@ -185,7 +186,7 @@ public class SchedulePlanInfoServiceImpl extends BServiceImpl&lt;SchedulePlanInfo,
185 } 186 }
186 187
187 } else { 188 } else {
188 - throw new RuntimeException("未知的更新类型,type=" + type); 189 + throw new RuntimeException(I18n.getInstance().getMessage("schedulePlanInfoServiceImpl_line189", String.valueOf(type)));
189 } 190 }
190 191
191 return result; 192 return result;
src/main/java/com/bsth/service/schedule/impl/SchedulePlanServiceImpl.java
@@ -13,6 +13,7 @@ import com.bsth.service.schedule.impl.plan.kBase3.validate.timetable.CalcuParam; @@ -13,6 +13,7 @@ import com.bsth.service.schedule.impl.plan.kBase3.validate.timetable.CalcuParam;
13 import com.bsth.service.schedule.impl.plan.kBase3.validate.timetable.Result; 13 import com.bsth.service.schedule.impl.plan.kBase3.validate.timetable.Result;
14 import com.bsth.service.schedule.impl.plan.DroolsSchedulePlan; 14 import com.bsth.service.schedule.impl.plan.DroolsSchedulePlan;
15 import com.bsth.service.schedule.impl.plan.ScheduleRuleService; 15 import com.bsth.service.schedule.impl.plan.ScheduleRuleService;
  16 +import com.bsth.util.I18n;
16 import org.joda.time.DateTime; 17 import org.joda.time.DateTime;
17 import org.kie.api.KieBase; 18 import org.kie.api.KieBase;
18 import org.kie.api.runtime.KieSession; 19 import org.kie.api.runtime.KieSession;
@@ -114,7 +115,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -114,7 +115,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
114 115
115 return new SchedulePlan(); 116 return new SchedulePlan();
116 } else { 117 } else {
117 - throw new ScheduleException("当前线路正在排班,请稍后再操作..."); 118 + throw new ScheduleException(I18n.getInstance().getMessage("schedulePlanServiceImpl_line118"));
118 } 119 }
119 } catch (Exception exp) { 120 } catch (Exception exp) {
120 throw new RuntimeException(exp); 121 throw new RuntimeException(exp);
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
@@ -33,6 +33,7 @@ import com.bsth.service.schedule.timetable.TimetableExcelFormatType; @@ -33,6 +33,7 @@ import com.bsth.service.schedule.timetable.TimetableExcelFormatType;
33 import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelDataValidateStrategyImpl; 33 import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelDataValidateStrategyImpl;
34 import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelPVDataExportStrategyImpl; 34 import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelPVDataExportStrategyImpl;
35 import com.bsth.service.schedule.utils.*; 35 import com.bsth.service.schedule.utils.*;
  36 +import com.bsth.util.I18n;
36 import org.apache.commons.lang3.StringUtils; 37 import org.apache.commons.lang3.StringUtils;
37 import org.apache.commons.lang3.time.DateFormatUtils; 38 import org.apache.commons.lang3.time.DateFormatUtils;
38 import org.apache.poi.ss.usermodel.*; 39 import org.apache.poi.ss.usermodel.*;
@@ -114,7 +115,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -114,7 +115,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
114 "select station_code as zcode, station_name as zname, concat(station_name, '(站点)') as aname from bsth_c_ls_stationroute " + 115 "select station_code as zcode, station_name as zname, concat(station_name, '(站点)') as aname from bsth_c_ls_stationroute " +
115 "where destroy = 0 and line = ? and directions = ? and versions = ? " + 116 "where destroy = 0 and line = ? and directions = ? and versions = ? " +
116 "union all " + 117 "union all " +
117 - "select park_code as zcode, park_name as zname, concat(park_name, '(停车场)') as aname from bsth_c_car_park " + 118 + "select park_code as zcode, park_name as zname, concat(park_name, '(" + I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line118") + ")') as aname from bsth_c_car_park " +
118 "where destroy = 0 " + 119 "where destroy = 0 " +
119 ") a "; 120 ") a ";
120 121
@@ -174,11 +175,11 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -174,11 +175,11 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
174 public void addLp(Long ttInfoId, Long lpId) { 175 public void addLp(Long ttInfoId, Long lpId) {
175 List<TTInfoDetail> bcList = this.ttInfoDetailRepository.findBcdetails(ttInfoId, lpId); 176 List<TTInfoDetail> bcList = this.ttInfoDetailRepository.findBcdetails(ttInfoId, lpId);
176 if (!CollectionUtils.isEmpty(bcList)) { 177 if (!CollectionUtils.isEmpty(bcList)) {
177 - throw new RuntimeException("路牌已经存在!"); 178 + throw new RuntimeException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line178"));
178 } 179 }
179 List<TTInfoDetail> allBcList = this.ttInfoDetailRepository.findByTtinfoId(ttInfoId); 180 List<TTInfoDetail> allBcList = this.ttInfoDetailRepository.findByTtinfoId(ttInfoId);
180 if (CollectionUtils.isEmpty(allBcList)) { 181 if (CollectionUtils.isEmpty(allBcList)) {
181 - throw new RuntimeException("时刻表没有班次(添加路牌至少需要一个班次)!"); 182 + throw new RuntimeException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line182"));
182 } 183 }
183 184
184 Integer maxBcs = this.ttInfoDetailRepository.findMaxBcs(ttInfoId).intValue(); 185 Integer maxBcs = this.ttInfoDetailRepository.findMaxBcs(ttInfoId).intValue();
@@ -262,31 +263,31 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -262,31 +263,31 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
262 public void validateAssoLineInfo(Integer lineinfoid) throws ScheduleException { 263 public void validateAssoLineInfo(Integer lineinfoid) throws ScheduleException {
263 LineInformation lineInformation = lineInformationService.findById(lineinfoid); 264 LineInformation lineInformation = lineInformationService.findById(lineinfoid);
264 if (lineInformation.getUpInMileage() == null) { 265 if (lineInformation.getUpInMileage() == null) {
265 - throw new ScheduleException("上行进场里程为空"); 266 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line266"));
266 } else if (lineInformation.getUpInTimer() == null) { 267 } else if (lineInformation.getUpInTimer() == null) {
267 - throw new ScheduleException("上行进场时间为空"); 268 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line268"));
268 } else if (lineInformation.getUpOutMileage() == null) { 269 } else if (lineInformation.getUpOutMileage() == null) {
269 - throw new ScheduleException("上行出场里程为空"); 270 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line270"));
270 } else if (lineInformation.getUpOutTimer() == null) { 271 } else if (lineInformation.getUpOutTimer() == null) {
271 - throw new ScheduleException("上行出场时间为空"); 272 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line272"));
272 } else if (lineInformation.getUpMileage() == null) { 273 } else if (lineInformation.getUpMileage() == null) {
273 - throw new ScheduleException("上行班次里程为空"); 274 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line274"));
274 } else if (lineInformation.getUpTravelTime() == null) { 275 } else if (lineInformation.getUpTravelTime() == null) {
275 - throw new ScheduleException("上行班次时间为空"); 276 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line276"));
276 } else if (lineInformation.getDownInMileage() == null) { 277 } else if (lineInformation.getDownInMileage() == null) {
277 - throw new ScheduleException("下行进场里程为空"); 278 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line278"));
278 } else if (lineInformation.getDownInTimer() == null) { 279 } else if (lineInformation.getDownInTimer() == null) {
279 - throw new ScheduleException("下行进场时间为空"); 280 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line280"));
280 } else if (lineInformation.getDownOutMileage() == null) { 281 } else if (lineInformation.getDownOutMileage() == null) {
281 - throw new ScheduleException("下行出场里程为空"); 282 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line282"));
282 } else if (lineInformation.getDownOutTimer() == null) { 283 } else if (lineInformation.getDownOutTimer() == null) {
283 - throw new ScheduleException("下行出场时间为空"); 284 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line284"));
284 } else if (lineInformation.getDownMileage() == null) { 285 } else if (lineInformation.getDownMileage() == null) {
285 - throw new ScheduleException("下行班次里程为空"); 286 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line286"));
286 } else if (lineInformation.getDownTravelTime() == null) { 287 } else if (lineInformation.getDownTravelTime() == null) {
287 - throw new ScheduleException("下行班次时间为空"); 288 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line288"));
288 } else if (StringUtils.isEmpty(lineInformation.getCarPark())) { 289 } else if (StringUtils.isEmpty(lineInformation.getCarPark())) {
289 - throw new ScheduleException("停车场必须选择"); 290 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line290"));
290 } 291 }
291 292
292 // 单独验证停车场信息 293 // 单独验证停车场信息
@@ -295,13 +296,13 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -295,13 +296,13 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
295 p1.put("parkCode_eq", tcccode); 296 p1.put("parkCode_eq", tcccode);
296 List<CarPark> carParkList = (List<CarPark>) carParkService.list(p1); 297 List<CarPark> carParkList = (List<CarPark>) carParkService.list(p1);
297 if (CollectionUtils.isEmpty(carParkList)) { 298 if (CollectionUtils.isEmpty(carParkList)) {
298 - throw new ScheduleException(String.format("线路标准里的停车场code=%s,在停车场信息中未找到", tcccode)); 299 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line299"), tcccode));
299 } else if (carParkList.size() > 1) { 300 } else if (carParkList.size() > 1) {
300 - throw new ScheduleException(String.format("线路标准里的停车场code=%s,在停车场信息中有重复数据", tcccode)); 301 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line301"), tcccode));
301 } else { 302 } else {
302 CarPark carPark = carParkList.get(0); 303 CarPark carPark = carParkList.get(0);
303 if (StringUtils.isEmpty(carPark.getParkName())) { 304 if (StringUtils.isEmpty(carPark.getParkName())) {
304 - throw new ScheduleException(String.format("线路标准里的停车场code=%s,在停车场信息中没有停车场名字", tcccode)); 305 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("tTInfoDetailServiceImpl-line305"), tcccode));
305 } 306 }
306 } 307 }
307 308
src/main/java/com/bsth/service/schedule/impl/TTInfoServiceImpl.java
@@ -9,6 +9,7 @@ import com.bsth.repository.schedule.TTInfoRepository; @@ -9,6 +9,7 @@ import com.bsth.repository.schedule.TTInfoRepository;
9 import com.bsth.service.schedule.TTInfoService; 9 import com.bsth.service.schedule.TTInfoService;
10 import com.bsth.service.schedule.exception.ScheduleException; 10 import com.bsth.service.schedule.exception.ScheduleException;
11 import com.bsth.service.schedule.utils.TimeTableProto; 11 import com.bsth.service.schedule.utils.TimeTableProto;
  12 +import com.bsth.util.I18n;
12 import org.apache.commons.lang3.StringUtils; 13 import org.apache.commons.lang3.StringUtils;
13 import org.joda.time.DateTime; 14 import org.joda.time.DateTime;
14 import org.slf4j.Logger; 15 import org.slf4j.Logger;
@@ -51,7 +52,7 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI @@ -51,7 +52,7 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
51 param.put("name_eq", ttInfo.getName()); 52 param.put("name_eq", ttInfo.getName());
52 53
53 if (!CollectionUtils.isEmpty(list(param))) { 54 if (!CollectionUtils.isEmpty(list(param))) {
54 - throw new ScheduleException("名字重复"); 55 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoServiceImpl-line54"));
55 } 56 }
56 } 57 }
57 58
@@ -68,7 +69,7 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI @@ -68,7 +69,7 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
68 param.put("isEnableDisTemplate_eq", true); 69 param.put("isEnableDisTemplate_eq", true);
69 List<TTInfo> ttInfos = list(param); 70 List<TTInfo> ttInfos = list(param);
70 if (StringUtils.isEmpty(ttInfo.getRule_days())) { 71 if (StringUtils.isEmpty(ttInfo.getRule_days())) {
71 - throw new ScheduleException("常规有效日为空"); 72 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoServiceImpl-line72"));
72 } else { 73 } else {
73 String[] nds = ttInfo.getRule_days().split(","); 74 String[] nds = ttInfo.getRule_days().split(",");
74 for (TTInfo t : ttInfos) { 75 for (TTInfo t : ttInfos) {
@@ -78,7 +79,7 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI @@ -78,7 +79,7 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
78 // 79 //
79 } else { 80 } else {
80 if (nds[i].equals(nds_e[i])) { 81 if (nds[i].equals(nds_e[i])) {
81 - throw new ScheduleException("当前常规有效日期已经使用"); 82 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoServiceImpl-line82"));
82 } 83 }
83 } 84 }
84 } 85 }
@@ -109,7 +110,7 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI @@ -109,7 +110,7 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
109 } else { 110 } else {
110 for (String sd : sds) { 111 for (String sd : sds) {
111 if (t.getSpecial_days().indexOf(sd) != -1) { 112 if (t.getSpecial_days().indexOf(sd) != -1) {
112 - throw new ScheduleException("当前特殊日期已经使用"); 113 + throw new ScheduleException(I18n.getInstance().getMessage("tTInfoServiceImpl-line113"));
113 } 114 }
114 } 115 }
115 } 116 }
@@ -165,8 +166,8 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI @@ -165,8 +166,8 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
165 int version = Integer.parseInt(lv.get("version").toString()); 166 int version = Integer.parseInt(lv.get("version").toString());
166 167
167 String vname = t_name; 168 String vname = t_name;
168 - String rq = t_sd == null ? "未知启用日期" : new DateTime(t_sd).toString("YYYY年MM月dd日");  
169 - String sdesc = status == 0 ? "$$$$$${txt-4010}" : (status == 1 ? "当前" : "待更新"); 169 + String rq = t_sd == null ? I18n.getInstance().getMessage("tTInfoServiceImpl-line169") : new DateTime(t_sd).toString("YYYY-MM-dd");
  170 + String sdesc = status == 0 ? I18n.getInstance().getMessage("tTInfoServiceImpl-line170") : (status == 1 ? I18n.getInstance().getMessage("tTInfoServiceImpl-line170-1") : I18n.getInstance().getMessage("tTInfoServiceImpl-line170-2"));
170 171
171 Map<String, Object> value = new HashMap<>(); 172 Map<String, Object> value = new HashMap<>();
172 value.put("desc", vname + "-" + rq + "-" + sdesc); 173 value.put("desc", vname + "-" + rq + "-" + sdesc);
@@ -189,9 +190,9 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI @@ -189,9 +190,9 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
189 190
190 Map<String, Object> lv; 191 Map<String, Object> lv;
191 if (CollectionUtils.isEmpty(lineVersionDescs)) { 192 if (CollectionUtils.isEmpty(lineVersionDescs)) {
192 - return "未知版本"; 193 + return I18n.getInstance().getMessage("tTInfoServiceImpl-line193");
193 } else if (lineVersionDescs.size() > 1) { 194 } else if (lineVersionDescs.size() > 1) {
194 - return "重复版本"; 195 + return I18n.getInstance().getMessage("tTInfoServiceImpl-line195");
195 } else { 196 } else {
196 lv = lineVersionDescs.get(0); 197 lv = lineVersionDescs.get(0);
197 } 198 }
@@ -201,8 +202,8 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI @@ -201,8 +202,8 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
201 int status = Integer.parseInt(lv.get("status").toString()); 202 int status = Integer.parseInt(lv.get("status").toString());
202 203
203 String vname = t_name; 204 String vname = t_name;
204 - String rq = t_sd == null ? "未知启用日期" : new DateTime(t_sd).toString("YYYY年MM月dd日");  
205 - String sdesc = status == 0 ? "$$$$$${txt-4010}" : (status == 1 ? "当前" : "待更新"); 205 + String rq = t_sd == null ? I18n.getInstance().getMessage("tTInfoServiceImpl-line205") : new DateTime(t_sd).toString("YYYY-MM-dd");
  206 + String sdesc = status == 0 ? I18n.getInstance().getMessage("tTInfoServiceImpl-line206") : (status == 1 ? I18n.getInstance().getMessage("tTInfoServiceImpl-line206-1") : I18n.getInstance().getMessage("tTInfoServiceImpl-line206-2"));
206 207
207 return String.format("%s-%s-%s", vname, rq, sdesc); 208 return String.format("%s-%s-%s", vname, rq, sdesc);
208 } 209 }
src/main/java/com/bsth/service/schedule/timetable/TimetableExcelData.java
@@ -15,6 +15,7 @@ import com.bsth.service.schedule.timetable.strategy.TimetableExcelDataImportStra @@ -15,6 +15,7 @@ import com.bsth.service.schedule.timetable.strategy.TimetableExcelDataImportStra
15 import com.bsth.service.schedule.timetable.strategy.TimetableExcelDataValidateStrategy; 15 import com.bsth.service.schedule.timetable.strategy.TimetableExcelDataValidateStrategy;
16 import com.bsth.service.schedule.timetable.strategy.TimetableExcelPVDataExportStrategy; 16 import com.bsth.service.schedule.timetable.strategy.TimetableExcelPVDataExportStrategy;
17 import com.bsth.service.schedule.utils.*; 17 import com.bsth.service.schedule.utils.*;
  18 +import com.bsth.util.I18n;
18 import org.apache.commons.lang3.StringUtils; 19 import org.apache.commons.lang3.StringUtils;
19 import org.apache.poi.ss.usermodel.Sheet; 20 import org.apache.poi.ss.usermodel.Sheet;
20 import org.apache.poi.ss.usermodel.Workbook; 21 import org.apache.poi.ss.usermodel.Workbook;
@@ -75,17 +76,17 @@ public class TimetableExcelData { @@ -75,17 +76,17 @@ public class TimetableExcelData {
75 // 初始化内部标识excel单元格 76 // 初始化内部标识excel单元格
76 private void initInternalExcelCells() { 77 private void initInternalExcelCells() {
77 int rowCount = this.excelWorkBookSheet.getLastRowNum() + 1; // 基于0 base的,长度加1 78 int rowCount = this.excelWorkBookSheet.getLastRowNum() + 1; // 基于0 base的,长度加1
78 - Assert.isTrue(rowCount > 1, String.format("%s 工作区没有数据!", this.excelWorkBookSheet.getSheetName())); 79 + Assert.isTrue(rowCount > 1, String.format(I18n.getInstance().getMessage("timetableExcelData-line79"), this.excelWorkBookSheet.getSheetName()));
79 int colCount = this.excelWorkBookSheet.getRow(0).getLastCellNum(); // 不需要加1,就是长度 80 int colCount = this.excelWorkBookSheet.getRow(0).getLastCellNum(); // 不需要加1,就是长度
80 - Assert.isTrue(colCount > 0, String.format("%s 工作区第一行没有数据!", this.excelWorkBookSheet.getSheetName())); 81 + Assert.isTrue(colCount > 0, String.format(I18n.getInstance().getMessage("timetableExcelData-line81"), this.excelWorkBookSheet.getSheetName()));
81 82
82 this.internalExcelCells = new TimetableExcelInternalCell[rowCount][colCount]; 83 this.internalExcelCells = new TimetableExcelInternalCell[rowCount][colCount];
83 for (int rowNum = 0; rowNum < rowCount; rowNum ++) { 84 for (int rowNum = 0; rowNum < rowCount; rowNum ++) {
84 for (int colNum = 0; colNum < colCount; colNum ++) { 85 for (int colNum = 0; colNum < colCount; colNum ++) {
85 TimetableExcelInternalCell cell = new TimetableExcelInternalCell(); 86 TimetableExcelInternalCell cell = new TimetableExcelInternalCell();
86 String cell_con = StringUtils.trimToEmpty(PoiUtils.getStringValueFromCell( 87 String cell_con = StringUtils.trimToEmpty(PoiUtils.getStringValueFromCell(
87 - this.excelWorkBookSheet.getRow(rowNum).getCell(colNum))  
88 - .replaceAll("\\s*", "")); // trimToEmpty 88 + this.excelWorkBookSheet.getRow(rowNum).getCell(colNum)));
  89 +// .replaceAll("\\s*", "")); // 去除所有空格(由于英文版中空格有业务意义,所以不用replace)
89 90
90 // 如果站名中有类似->{数字},使用正则表达式过滤掉 91 // 如果站名中有类似->{数字},使用正则表达式过滤掉
91 cell_con = cell_con.replaceAll("(->\\d+)", ""); 92 cell_con = cell_con.replaceAll("(->\\d+)", "");
@@ -300,15 +301,15 @@ public class TimetableExcelData { @@ -300,15 +301,15 @@ public class TimetableExcelData {
300 public TimetableExcelData build() throws ScheduleException { 301 public TimetableExcelData build() throws ScheduleException {
301 // 0、检测时刻表excel业务格式 302 // 0、检测时刻表excel业务格式
302 if (this.timetableExcelFormatType == null) { 303 if (this.timetableExcelFormatType == null) {
303 - throw new ScheduleException("导入的Excel类型为空!"); 304 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelData-line304"));
304 } 305 }
305 306
306 // 1、检测excel文件,创建excel workbook对象 307 // 1、检测excel文件,创建excel workbook对象
307 // 1-1、检测文件是否存在 308 // 1-1、检测文件是否存在
308 - Assert.hasText(this.excelFilePath, "导入的Excel文件路径为空!"); 309 + Assert.hasText(this.excelFilePath, I18n.getInstance().getMessage("timetableExcelData-line309"));
309 File file = new File(this.excelFilePath); 310 File file = new File(this.excelFilePath);
310 if (!file.exists()) { 311 if (!file.exists()) {
311 - throw new ScheduleException("导入的Excel文件[" + this.excelFilePath + "]不存在!"); 312 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelData-line312", this.excelFilePath));
312 } 313 }
313 // 1-2、检测文件类型 314 // 1-2、检测文件类型
314 DataToolsFile dataToolsFile = new DataToolsFile(); 315 DataToolsFile dataToolsFile = new DataToolsFile();
@@ -318,28 +319,28 @@ public class TimetableExcelData { @@ -318,28 +319,28 @@ public class TimetableExcelData {
318 } else if (DataToolsFileType.XLSX.isThisType(file)) { 319 } else if (DataToolsFileType.XLSX.isThisType(file)) {
319 dataToolsFile.setFileType(DataToolsFileType.XLSX); 320 dataToolsFile.setFileType(DataToolsFileType.XLSX);
320 } else { 321 } else {
321 - throw new ScheduleException("导入的Excel文件[" + this.excelFilePath + "]内部不是xls,xlsx文件!"); 322 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelData-line322", this.excelFilePath));
322 } 323 }
323 // 1-3、创建workbook 324 // 1-3、创建workbook
324 this.excelWorkBook = dataToolsFile.getFileType().getWorkBook(dataToolsFile.getFile()); 325 this.excelWorkBook = dataToolsFile.getFileType().getWorkBook(dataToolsFile.getFile());
325 // 1-4、检测sheet名字 326 // 1-4、检测sheet名字
326 - Assert.hasText(this.excelSheetName, "导入的Excel sheet名字为空!"); 327 + Assert.hasText(this.excelSheetName, I18n.getInstance().getMessage("timetableExcelData-line327"));
327 this.excelWorkBookSheet = this.excelWorkBook.getSheet(this.excelSheetName); 328 this.excelWorkBookSheet = this.excelWorkBook.getSheet(this.excelSheetName);
328 if (this.excelWorkBookSheet == null) { 329 if (this.excelWorkBookSheet == null) {
329 - throw new ScheduleException("导入的Excel文件sheet[" + this.excelSheetName + "]不存在!"); 330 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelData-line330", this.excelSheetName));
330 } 331 }
331 332
332 // 2、获取线路信息,站点路由信息 333 // 2、获取线路信息,站点路由信息
333 // 2-1、线路信息 334 // 2-1、线路信息
334 - Assert.notNull(this.lineService, "线路信息service为空!");  
335 - Assert.notNull(this.lineId, "线路Id为空!"); 335 + Assert.notNull(this.lineService, I18n.getInstance().getMessage("timetableExcelData-line335"));
  336 + Assert.notNull(this.lineId, I18n.getInstance().getMessage("timetableExcelData-line336"));
336 this.line = this.lineService.findById(this.lineId); 337 this.line = this.lineService.findById(this.lineId);
337 if (this.line == null) { 338 if (this.line == null) {
338 - throw new ScheduleException("线路[id=" + this.lineId + "]不存在!"); 339 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelData-line339", String.valueOf(this.lineId)));
339 } 340 }
340 // 2-2、站点路由信息 341 // 2-2、站点路由信息
341 - Assert.notNull(this.lsStationRouteService, "站点路由信息service为空!");  
342 - Assert.notNull(this.lineRouteVersion, "线路站点路由版本为空!"); 342 + Assert.notNull(this.lsStationRouteService, I18n.getInstance().getMessage("timetableExcelData-line342"));
  343 + Assert.notNull(this.lineRouteVersion, I18n.getInstance().getMessage("timetableExcelData-line343"));
343 Map<String, Object> p1 = new HashMap<>(); 344 Map<String, Object> p1 = new HashMap<>();
344 p1.put("line.id_eq", this.lineId); 345 p1.put("line.id_eq", this.lineId);
345 p1.put("stationMark_in", "B,E"); // 起点站 346 p1.put("stationMark_in", "B,E"); // 起点站
@@ -347,21 +348,21 @@ public class TimetableExcelData { @@ -347,21 +348,21 @@ public class TimetableExcelData {
347 p1.put("versions_eq", this.lineRouteVersion); // 带线路版本 348 p1.put("versions_eq", this.lineRouteVersion); // 带线路版本
348 this.lsStationRouteList = (List<LsStationRoute>) this.lsStationRouteService.findAllByParams(p1); 349 this.lsStationRouteList = (List<LsStationRoute>) this.lsStationRouteService.findAllByParams(p1);
349 if (CollectionUtils.isEmpty(this.lsStationRouteList)) { 350 if (CollectionUtils.isEmpty(this.lsStationRouteList)) {
350 - throw new ScheduleException("线路[" + this.line.getName() + "],站点路由[版本=" + this.lineRouteVersion + "]信息为空"); 351 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelData-line351", this.line.getName(), String.valueOf(this.lineRouteVersion)));
351 } 352 }
352 353
353 // 3、获取路牌信息 354 // 3、获取路牌信息
354 - Assert.notNull(this.guideboardInfoService, "路牌信息service为空!"); 355 + Assert.notNull(this.guideboardInfoService, I18n.getInstance().getMessage("timetableExcelData-line355"));
355 p1.clear(); 356 p1.clear();
356 p1.put("xl.id_eq", this.lineId); 357 p1.put("xl.id_eq", this.lineId);
357 p1.put("isCancel_eq", false); 358 p1.put("isCancel_eq", false);
358 this.guideboardInfoList = guideboardInfoService.list(p1); 359 this.guideboardInfoList = guideboardInfoService.list(p1);
359 if (CollectionUtils.isEmpty(this.guideboardInfoList)) { 360 if (CollectionUtils.isEmpty(this.guideboardInfoList)) {
360 - throw new ScheduleException("线路[" + this.line.getName() + "]路牌信息为空!"); 361 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelData-line361", this.line.getName()));
361 } 362 }
362 363
363 // 4、验证策略类 364 // 4、验证策略类
364 - Assert.notNull(this.timetableExcelDataValidateStrategy, "时刻表excel验证策略类为空!"); 365 + Assert.notNull(this.timetableExcelDataValidateStrategy, I18n.getInstance().getMessage("timetableExcelData-line365"));
365 366
366 return new TimetableExcelData(this); 367 return new TimetableExcelData(this);
367 } 368 }
@@ -468,7 +469,7 @@ public class TimetableExcelData { @@ -468,7 +469,7 @@ public class TimetableExcelData {
468 469
469 public TimetableExcelData build() throws ScheduleException { 470 public TimetableExcelData build() throws ScheduleException {
470 // 0、验证策略类 471 // 0、验证策略类
471 - Assert.notNull(this.timetableExcelDataImportStrategy, "时刻表excel导入策略类为空!"); 472 + Assert.notNull(this.timetableExcelDataImportStrategy, I18n.getInstance().getMessage("timetableExcelData-line472"));
472 473
473 // 注意:这里不做其他验证,业务上导入前必须验证的(调用验证用的builder) 474 // 注意:这里不做其他验证,业务上导入前必须验证的(调用验证用的builder)
474 File file = new File(this.excelFilePath); 475 File file = new File(this.excelFilePath);
@@ -548,20 +549,20 @@ public class TimetableExcelData { @@ -548,20 +549,20 @@ public class TimetableExcelData {
548 549
549 public TimetableExcelData build() { 550 public TimetableExcelData build() {
550 // 1、参数验证 551 // 1、参数验证
551 - Assert.notNull(this.ttInfoId, "时刻表Id为空!");  
552 - Assert.notNull(ttInfoRepository, "时刻表repo为空!");  
553 - Assert.notNull(ttInfoDetailRepository, "时刻表明细repo为空!");  
554 - Assert.notNull(timetableExcelPVDataExportStrategy, "时刻表预览excel数据导出策略为空!"); 552 + Assert.notNull(this.ttInfoId, I18n.getInstance().getMessage("timetableExcelData-line552"));
  553 + Assert.notNull(ttInfoRepository, I18n.getInstance().getMessage("timetableExcelData-line553"));
  554 + Assert.notNull(ttInfoDetailRepository, I18n.getInstance().getMessage("timetableExcelData-line554"));
  555 + Assert.notNull(timetableExcelPVDataExportStrategy, I18n.getInstance().getMessage("timetableExcelData-line555"));
555 556
556 // 2、获取时刻表数据 557 // 2、获取时刻表数据
557 this.ttInfo = this.ttInfoRepository.findOneExtend(this.ttInfoId); 558 this.ttInfo = this.ttInfoRepository.findOneExtend(this.ttInfoId);
558 - Assert.notNull(this.ttInfo, "时刻表[id=" + this.ttInfoId + "]未找到!"); 559 + Assert.notNull(this.ttInfo, I18n.getInstance().getMessage("timetableExcelData-line559", String.valueOf(this.ttInfoId)));
559 560
560 // 3、获取时刻表明细数据 561 // 3、获取时刻表明细数据
561 this.ttInfoDetailList = this.ttInfoDetailRepository.findByTtinfoId(this.ttInfoId); 562 this.ttInfoDetailList = this.ttInfoDetailRepository.findByTtinfoId(this.ttInfoId);
562 563
563 // 4、计算导出文件路径 564 // 4、计算导出文件路径
564 - Assert.notNull(this.dataToolsProperties, "dataTools配置文件类为空!"); 565 + Assert.notNull(this.dataToolsProperties, I18n.getInstance().getMessage("timetableExcelData-line565"));
565 this.pvExportFilePath = dataToolsProperties.getFileoutputDir() + 566 this.pvExportFilePath = dataToolsProperties.getFileoutputDir() +
566 File.separator + 567 File.separator +
567 ttInfo.getName() + "预览信息-" + 568 ttInfo.getName() + "预览信息-" +
src/main/java/com/bsth/service/schedule/timetable/strategy/impl/TimetableExcelDataImportStrategyImpl.java
@@ -6,6 +6,7 @@ import com.bsth.service.schedule.timetable.TimetableExcelFormatType; @@ -6,6 +6,7 @@ import com.bsth.service.schedule.timetable.TimetableExcelFormatType;
6 import com.bsth.service.schedule.timetable.strategy.TimetableExcelDataImportStrategy; 6 import com.bsth.service.schedule.timetable.strategy.TimetableExcelDataImportStrategy;
7 import com.bsth.service.schedule.utils.DataToolsProperties; 7 import com.bsth.service.schedule.utils.DataToolsProperties;
8 import com.bsth.service.schedule.utils.DataToolsService; 8 import com.bsth.service.schedule.utils.DataToolsService;
  9 +import com.bsth.util.I18n;
9 import jxl.write.Label; 10 import jxl.write.Label;
10 import jxl.write.WritableSheet; 11 import jxl.write.WritableSheet;
11 import jxl.write.WritableWorkbook; 12 import jxl.write.WritableWorkbook;
@@ -17,6 +18,7 @@ import org.slf4j.LoggerFactory; @@ -17,6 +18,7 @@ import org.slf4j.LoggerFactory;
17 import java.io.File; 18 import java.io.File;
18 import java.util.ArrayList; 19 import java.util.ArrayList;
19 import java.util.List; 20 import java.util.List;
  21 +import java.util.Locale;
20 import java.util.Map; 22 import java.util.Map;
21 23
22 /** 24 /**
@@ -58,14 +60,14 @@ public class TimetableExcelDataImportStrategyImpl implements TimetableExcelDataI @@ -58,14 +60,14 @@ public class TimetableExcelDataImportStrategyImpl implements TimetableExcelDataI
58 // 2-1-2、如果导入格式是Dynamic,忽略指定列 60 // 2-1-2、如果导入格式是Dynamic,忽略指定列
59 if (timetableExcelFormatType == TimetableExcelFormatType.Dynamic) { 61 if (timetableExcelFormatType == TimetableExcelFormatType.Dynamic) {
60 if ("报到".equals(cell.cellContent) || 62 if ("报到".equals(cell.cellContent) ||
61 - "$$$$$${txt-4502}".equals(cell.cellContent) ||  
62 - "$$$$$${txt-4501}".equals(cell.cellContent) ||  
63 - "$$$$$${txt-3536}".equals(cell.cellContent) ||  
64 - "$$$$$${txt-4405}".equals(cell.cellContent) ||  
65 - "$$$$$${txt-2437}".equals(cell.cellContent) ||  
66 - "$$$$$${txt-4496}".equals(cell.cellContent) ||  
67 - "$$$$$${txt-4406}".equals(cell.cellContent) ||  
68 - "$$$$$${txt-2783}".equals(cell.cellContent)) { 63 + I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line62_txt-4502").equals(cell.cellContent) ||
  64 + I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line63_txt-4501").equals(cell.cellContent) ||
  65 + I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line64_txt-3536").equals(cell.cellContent) ||
  66 + I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line65_txt-4405").equals(cell.cellContent) ||
  67 + I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line66_txt-2437").equals(cell.cellContent) ||
  68 + I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line67_txt-4496").equals(cell.cellContent) ||
  69 + I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line68_txt-4406").equals(cell.cellContent) ||
  70 + I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line69_txt-2783").equals(cell.cellContent)) {
69 // 这些列都忽略,不参与计算 71 // 这些列都忽略,不参与计算
70 cell.isEnable = false; 72 cell.isEnable = false;
71 } 73 }
@@ -141,36 +143,69 @@ public class TimetableExcelDataImportStrategyImpl implements TimetableExcelDataI @@ -141,36 +143,69 @@ public class TimetableExcelDataImportStrategyImpl implements TimetableExcelDataI
141 ktrParams.put("filepath", fileCal.getAbsolutePath()); 143 ktrParams.put("filepath", fileCal.getAbsolutePath());
142 } catch (Exception exp) { 144 } catch (Exception exp) {
143 exp.printStackTrace(); 145 exp.printStackTrace();
144 - throw new ScheduleException("$$$$$${txt-2115}异常!"); 146 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line145_txt-2115"));
145 } 147 }
146 148
147 // 3-3、计算ktr路径相关参数 149 // 3-3、计算ktr路径相关参数
148 try { 150 try {
  151 + String country = Locale.getDefault().getLanguage();
149 // 元数据ktr 152 // 元数据ktr
150 - File mktrFile = new File(this.getClass().getResource(  
151 - dataToolsProperties.getTtinfodetailMetadatainputktr()).toURI()); 153 + File mktrFile;
  154 + if ("zh".equals(country)) {
  155 + mktrFile = new File(this.getClass().getResource(
  156 + dataToolsProperties.getZhTtinfoDetailMetaDataForImport()).toURI());
  157 + } else if ("en".equals(country)) {
  158 + mktrFile = new File(this.getClass().getResource(
  159 + dataToolsProperties.getEnTtinfoDetailMetaDataForImport()).toURI());
  160 + } else {
  161 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  162 + }
152 ktrParams.put("transpath", mktrFile.getAbsolutePath()); 163 ktrParams.put("transpath", mktrFile.getAbsolutePath());
153 164
154 // 实际数据ktr 165 // 实际数据ktr
155 if (timetableExcelFormatType == TimetableExcelFormatType.Normal) { 166 if (timetableExcelFormatType == TimetableExcelFormatType.Normal) {
156 - File normal_ktrFile = new File(this.getClass().getResource(  
157 - dataToolsProperties.getTtinfodetailDatainputktr2version()).toURI()); 167 + File normal_ktrFile;
  168 + if ("zh".equals(country)) {
  169 + normal_ktrFile = new File(this.getClass().getResource(
  170 + dataToolsProperties.getZhTtinfoDetailDataImportOfNormal()).toURI());
  171 + } else if ("en".equals(country)) {
  172 + normal_ktrFile = new File(this.getClass().getResource(
  173 + dataToolsProperties.getEnTtinfoDetailDataImportOfNormal()).toURI());
  174 + } else {
  175 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  176 + }
158 ktrParams.put("injectktrfile", normal_ktrFile.getAbsolutePath()); 177 ktrParams.put("injectktrfile", normal_ktrFile.getAbsolutePath());
159 } else if (timetableExcelFormatType == TimetableExcelFormatType.NormalWithGs) { 178 } else if (timetableExcelFormatType == TimetableExcelFormatType.NormalWithGs) {
160 - File noramlwithgs_ktrFile = new File(this.getClass().getResource(  
161 - dataToolsProperties.getTtinfodetailDatainputktr2normalwithgs()).toURI());  
162 - ktrParams.put("injectktrfile", noramlwithgs_ktrFile.getAbsolutePath()); 179 + File normalwithgs_ktrFile;
  180 + if ("zh".equals(country)) {
  181 + normalwithgs_ktrFile = new File(this.getClass().getResource(
  182 + dataToolsProperties.getZhTtinfoDetailDataImportOfNormalWithGs()).toURI());
  183 + } else if ("en".equals(country)) {
  184 + normalwithgs_ktrFile = new File(this.getClass().getResource(
  185 + dataToolsProperties.getEnTtinfoDetailDataImportOfNormalWithGs()).toURI());
  186 + } else {
  187 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  188 + }
  189 + ktrParams.put("injectktrfile", normalwithgs_ktrFile.getAbsolutePath());
163 } else if (timetableExcelFormatType == TimetableExcelFormatType.Dynamic) { 190 } else if (timetableExcelFormatType == TimetableExcelFormatType.Dynamic) {
164 - File dynamic_ktrFile = new File(this.getClass().getResource(  
165 - dataToolsProperties.getTtinfodetailDatainputktr2version2()).toURI()); 191 + File dynamic_ktrFile;
  192 + if ("zh".equals(country)) {
  193 + dynamic_ktrFile = new File(this.getClass().getResource(
  194 + dataToolsProperties.getZhTtinfoDetailDataImportOfDynamic()).toURI());
  195 + } else if ("en".equals(country)) {
  196 + dynamic_ktrFile = new File(this.getClass().getResource(
  197 + dataToolsProperties.getEnTtinfoDetailDataImportOfDynamic()).toURI());
  198 + } else {
  199 + throw new Exception("not found Local[" + country + "] corresponding ktr.");
  200 + }
166 ktrParams.put("injectktrfile", dynamic_ktrFile.getAbsolutePath()); 201 ktrParams.put("injectktrfile", dynamic_ktrFile.getAbsolutePath());
167 } else { 202 } else {
168 - throw new ScheduleException("未知的TimetableExcelFormatType格式[" + timetableExcelFormatType + "]"); 203 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line203", timetableExcelFormatType.getDesc()));
169 } 204 }
170 205
171 } catch (Exception exp) { 206 } catch (Exception exp) {
172 exp.printStackTrace(); 207 exp.printStackTrace();
173 - throw new ScheduleException("$$$$$${txt-2115}异常!"); 208 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelDataImportStrategyImpl_line208_txt-2115"));
174 } 209 }
175 210
176 // 3-4、执行ktr 211 // 3-4、执行ktr
src/main/java/com/bsth/service/schedule/timetable/strategy/impl/TimetableExcelDataValidateStrategyImpl.java
@@ -7,6 +7,7 @@ import com.bsth.service.schedule.exception.ScheduleException; @@ -7,6 +7,7 @@ import com.bsth.service.schedule.exception.ScheduleException;
7 import com.bsth.service.schedule.timetable.TimetableExcelFormatType; 7 import com.bsth.service.schedule.timetable.TimetableExcelFormatType;
8 import com.bsth.service.schedule.timetable.TimetableExcelData.TimetableExcelInternalCell; 8 import com.bsth.service.schedule.timetable.TimetableExcelData.TimetableExcelInternalCell;
9 import com.bsth.service.schedule.timetable.strategy.TimetableExcelDataValidateStrategy; 9 import com.bsth.service.schedule.timetable.strategy.TimetableExcelDataValidateStrategy;
  10 +import com.bsth.util.I18n;
10 import org.apache.commons.lang3.StringUtils; 11 import org.apache.commons.lang3.StringUtils;
11 import org.springframework.util.CollectionUtils; 12 import org.springframework.util.CollectionUtils;
12 13
@@ -47,7 +48,7 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -47,7 +48,7 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
47 Line line, 48 Line line,
48 List<LsStationRoute> lsStationRouteList) throws ScheduleException { 49 List<LsStationRoute> lsStationRouteList) throws ScheduleException {
49 if (StringUtils.isEmpty(routeName)) { 50 if (StringUtils.isEmpty(routeName)) {
50 - throw new ScheduleException(String.format("第1行,第%d列数据不能为空", colNum + 1)); 51 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line51"), colNum + 1));
51 } 52 }
52 53
53 List<LsStationRoute> lsStationRoutes = new ArrayList<>(); 54 List<LsStationRoute> lsStationRoutes = new ArrayList<>();
@@ -58,13 +59,13 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -58,13 +59,13 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
58 } 59 }
59 60
60 if (CollectionUtils.isEmpty(lsStationRoutes)) { 61 if (CollectionUtils.isEmpty(lsStationRoutes)) {
61 - throw new ScheduleException(String.format("第1行,第%d列数据%s在%s站点路由中不是起点站", 62 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line62"),
62 colNum + 1, routeName, line.getName())); 63 colNum + 1, routeName, line.getName()));
63 } else if (lsStationRoutes.size() > 1) { 64 } else if (lsStationRoutes.size() > 1) {
64 - throw new ScheduleException(String.format("第1行,第%d列数据%s在%s站点路由中上下行都是起点站", 65 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line65"),
65 colNum + 1, routeName, line.getName())); 66 colNum + 1, routeName, line.getName()));
66 } else if (StringUtils.isEmpty(lsStationRoutes.get(0).getStationCode())) { 67 } else if (StringUtils.isEmpty(lsStationRoutes.get(0).getStationCode())) {
67 - throw new ScheduleException(String.format("第1行,第%d列数据%s在%s站点路由中没有站点编码", 68 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line68"),
68 colNum + 1, routeName, line.getName())); 69 colNum + 1, routeName, line.getName()));
69 } 70 }
70 71
@@ -77,7 +78,7 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -77,7 +78,7 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
77 Line line, 78 Line line,
78 List<GuideboardInfo> guideboardInfoList) throws ScheduleException { 79 List<GuideboardInfo> guideboardInfoList) throws ScheduleException {
79 if (StringUtils.isEmpty(guideboardName)) { 80 if (StringUtils.isEmpty(guideboardName)) {
80 - throw new ScheduleException(String.format("第%d行,第1列路牌无数据", rowNum + 1)); 81 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line81"), rowNum + 1));
81 } 82 }
82 83
83 List<GuideboardInfo> guideboardInfos = new ArrayList<>(); 84 List<GuideboardInfo> guideboardInfos = new ArrayList<>();
@@ -88,10 +89,10 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -88,10 +89,10 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
88 } 89 }
89 90
90 if (CollectionUtils.isEmpty(guideboardInfos)) { 91 if (CollectionUtils.isEmpty(guideboardInfos)) {
91 - throw new ScheduleException(String.format("第%d行,第1列的路牌在%s中不存在", 92 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line92"),
92 rowNum + 1, line.getName())); 93 rowNum + 1, line.getName()));
93 } else if (guideboardInfos.size() > 1) { 94 } else if (guideboardInfos.size() > 1) {
94 - throw new ScheduleException(String.format("第%d行,第1列的路牌在%s中重复", 95 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line95"),
95 rowNum + 1, line.getName())); 96 rowNum + 1, line.getName()));
96 } 97 }
97 } 98 }
@@ -115,7 +116,7 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -115,7 +116,7 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
115 Matcher m3 = p3.matcher(fcsjContent.trim()); 116 Matcher m3 = p3.matcher(fcsjContent.trim());
116 boolean expected = m1.matches() || m2.matches() || m3.matches(); 117 boolean expected = m1.matches() || m2.matches() || m3.matches();
117 if (!expected) { 118 if (!expected) {
118 - throw new ScheduleException(String.format("第%d行,第%d列的发车时间格式不正确,格式应为hh:mm或hh,mm或hhmm", 119 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line119"),
119 rowNum + 1, colNum + 1)); 120 rowNum + 1, colNum + 1));
120 } 121 }
121 } else if (timetableExcelFormatType == TimetableExcelFormatType.Dynamic) { 122 } else if (timetableExcelFormatType == TimetableExcelFormatType.Dynamic) {
@@ -124,11 +125,11 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -124,11 +125,11 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
124 boolean expected = m1.matches() || m2.matches(); 125 boolean expected = m1.matches() || m2.matches();
125 if (!expected) { 126 if (!expected) {
126 throw new ScheduleException(String.format( 127 throw new ScheduleException(String.format(
127 - "第%d行,第%d列的发车时间格式不正确,格式应为(报|出)hh:mm或hh:mm(X|※)", 128 + I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line128"),
128 rowNum + 1, colNum + 1)); 129 rowNum + 1, colNum + 1));
129 } 130 }
130 } else { 131 } else {
131 - throw new ScheduleException(String.format("未知的导入格式[%s]", timetableExcelFormatType.getDesc())); 132 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line132"), timetableExcelFormatType.getDesc()));
132 } 133 }
133 } 134 }
134 135
@@ -138,12 +139,12 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -138,12 +139,12 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
138 Matcher m1 = p5.matcher(gsContent.trim()); 139 Matcher m1 = p5.matcher(gsContent.trim());
139 boolean expected = m1.matches(); 140 boolean expected = m1.matches();
140 if (!expected) { 141 if (!expected) {
141 - throw new ScheduleException(String.format("第%d行,第%d列的工时格式不正确,格式应为整数或浮点数", 142 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line142"),
142 rowNum + 1, colNum + 1)); 143 rowNum + 1, colNum + 1));
143 } 144 }
144 Double gs = new Double(gsContent.trim()); 145 Double gs = new Double(gsContent.trim());
145 if (gs < 0) { 146 if (gs < 0) {
146 - throw new ScheduleException(String.format("第%d行,第%d列的工时值必须大于0", 147 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line147"),
147 rowNum + 1, colNum + 1)); 148 rowNum + 1, colNum + 1));
148 } 149 }
149 } 150 }
@@ -168,7 +169,7 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -168,7 +169,7 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
168 int rowCount = internalExcelCells.length; 169 int rowCount = internalExcelCells.length;
169 int colCount = internalExcelCells[0].length; 170 int colCount = internalExcelCells[0].length;
170 if (rowCount <= 1 || colCount <= 1) { 171 if (rowCount <= 1 || colCount <= 1) {
171 - throw new ScheduleException("工作区至少包含2行2列的数据"); 172 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line172"));
172 } 173 }
173 174
174 // 2、验证单元格信息 175 // 2、验证单元格信息
@@ -179,16 +180,16 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -179,16 +180,16 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
179 180
180 // 2-1-1、第一行,第一列必须路牌2个字 181 // 2-1-1、第一行,第一列必须路牌2个字
181 if (colNum == 0) { 182 if (colNum == 0) {
182 - if (!"$$$$$${txt-4022}".equals(cell.cellContent)) {  
183 - throw new ScheduleException("第1行,第1列数据必须是路牌2个字"); 183 + if (!I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line183").equals(cell.cellContent)) {
  184 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line184"));
184 } 185 }
185 cell.isLpNameCell = true; 186 cell.isLpNameCell = true;
186 continue; 187 continue;
187 } 188 }
188 // 2-1-1-1、如果导入格式是NormalWithGs,第一行,第二列必须工时2个字 189 // 2-1-1-1、如果导入格式是NormalWithGs,第一行,第二列必须工时2个字
189 if (colNum == 1 && timetableExcelFormatType == TimetableExcelFormatType.NormalWithGs) { 190 if (colNum == 1 && timetableExcelFormatType == TimetableExcelFormatType.NormalWithGs) {
190 - if (!"$$$$$${txt-4214}".equals(cell.cellContent)) {  
191 - throw new ScheduleException("第1行,第2列数据必须是工时2个字"); 191 + if (!I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line191").equals(cell.cellContent)) {
  192 + throw new ScheduleException(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line192"));
192 } 193 }
193 cell.isGsCell = true; 194 cell.isGsCell = true;
194 continue; 195 continue;
@@ -196,15 +197,15 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -196,15 +197,15 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
196 197
197 // 2-1-2、如果导入格式是Dynamic,忽略指定列 198 // 2-1-2、如果导入格式是Dynamic,忽略指定列
198 if (timetableExcelFormatType == TimetableExcelFormatType.Dynamic) { 199 if (timetableExcelFormatType == TimetableExcelFormatType.Dynamic) {
199 - if ("报到".equals(cell.cellContent) ||  
200 - "$$$$$${txt-4502}".equals(cell.cellContent) ||  
201 - "$$$$$${txt-4501}".equals(cell.cellContent) ||  
202 - "$$$$$${txt-3536}".equals(cell.cellContent) ||  
203 - "$$$$$${txt-4405}".equals(cell.cellContent) ||  
204 - "$$$$$${txt-2437}".equals(cell.cellContent) ||  
205 - "$$$$$${txt-4496}".equals(cell.cellContent) ||  
206 - "$$$$$${txt-4406}".equals(cell.cellContent) ||  
207 - "$$$$$${txt-2783}".equals(cell.cellContent)) { 200 + if (I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line200").equals(cell.cellContent) ||
  201 + I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line201").equals(cell.cellContent) ||
  202 + I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line202").equals(cell.cellContent) ||
  203 + I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line203").equals(cell.cellContent) ||
  204 + I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line204").equals(cell.cellContent) ||
  205 + I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line205").equals(cell.cellContent) ||
  206 + I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line206").equals(cell.cellContent) ||
  207 + I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line207").equals(cell.cellContent) ||
  208 + I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line208").equals(cell.cellContent)) {
208 // 这些列都忽略,不参与计算 209 // 这些列都忽略,不参与计算
209 cell.isEnable = false; 210 cell.isEnable = false;
210 continue; 211 continue;
@@ -212,12 +213,12 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -212,12 +213,12 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
212 } 213 }
213 214
214 // 2-1-3、出场,进场班次,不验证路由 215 // 2-1-3、出场,进场班次,不验证路由
215 - if ("$$$$$${txt-3989}".equals(cell.cellContent)) { 216 + if (I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line216").equals(cell.cellContent)) {
216 cell.isBc = true; 217 cell.isBc = true;
217 cell.isOutBc = true; 218 cell.isOutBc = true;
218 continue; 219 continue;
219 } 220 }
220 - if ("$$$$$${txt-3990}".equals(cell.cellContent)) { 221 + if (I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line221").equals(cell.cellContent)) {
221 cell.isBc = true; 222 cell.isBc = true;
222 cell.isInBc = true; 223 cell.isInBc = true;
223 continue; 224 continue;
@@ -238,9 +239,9 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -238,9 +239,9 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
238 for (int rowNum = 1; rowNum < rowCount; rowNum ++) { 239 for (int rowNum = 1; rowNum < rowCount; rowNum ++) {
239 TimetableExcelInternalCell cell = internalExcelCells[rowNum][0]; 240 TimetableExcelInternalCell cell = internalExcelCells[rowNum][0];
240 if (StringUtils.isEmpty(cell.cellContent)) { 241 if (StringUtils.isEmpty(cell.cellContent)) {
241 - throw new ScheduleException(String.format("第%d行,第1列路牌无数据", rowNum + 1)); 242 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line242"), rowNum + 1));
242 } else if (gbIndexMap.get(cell.cellContent) != null) { 243 } else if (gbIndexMap.get(cell.cellContent) != null) {
243 - throw new ScheduleException(String.format("第%d行,第1列的路牌数据与第%d行,第1列数据重复", 244 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line244"),
244 rowNum + 1, 245 rowNum + 1,
245 gbIndexMap.get(cell.cellContent))); 246 gbIndexMap.get(cell.cellContent)));
246 } else { 247 } else {
@@ -267,7 +268,7 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat @@ -267,7 +268,7 @@ public class TimetableExcelDataValidateStrategyImpl implements TimetableExcelDat
267 this.validateGsContentCell(rowNum, colNum, cell.cellContent); 268 this.validateGsContentCell(rowNum, colNum, cell.cellContent);
268 } 269 }
269 } else { 270 } else {
270 - throw new ScheduleException(String.format("第%d行,第%d列的单元格内容既不是发车时间,也不是工时!", 271 + throw new ScheduleException(String.format(I18n.getInstance().getMessage("timetableExcelDataValidateStrategyImpl-line271"),
271 rowNum + 1, colNum + 1)); 272 rowNum + 1, colNum + 1));
272 } 273 }
273 } 274 }
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
@@ -11,7 +11,8 @@ import javax.validation.constraints.NotNull; @@ -11,7 +11,8 @@ import javax.validation.constraints.NotNull;
11 */ 11 */
12 @Component 12 @Component
13 @ConfigurationProperties( 13 @ConfigurationProperties(
14 - ignoreInvalidFields = true, 14 + ignoreInvalidFields = false,
  15 + ignoreUnknownFields = false,
15 prefix = "datatools" 16 prefix = "datatools"
16 ) 17 )
17 @PropertySource("classpath:datatools/config-${spring.profiles.active}.properties") 18 @PropertySource("classpath:datatools/config-${spring.profiles.active}.properties")
@@ -38,353 +39,508 @@ public class DataToolsProperties { @@ -38,353 +39,508 @@ public class DataToolsProperties {
38 @NotNull 39 @NotNull
39 private String kettleProperties; 40 private String kettleProperties;
40 41
41 - /** ktr通用变量-数据库ip地址 */ 42 + //---------------------------- 时刻表数据相关ktr(以下)----------------------------//
  43 + /** 时刻表数据导出用于编辑(英文) */
42 @NotNull 44 @NotNull
43 - private String kvarsDbip;  
44 - /** ktr通用变量-数据库用户名 */ 45 + private String enTtinfoDetailDataExportForEdit;
  46 + /** 时刻表数据导出用于编辑(中文) */
45 @NotNull 47 @NotNull
46 - private String kvarsDbuname;  
47 - /** ktr通用变量-数据库密码 */  
48 - @NotNull  
49 - private String kvarsDbpwd;  
50 - /** ktr通用变量-数据库库名 */  
51 - private String kvarsDbdname; 48 + private String zhTtinfoDetailDataExportForEdit;
52 49
53 - //------------------------- 导入数据ktr --------------------------//  
54 - /** 车辆信息导入ktr转换 */  
55 - @NotNull  
56 - private String carsDatainputktr;  
57 - /** 人员信息导入ktr转换 */  
58 - @NotNull  
59 - private String employeesDatainputktr;  
60 - /** 车辆配置信息导入 */ 50 + /** 时刻表数据导出用元数据(英文) */
61 @NotNull 51 @NotNull
62 - private String carsconfigDatainputktr;  
63 - /** 人员配置信息导入 */ 52 + private String enTtinfoDetailMetaDataForExport;
  53 + /** 时刻表数据导出(英文) */
64 @NotNull 54 @NotNull
65 - private String employeesconfigDatainputktr;  
66 - /** 路牌信息导入 */ 55 + private String enTtinfoDetailDataExport;
  56 + /** 时刻表数据导出用元数据(中文) */
67 @NotNull 57 @NotNull
68 - private String guideboardsDatainputktr;  
69 - /** 时刻表基础信息导入 */ 58 + private String zhTtinfoDetailMetaDataForExport;
  59 + /** 时刻表数据导出(中文) */
70 @NotNull 60 @NotNull
71 - private String ttinfoDatainputktr;  
72 - /** 时刻表明细信息导入(元数据) */ 61 + private String zhTtinfoDetailDataExport;
  62 + /** 时刻表数据导入用元数据(英文) */
73 @NotNull 63 @NotNull
74 - private String ttinfodetailMetadatainputktr;  
75 - /** 时刻表明细编辑用数据 */ 64 + private String enTtinfoDetailMetaDataForImport;
  65 + /** 时刻表数据导入用元数据(中文) */
76 @NotNull 66 @NotNull
77 - private String ttinfodetailForeditktr;  
78 - /** 时刻表明细信息导入 */ 67 + private String zhTtinfoDetailMetaDataForImport;
  68 + /** 时刻表数据导入-动态导入格式(英文) */
79 @NotNull 69 @NotNull
80 - private String ttinfodetailDatainputktr;  
81 - /** 时刻表明细信息导入2 */ 70 + private String enTtinfoDetailDataImportOfDynamic;
  71 + /** 时刻表数据导入-动态导入格式(中文) */
82 @NotNull 72 @NotNull
83 - private String ttinfodetailDatainputktr2;  
84 - /** 时刻表明细信息导入2(带版本) */ 73 + private String zhTtinfoDetailDataImportOfDynamic;
  74 + /** 时刻表数据导入-普通导入格式(英文) */
85 @NotNull 75 @NotNull
86 - private String ttinfodetailDatainputktr2version;  
87 - /** 时刻表明细信息导入2(带版本),使用生成时刻表格式 */ 76 + private String enTtinfoDetailDataImportOfNormal;
  77 + /** 时刻表数据导入-普通导入格式(中文) */
88 @NotNull 78 @NotNull
89 - private String ttinfodetailDatainputktr2version2;  
90 - /** 时刻表明细信息导入2,一般格式(路牌列后加一列工时列)参看 TimetableExcelFormatType */ 79 + private String zhTtinfoDetailDataImportOfNormal;
  80 + /** 时刻表数据导入-普通带工时导入格式(英文) */
91 @NotNull 81 @NotNull
92 - private String ttinfodetailDatainputktr2normalwithgs;  
93 - /** 排班规则信息导入 */ 82 + private String enTtinfoDetailDataImportOfNormalWithGs;
  83 + /** 时刻表数据导入-普通带工时导入格式(中文) */
94 @NotNull 84 @NotNull
95 - private String scheduleruleDatainputktr; 85 + private String zhTtinfoDetailDataImportOfNormalWithGs;
96 86
  87 + public String getEnTtinfoDetailMetaDataForImport() {
  88 + return enTtinfoDetailMetaDataForImport;
  89 + }
97 90
98 - //------------------------- 导出数据ktr --------------------------//  
99 - /** 车辆信息导出ktr转换 */  
100 - @NotNull  
101 - private String carsDataoutputktr;  
102 - /** 人员信息导出ktr转换 */  
103 - @NotNull  
104 - private String employeesDataoutputktr;  
105 - /** 时刻表导出元数据ktr转换 */  
106 - @NotNull  
107 - private String ttinfodetailMetaoutput;  
108 - /** 时刻表导出数据ktr转换 */  
109 - @NotNull  
110 - private String ttinfodetailOutput;  
111 - @NotNull  
112 - /** 排版规则导出数据ktr转换 */  
113 - private String scheduleruleOutput;  
114 - @NotNull  
115 - /** 车辆配置信息导出ktr转换 */  
116 - private String carsconfigDataoutputktr;  
117 - @NotNull  
118 - /** 人员配置信息导出ktr转换 */  
119 - private String employeesconfigDataoutputktr;  
120 - @NotNull  
121 - /** 路牌信息导出 */  
122 - private String guideboardsDataoutputktr; 91 + public void setEnTtinfoDetailMetaDataForImport(String enTtinfoDetailMetaDataForImport) {
  92 + this.enTtinfoDetailMetaDataForImport = enTtinfoDetailMetaDataForImport;
  93 + }
123 94
124 - //------------------------ 数据同步ktr -----------------------//  
125 - @NotNull  
126 - /** 车辆信息同步 */  
127 - private String vehicleDatasyncktr;  
128 - @NotNull  
129 - /** 浦东车辆库车辆数据接口地址 */  
130 - private String carsInterface; 95 + public String getZhTtinfoDetailMetaDataForImport() {
  96 + return zhTtinfoDetailMetaDataForImport;
  97 + }
131 98
132 - // TODO: 99 + public void setZhTtinfoDetailMetaDataForImport(String zhTtinfoDetailMetaDataForImport) {
  100 + this.zhTtinfoDetailMetaDataForImport = zhTtinfoDetailMetaDataForImport;
  101 + }
133 102
134 - public String getFileuploadDir() {  
135 - return fileuploadDir; 103 + public String getEnTtinfoDetailDataImportOfDynamic() {
  104 + return enTtinfoDetailDataImportOfDynamic;
136 } 105 }
137 106
138 - public void setFileuploadDir(String fileuploadDir) {  
139 - this.fileuploadDir = fileuploadDir; 107 + public void setEnTtinfoDetailDataImportOfDynamic(String enTtinfoDetailDataImportOfDynamic) {
  108 + this.enTtinfoDetailDataImportOfDynamic = enTtinfoDetailDataImportOfDynamic;
140 } 109 }
141 110
142 - public String getTransErrordir() {  
143 - return transErrordir; 111 + public String getZhTtinfoDetailDataImportOfDynamic() {
  112 + return zhTtinfoDetailDataImportOfDynamic;
144 } 113 }
145 114
146 - public void setTransErrordir(String transErrordir) {  
147 - this.transErrordir = transErrordir; 115 + public void setZhTtinfoDetailDataImportOfDynamic(String zhTtinfoDetailDataImportOfDynamic) {
  116 + this.zhTtinfoDetailDataImportOfDynamic = zhTtinfoDetailDataImportOfDynamic;
148 } 117 }
149 118
150 - public String getCarsDatainputktr() {  
151 - return carsDatainputktr; 119 + public String getEnTtinfoDetailDataImportOfNormal() {
  120 + return enTtinfoDetailDataImportOfNormal;
152 } 121 }
153 122
154 - public String getTtinfodetailMetadatainputktr() {  
155 - return ttinfodetailMetadatainputktr; 123 + public void setEnTtinfoDetailDataImportOfNormal(String enTtinfoDetailDataImportOfNormal) {
  124 + this.enTtinfoDetailDataImportOfNormal = enTtinfoDetailDataImportOfNormal;
156 } 125 }
157 126
158 - public void setTtinfodetailMetadatainputktr(String ttinfodetailMetadatainputktr) {  
159 - this.ttinfodetailMetadatainputktr = ttinfodetailMetadatainputktr; 127 + public String getZhTtinfoDetailDataImportOfNormal() {
  128 + return zhTtinfoDetailDataImportOfNormal;
160 } 129 }
161 130
162 - public void setCarsDatainputktr(String carsDatainputktr) {  
163 - this.carsDatainputktr = carsDatainputktr; 131 + public void setZhTtinfoDetailDataImportOfNormal(String zhTtinfoDetailDataImportOfNormal) {
  132 + this.zhTtinfoDetailDataImportOfNormal = zhTtinfoDetailDataImportOfNormal;
164 } 133 }
165 134
166 - public String getEmployeesDatainputktr() {  
167 - return employeesDatainputktr; 135 + public String getEnTtinfoDetailDataImportOfNormalWithGs() {
  136 + return enTtinfoDetailDataImportOfNormalWithGs;
168 } 137 }
169 138
170 - public void setEmployeesDatainputktr(String employeesDatainputktr) {  
171 - this.employeesDatainputktr = employeesDatainputktr; 139 + public void setEnTtinfoDetailDataImportOfNormalWithGs(String enTtinfoDetailDataImportOfNormalWithGs) {
  140 + this.enTtinfoDetailDataImportOfNormalWithGs = enTtinfoDetailDataImportOfNormalWithGs;
172 } 141 }
173 142
174 - public String getCarsconfigDatainputktr() {  
175 - return carsconfigDatainputktr; 143 + public String getZhTtinfoDetailDataImportOfNormalWithGs() {
  144 + return zhTtinfoDetailDataImportOfNormalWithGs;
176 } 145 }
177 146
178 - public void setCarsconfigDatainputktr(String carsconfigDatainputktr) {  
179 - this.carsconfigDatainputktr = carsconfigDatainputktr; 147 + public void setZhTtinfoDetailDataImportOfNormalWithGs(String zhTtinfoDetailDataImportOfNormalWithGs) {
  148 + this.zhTtinfoDetailDataImportOfNormalWithGs = zhTtinfoDetailDataImportOfNormalWithGs;
180 } 149 }
181 150
182 - public String getEmployeesconfigDatainputktr() {  
183 - return employeesconfigDatainputktr; 151 + public String getEnTtinfoDetailMetaDataForExport() {
  152 + return enTtinfoDetailMetaDataForExport;
184 } 153 }
185 154
186 - public void setEmployeesconfigDatainputktr(String employeesconfigDatainputktr) {  
187 - this.employeesconfigDatainputktr = employeesconfigDatainputktr; 155 + public void setEnTtinfoDetailMetaDataForExport(String enTtinfoDetailMetaDataForExport) {
  156 + this.enTtinfoDetailMetaDataForExport = enTtinfoDetailMetaDataForExport;
188 } 157 }
189 158
190 - public String getGuideboardsDatainputktr() {  
191 - return guideboardsDatainputktr; 159 + public String getEnTtinfoDetailDataExport() {
  160 + return enTtinfoDetailDataExport;
192 } 161 }
193 162
194 - public void setGuideboardsDatainputktr(String guideboardsDatainputktr) {  
195 - this.guideboardsDatainputktr = guideboardsDatainputktr; 163 + public void setEnTtinfoDetailDataExport(String enTtinfoDetailDataExport) {
  164 + this.enTtinfoDetailDataExport = enTtinfoDetailDataExport;
196 } 165 }
197 166
198 - public String getTtinfoDatainputktr() {  
199 - return ttinfoDatainputktr; 167 + public String getZhTtinfoDetailMetaDataForExport() {
  168 + return zhTtinfoDetailMetaDataForExport;
200 } 169 }
201 170
202 - public String getKvarsDbip() {  
203 - return kvarsDbip; 171 + public void setZhTtinfoDetailMetaDataForExport(String zhTtinfoDetailMetaDataForExport) {
  172 + this.zhTtinfoDetailMetaDataForExport = zhTtinfoDetailMetaDataForExport;
204 } 173 }
205 174
206 - public void setKvarsDbip(String kvarsDbip) {  
207 - this.kvarsDbip = kvarsDbip; 175 + public String getZhTtinfoDetailDataExport() {
  176 + return zhTtinfoDetailDataExport;
208 } 177 }
209 178
210 - public String getKvarsDbuname() {  
211 - return kvarsDbuname; 179 + public void setZhTtinfoDetailDataExport(String zhTtinfoDetailDataExport) {
  180 + this.zhTtinfoDetailDataExport = zhTtinfoDetailDataExport;
212 } 181 }
213 182
214 - public void setKvarsDbuname(String kvarsDbuname) {  
215 - this.kvarsDbuname = kvarsDbuname; 183 + public String getEnTtinfoDetailDataExportForEdit() {
  184 + return enTtinfoDetailDataExportForEdit;
216 } 185 }
217 186
218 - public String getKvarsDbpwd() {  
219 - return kvarsDbpwd; 187 + public void setEnTtinfoDetailDataExportForEdit(String enTtinfoDetailDataExportForEdit) {
  188 + this.enTtinfoDetailDataExportForEdit = enTtinfoDetailDataExportForEdit;
220 } 189 }
221 190
222 - public void setKvarsDbpwd(String kvarsDbpwd) {  
223 - this.kvarsDbpwd = kvarsDbpwd; 191 + public String getZhTtinfoDetailDataExportForEdit() {
  192 + return zhTtinfoDetailDataExportForEdit;
224 } 193 }
225 194
226 - public void setTtinfoDatainputktr(String ttinfoDatainputktr) {  
227 - this.ttinfoDatainputktr = ttinfoDatainputktr; 195 + public void setZhTtinfoDetailDataExportForEdit(String zhTtinfoDetailDataExportForEdit) {
  196 + this.zhTtinfoDetailDataExportForEdit = zhTtinfoDetailDataExportForEdit;
228 } 197 }
  198 + //---------------------------- 时刻表数据相关ktr(以上)----------------------------//
  199 +
  200 + //---------------------------- 排班规则数据相关ktr(以下)----------------------------//
  201 + /** 排班规则数据导入(英文)*/
  202 + @NotNull
  203 + private String enScheduleRuleDataImport;
  204 + /** 排班规则数据导出(英文)*/
  205 + @NotNull
  206 + private String enScheduleRuleDataExport;
  207 + /** 排班规则数据导入(中文)*/
  208 + @NotNull
  209 + private String zhScheduleRuleDataImport;
  210 + /** 排班规则数据导出(中文)*/
  211 + @NotNull
  212 + private String zhScheduleRuleDataExport;
229 213
230 - public String getTtinfodetailDatainputktr() {  
231 - return ttinfodetailDatainputktr; 214 + public String getEnScheduleRuleDataImport() {
  215 + return enScheduleRuleDataImport;
232 } 216 }
233 217
234 - public void setTtinfodetailDatainputktr(String ttinfodetailDatainputktr) {  
235 - this.ttinfodetailDatainputktr = ttinfodetailDatainputktr; 218 + public void setEnScheduleRuleDataImport(String enScheduleRuleDataImport) {
  219 + this.enScheduleRuleDataImport = enScheduleRuleDataImport;
236 } 220 }
237 221
238 - public String getScheduleruleDatainputktr() {  
239 - return scheduleruleDatainputktr; 222 + public String getEnScheduleRuleDataExport() {
  223 + return enScheduleRuleDataExport;
240 } 224 }
241 225
242 - public void setScheduleruleDatainputktr(String scheduleruleDatainputktr) {  
243 - this.scheduleruleDatainputktr = scheduleruleDatainputktr; 226 + public void setEnScheduleRuleDataExport(String enScheduleRuleDataExport) {
  227 + this.enScheduleRuleDataExport = enScheduleRuleDataExport;
244 } 228 }
245 229
246 - public String getKettleProperties() {  
247 - return kettleProperties; 230 + public String getZhScheduleRuleDataImport() {
  231 + return zhScheduleRuleDataImport;
248 } 232 }
249 233
250 - public void setKettleProperties(String kettleProperties) {  
251 - this.kettleProperties = kettleProperties; 234 + public void setZhScheduleRuleDataImport(String zhScheduleRuleDataImport) {
  235 + this.zhScheduleRuleDataImport = zhScheduleRuleDataImport;
252 } 236 }
253 237
254 - public String getTransTempdir() {  
255 - return transTempdir; 238 + public String getZhScheduleRuleDataExport() {
  239 + return zhScheduleRuleDataExport;
256 } 240 }
257 241
258 - public void setTransTempdir(String transTempdir) {  
259 - this.transTempdir = transTempdir; 242 + public void setZhScheduleRuleDataExport(String zhScheduleRuleDataExport) {
  243 + this.zhScheduleRuleDataExport = zhScheduleRuleDataExport;
260 } 244 }
  245 + //---------------------------- 排班规则数据相关ktr(以上)----------------------------//
  246 +
  247 +
  248 + //---------------------------- 人员配置数据相关ktr(以下)----------------------------//
  249 + /** 人员配置数据导入(英文)*/
  250 + @NotNull
  251 + private String enEmployeeConfigDataImport;
  252 + /** 人员配置数据导出(英文)*/
  253 + @NotNull
  254 + private String enEmployeeConfigDataExport;
  255 + /** 人员配置数据导入(中文)*/
  256 + @NotNull
  257 + private String zhEmployeeConfigDataImport;
  258 + /** 人员配置数据导出(中文)*/
  259 + @NotNull
  260 + private String zhEmployeeConfigDataExport;
261 261
262 - public String getTtinfodetailForeditktr() {  
263 - return ttinfodetailForeditktr; 262 + public String getEnEmployeeConfigDataImport() {
  263 + return enEmployeeConfigDataImport;
264 } 264 }
265 265
266 - public void setTtinfodetailForeditktr(String ttinfodetailForeditktr) {  
267 - this.ttinfodetailForeditktr = ttinfodetailForeditktr; 266 + public void setEnEmployeeConfigDataImport(String enEmployeeConfigDataImport) {
  267 + this.enEmployeeConfigDataImport = enEmployeeConfigDataImport;
268 } 268 }
269 269
270 - public String getFileoutputDir() {  
271 - return fileoutputDir; 270 + public String getEnEmployeeConfigDataExport() {
  271 + return enEmployeeConfigDataExport;
272 } 272 }
273 273
274 - public void setFileoutputDir(String fileoutputDir) {  
275 - this.fileoutputDir = fileoutputDir; 274 + public void setEnEmployeeConfigDataExport(String enEmployeeConfigDataExport) {
  275 + this.enEmployeeConfigDataExport = enEmployeeConfigDataExport;
276 } 276 }
277 277
278 - public String getCarsDataoutputktr() {  
279 - return carsDataoutputktr; 278 + public String getZhEmployeeConfigDataImport() {
  279 + return zhEmployeeConfigDataImport;
280 } 280 }
281 281
282 - public void setCarsDataoutputktr(String carsDataoutputktr) {  
283 - this.carsDataoutputktr = carsDataoutputktr; 282 + public void setZhEmployeeConfigDataImport(String zhEmployeeConfigDataImport) {
  283 + this.zhEmployeeConfigDataImport = zhEmployeeConfigDataImport;
284 } 284 }
285 285
286 - public String getEmployeesDataoutputktr() {  
287 - return employeesDataoutputktr; 286 + public String getZhEmployeeConfigDataExport() {
  287 + return zhEmployeeConfigDataExport;
288 } 288 }
289 289
290 - public void setEmployeesDataoutputktr(String employeesDataoutputktr) {  
291 - this.employeesDataoutputktr = employeesDataoutputktr; 290 + public void setZhEmployeeConfigDataExport(String zhEmployeeConfigDataExport) {
  291 + this.zhEmployeeConfigDataExport = zhEmployeeConfigDataExport;
292 } 292 }
293 293
294 - public String getKvarsDbdname() {  
295 - return kvarsDbdname; 294 + //---------------------------- 人员配置数据相关ktr(以上)----------------------------//
  295 +
  296 + //---------------------------- 车辆配置数据相关ktr(以下)----------------------------//
  297 + /** 车辆配置数据导入(英文)*/
  298 + @NotNull
  299 + private String enVehicleConfigDataImport;
  300 + /** 车辆配置数据导出(英文)*/
  301 + @NotNull
  302 + private String enVehicleConfigDataExport;
  303 + /** 车辆配置数据导入(中文)*/
  304 + @NotNull
  305 + private String zhVehicleConfigDataImport;
  306 + /** 车辆配置数据导出(中文)*/
  307 + @NotNull
  308 + private String zhVehicleConfigDataExport;
  309 +
  310 + public String getEnVehicleConfigDataImport() {
  311 + return enVehicleConfigDataImport;
296 } 312 }
297 313
298 - public void setKvarsDbdname(String kvarsDbdname) {  
299 - this.kvarsDbdname = kvarsDbdname; 314 + public void setEnVehicleConfigDataImport(String enVehicleConfigDataImport) {
  315 + this.enVehicleConfigDataImport = enVehicleConfigDataImport;
300 } 316 }
301 317
302 - public String getTtinfodetailMetaoutput() {  
303 - return ttinfodetailMetaoutput; 318 + public String getEnVehicleConfigDataExport() {
  319 + return enVehicleConfigDataExport;
304 } 320 }
305 321
306 - public void setTtinfodetailMetaoutput(String ttinfodetailMetaoutput) {  
307 - this.ttinfodetailMetaoutput = ttinfodetailMetaoutput; 322 + public void setEnVehicleConfigDataExport(String enVehicleConfigDataExport) {
  323 + this.enVehicleConfigDataExport = enVehicleConfigDataExport;
308 } 324 }
309 325
310 - public String getTtinfodetailOutput() {  
311 - return ttinfodetailOutput; 326 + public String getZhVehicleConfigDataImport() {
  327 + return zhVehicleConfigDataImport;
312 } 328 }
313 329
314 - public void setTtinfodetailOutput(String ttinfodetailOutput) {  
315 - this.ttinfodetailOutput = ttinfodetailOutput; 330 + public void setZhVehicleConfigDataImport(String zhVehicleConfigDataImport) {
  331 + this.zhVehicleConfigDataImport = zhVehicleConfigDataImport;
316 } 332 }
317 333
318 - public String getScheduleruleOutput() {  
319 - return scheduleruleOutput; 334 + public String getZhVehicleConfigDataExport() {
  335 + return zhVehicleConfigDataExport;
320 } 336 }
321 337
322 - public void setScheduleruleOutput(String scheduleruleOutput) {  
323 - this.scheduleruleOutput = scheduleruleOutput; 338 + public void setZhVehicleConfigDataExport(String zhVehicleConfigDataExport) {
  339 + this.zhVehicleConfigDataExport = zhVehicleConfigDataExport;
324 } 340 }
325 341
326 - public String getCarsconfigDataoutputktr() {  
327 - return carsconfigDataoutputktr; 342 + //---------------------------- 车辆配置数据相关ktr(以上)----------------------------//
  343 +
  344 + //---------------------------- 路牌信息相关ktr(以下)----------------------------//
  345 + /** 路牌信息导入(英文) */
  346 + @NotNull
  347 + private String enRoadSignDataImport;
  348 + /** 路牌信息导出(英文) */
  349 + @NotNull
  350 + private String enRoadSignDataExport;
  351 + /** 路牌信息导入(中文) */
  352 + @NotNull
  353 + private String zhRoadSignDataImport;
  354 + /** 路牌信息导出(中文) */
  355 + @NotNull
  356 + private String zhRoadSignDataExport;
  357 +
  358 + public String getEnRoadSignDataImport() {
  359 + return enRoadSignDataImport;
328 } 360 }
329 361
330 - public void setCarsconfigDataoutputktr(String carsconfigDataoutputktr) {  
331 - this.carsconfigDataoutputktr = carsconfigDataoutputktr; 362 + public void setEnRoadSignDataImport(String enRoadSignDataImport) {
  363 + this.enRoadSignDataImport = enRoadSignDataImport;
332 } 364 }
333 365
334 - public String getTtinfodetailDatainputktr2version() {  
335 - return ttinfodetailDatainputktr2version; 366 + public String getEnRoadSignDataExport() {
  367 + return enRoadSignDataExport;
336 } 368 }
337 369
338 - public void setTtinfodetailDatainputktr2version(String ttinfodetailDatainputktr2version) {  
339 - this.ttinfodetailDatainputktr2version = ttinfodetailDatainputktr2version; 370 + public void setEnRoadSignDataExport(String enRoadSignDataExport) {
  371 + this.enRoadSignDataExport = enRoadSignDataExport;
340 } 372 }
341 373
342 - public String getEmployeesconfigDataoutputktr() {  
343 - return employeesconfigDataoutputktr; 374 + public String getZhRoadSignDataImport() {
  375 + return zhRoadSignDataImport;
344 } 376 }
345 377
346 - public void setEmployeesconfigDataoutputktr(String employeesconfigDataoutputktr) {  
347 - this.employeesconfigDataoutputktr = employeesconfigDataoutputktr; 378 + public void setZhRoadSignDataImport(String zhRoadSignDataImport) {
  379 + this.zhRoadSignDataImport = zhRoadSignDataImport;
348 } 380 }
349 381
350 - public String getGuideboardsDataoutputktr() {  
351 - return guideboardsDataoutputktr; 382 + public String getZhRoadSignDataExport() {
  383 + return zhRoadSignDataExport;
352 } 384 }
353 385
354 - public void setGuideboardsDataoutputktr(String guideboardsDataoutputktr) {  
355 - this.guideboardsDataoutputktr = guideboardsDataoutputktr; 386 + public void setZhRoadSignDataExport(String zhRoadSignDataExport) {
  387 + this.zhRoadSignDataExport = zhRoadSignDataExport;
356 } 388 }
357 389
358 - public String getTtinfodetailDatainputktr2() {  
359 - return ttinfodetailDatainputktr2; 390 + //---------------------------- 路牌信息相关ktr(以上)----------------------------//
  391 +
  392 + //---------------------------- 车辆基础数据相关ktr(以下)----------------------------//
  393 + /** 车辆基础信息导入(英文) */
  394 + @NotNull
  395 + private String enVehicleBasicDataImport;
  396 + /** 车辆基础信息导出(英文) */
  397 + @NotNull
  398 + private String enVehicleBasicDataExport;
  399 + /** 车辆基础信息导入(中文) */
  400 + @NotNull
  401 + private String zhVehicleBasicDataImport;
  402 + /** 车辆基础信息导出(中文) */
  403 + @NotNull
  404 + private String zhVehicleBasicDataExport;
  405 +
  406 + public String getEnVehicleBasicDataImport() {
  407 + return enVehicleBasicDataImport;
360 } 408 }
361 409
362 - public void setTtinfodetailDatainputktr2(String ttinfodetailDatainputktr2) {  
363 - this.ttinfodetailDatainputktr2 = ttinfodetailDatainputktr2; 410 + public void setEnVehicleBasicDataImport(String enVehicleBasicDataImport) {
  411 + this.enVehicleBasicDataImport = enVehicleBasicDataImport;
364 } 412 }
365 413
366 - public String getTransTemplatedir() {  
367 - return transTemplatedir; 414 + public String getEnVehicleBasicDataExport() {
  415 + return enVehicleBasicDataExport;
368 } 416 }
369 417
370 - public void setTransTemplatedir(String transTemplatedir) {  
371 - this.transTemplatedir = transTemplatedir; 418 + public void setEnVehicleBasicDataExport(String enVehicleBasicDataExport) {
  419 + this.enVehicleBasicDataExport = enVehicleBasicDataExport;
  420 + }
  421 +
  422 + public String getZhVehicleBasicDataImport() {
  423 + return zhVehicleBasicDataImport;
372 } 424 }
373 425
374 - public String getTtinfodetailDatainputktr2version2() {  
375 - return ttinfodetailDatainputktr2version2; 426 + public void setZhVehicleBasicDataImport(String zhVehicleBasicDataImport) {
  427 + this.zhVehicleBasicDataImport = zhVehicleBasicDataImport;
376 } 428 }
377 429
378 - public void setTtinfodetailDatainputktr2version2(String ttinfodetailDatainputktr2version2) {  
379 - this.ttinfodetailDatainputktr2version2 = ttinfodetailDatainputktr2version2; 430 + public String getZhVehicleBasicDataExport() {
  431 + return zhVehicleBasicDataExport;
380 } 432 }
381 433
382 - public String getTtinfodetailDatainputktr2normalwithgs() {  
383 - return ttinfodetailDatainputktr2normalwithgs; 434 + public void setZhVehicleBasicDataExport(String zhVehicleBasicDataExport) {
  435 + this.zhVehicleBasicDataExport = zhVehicleBasicDataExport;
384 } 436 }
385 437
386 - public void setTtinfodetailDatainputktr2normalwithgs(String ttinfodetailDatainputktr2normalwithgs) {  
387 - this.ttinfodetailDatainputktr2normalwithgs = ttinfodetailDatainputktr2normalwithgs; 438 + //---------------------------- 车辆基础数据相关ktr(以上)----------------------------//
  439 +
  440 + //---------------------------- 人员基础数据相关ktr(以下)----------------------------//
  441 + /** 人员基础信息导入(英文) */
  442 + @NotNull
  443 + private String enPersonnelBasicDataImport;
  444 + /** 人员基础信息导出(英文) */
  445 + @NotNull
  446 + private String enPersonnelBasicDataExport;
  447 + /** 人员基础信息导入(中文) */
  448 + @NotNull
  449 + private String zhPersonnelBasicDataImport;
  450 + /** 人员基础信息导入(中文) */
  451 + @NotNull
  452 + private String zhPersonnelBasicDataExport;
  453 +
  454 + public String getEnPersonnelBasicDataImport() {
  455 + return enPersonnelBasicDataImport;
  456 + }
  457 +
  458 + public void setEnPersonnelBasicDataImport(String enPersonnelBasicDataImport) {
  459 + this.enPersonnelBasicDataImport = enPersonnelBasicDataImport;
  460 + }
  461 +
  462 + public String getEnPersonnelBasicDataExport() {
  463 + return enPersonnelBasicDataExport;
  464 + }
  465 +
  466 + public void setEnPersonnelBasicDataExport(String enPersonnelBasicDataExport) {
  467 + this.enPersonnelBasicDataExport = enPersonnelBasicDataExport;
  468 + }
  469 +
  470 + public String getZhPersonnelBasicDataImport() {
  471 + return zhPersonnelBasicDataImport;
  472 + }
  473 +
  474 + public void setZhPersonnelBasicDataImport(String zhPersonnelBasicDataImport) {
  475 + this.zhPersonnelBasicDataImport = zhPersonnelBasicDataImport;
  476 + }
  477 +
  478 + public String getZhPersonnelBasicDataExport() {
  479 + return zhPersonnelBasicDataExport;
  480 + }
  481 +
  482 + public void setZhPersonnelBasicDataExport(String zhPersonnelBasicDataExport) {
  483 + this.zhPersonnelBasicDataExport = zhPersonnelBasicDataExport;
  484 + }
  485 +
  486 + //---------------------------- 人员基础数据相关ktr(以上)----------------------------//
  487 +
  488 + //------------------------ 数据同步ktr -----------------------//
  489 + @NotNull
  490 + /** 车辆信息同步 */
  491 + private String vehicleDatasyncktr;
  492 + @NotNull
  493 + /** 浦东车辆库车辆数据接口地址 */
  494 + private String carsInterface;
  495 +
  496 + // TODO:
  497 +
  498 + public String getFileuploadDir() {
  499 + return fileuploadDir;
  500 + }
  501 +
  502 + public void setFileuploadDir(String fileuploadDir) {
  503 + this.fileuploadDir = fileuploadDir;
  504 + }
  505 +
  506 + public String getTransErrordir() {
  507 + return transErrordir;
  508 + }
  509 +
  510 + public void setTransErrordir(String transErrordir) {
  511 + this.transErrordir = transErrordir;
  512 + }
  513 +
  514 + public String getKettleProperties() {
  515 + return kettleProperties;
  516 + }
  517 +
  518 + public void setKettleProperties(String kettleProperties) {
  519 + this.kettleProperties = kettleProperties;
  520 + }
  521 +
  522 + public String getTransTempdir() {
  523 + return transTempdir;
  524 + }
  525 +
  526 + public void setTransTempdir(String transTempdir) {
  527 + this.transTempdir = transTempdir;
  528 + }
  529 +
  530 + public String getFileoutputDir() {
  531 + return fileoutputDir;
  532 + }
  533 +
  534 + public void setFileoutputDir(String fileoutputDir) {
  535 + this.fileoutputDir = fileoutputDir;
  536 + }
  537 +
  538 + public String getTransTemplatedir() {
  539 + return transTemplatedir;
  540 + }
  541 +
  542 + public void setTransTemplatedir(String transTemplatedir) {
  543 + this.transTemplatedir = transTemplatedir;
388 } 544 }
389 545
390 public String getVehicleDatasyncktr() { 546 public String getVehicleDatasyncktr() {
src/main/java/com/bsth/service/schedule/utils/DataToolsServiceImpl.java
1 package com.bsth.service.schedule.utils; 1 package com.bsth.service.schedule.utils;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.util.I18n;
4 import com.google.common.io.Files; 5 import com.google.common.io.Files;
  6 +import jxl.write.Label;
  7 +import jxl.write.WritableSheet;
  8 +import jxl.write.WritableWorkbook;
5 import org.joda.time.DateTime; 9 import org.joda.time.DateTime;
6 import org.pentaho.di.core.KettleEnvironment; 10 import org.pentaho.di.core.KettleEnvironment;
7 import org.pentaho.di.core.logging.KettleLogStore; 11 import org.pentaho.di.core.logging.KettleLogStore;
@@ -33,6 +37,8 @@ public class DataToolsServiceImpl implements DataToolsService { @@ -33,6 +37,8 @@ public class DataToolsServiceImpl implements DataToolsService {
33 37
34 @Autowired 38 @Autowired
35 private DataToolsProperties dataToolsProperties; 39 private DataToolsProperties dataToolsProperties;
  40 + @Autowired
  41 + private I18n i18n;
36 42
37 /** 原子操作类 */ 43 /** 原子操作类 */
38 private AtomicBoolean flag = new AtomicBoolean(false); 44 private AtomicBoolean flag = new AtomicBoolean(false);
@@ -46,14 +52,12 @@ public class DataToolsServiceImpl implements DataToolsService { @@ -46,14 +52,12 @@ public class DataToolsServiceImpl implements DataToolsService {
46 52
47 // 添加全局ktr变量,并覆盖原来的设置 53 // 添加全局ktr变量,并覆盖原来的设置
48 Map<String, String> kvars = new HashMap<>(); 54 Map<String, String> kvars = new HashMap<>();
49 - kvars.put("v_db_ip", dataToolsProperties.getKvarsDbip());  
50 - kvars.put("v_db_uname", dataToolsProperties.getKvarsDbuname());  
51 - kvars.put("v_db_pwd", dataToolsProperties.getKvarsDbpwd());  
52 - kvars.put("v_db_dname", dataToolsProperties.getKvarsDbdname());  
53 EnvUtil.applyKettleProperties(kvars, true); 55 EnvUtil.applyKettleProperties(kvars, true);
54 KettleEnvironment.init(); // 默认使用jndi数据源 56 KettleEnvironment.init(); // 默认使用jndi数据源
55 // 使用自定义的jndi上下文工厂 57 // 使用自定义的jndi上下文工厂
56 - System.setProperty("java.naming.factory.initial", "com.bsth.service.schedule.utils.jndi.MySimpleJndiContextFactory"); 58 + System.setProperty(
  59 + "java.naming.factory.initial",
  60 + "com.bsth.service.schedule.utils.jndi.MySimpleJndiContextFactory");
57 } 61 }
58 } 62 }
59 63
@@ -97,8 +101,9 @@ public class DataToolsServiceImpl implements DataToolsService { @@ -97,8 +101,9 @@ public class DataToolsServiceImpl implements DataToolsService {
97 101
98 LOGGER.info("start uploadFile...originalFilename={}", filename); 102 LOGGER.info("start uploadFile...originalFilename={}", filename);
99 103
100 - DataToolsFile dataToolsFile = new DataToolsFile(); 104 + // 1、上传文件到指定目录
101 105
  106 + DataToolsFile dataToolsFile = new DataToolsFile();
102 // 判定文件类型(目前只支持xls,xlsx文件) 107 // 判定文件类型(目前只支持xls,xlsx文件)
103 if (DataToolsFileType.XLS.isThisType(filedata)) { 108 if (DataToolsFileType.XLS.isThisType(filedata)) {
104 // xls文件 109 // xls文件
@@ -124,12 +129,44 @@ public class DataToolsServiceImpl implements DataToolsService { @@ -124,12 +129,44 @@ public class DataToolsServiceImpl implements DataToolsService {
124 Files.write(filedata, dataToolsFile.getFile()); 129 Files.write(filedata, dataToolsFile.getFile());
125 } else { 130 } else {
126 // 非excel文件 131 // 非excel文件
127 - throw new Exception("非.xls .xlsx 格式文件!"); 132 + throw new Exception(this.i18n.getMessage("dataToolsServiceImpl-line132"));
128 } 133 }
129 134
130 LOGGER.info("uploadFile success...newFilename={}", dataToolsFile.getFile().getAbsolutePath()); 135 LOGGER.info("uploadFile success...newFilename={}", dataToolsFile.getFile().getAbsolutePath());
131 136
132 - return dataToolsFile; 137 + // 2、对上传的excel文件做处理,将第一个sheet保存成一个xls文件
  138 + // poi api
  139 + org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(dataToolsFile.getFile());
  140 + org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet
  141 + int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行
  142 + if (rowNum < 0) {
  143 + throw new RuntimeException(this.i18n.getMessage("dataToolsServiceImpl-line143"));
  144 + }
  145 + int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主
  146 +
  147 + // jxl api
  148 + File fileCal = new File(dataToolsFile.getFile().getAbsolutePath() + "_sheetChange.xls");
  149 + WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);
  150 + WritableSheet writableSheet = writableWorkbook.createSheet(this.i18n.getMessage("dataToolsServiceImpl-line150"), 0);
  151 +
  152 + for (int i = 0; i <= rowNum; i++) {
  153 + for (int j = 0; j <= colNum; j++) {
  154 + // poi读
  155 + String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));
  156 + // jxl写
  157 + writableSheet.addCell(new Label(j, i, cellContent));
  158 + }
  159 +
  160 + }
  161 + writableWorkbook.write();
  162 + writableWorkbook.close();
  163 + poi_workbook.close();
  164 +
  165 + DataToolsFile dataToolsFile1 = new DataToolsFile();
  166 + dataToolsFile1.setFile(fileCal);
  167 + dataToolsFile1.setFileType(DataToolsFileType.XLS);
  168 +
  169 + return dataToolsFile1;
133 } catch (Exception exp) { 170 } catch (Exception exp) {
134 LOGGER.info("uploadFile failed...stackTrace..."); 171 LOGGER.info("uploadFile failed...stackTrace...");
135 172
@@ -153,8 +190,7 @@ public class DataToolsServiceImpl implements DataToolsService { @@ -153,8 +190,7 @@ public class DataToolsServiceImpl implements DataToolsService {
153 // 检查参数 190 // 检查参数
154 String transpath = String.valueOf(params.get("transpath")); 191 String transpath = String.valueOf(params.get("transpath"));
155 if ("null".equals(transpath)) { 192 if ("null".equals(transpath)) {
156 - throw new Exception(  
157 - "没有指定transpath参数值,无法确定ktr转换文件!"); 193 + throw new Exception(this.i18n.getMessage("dataToolsServiceImpl-line193"));
158 } 194 }
159 File ktrFile = new File(transpath); 195 File ktrFile = new File(transpath);
160 // 设置文件路径,错误输出文件路径参数 196 // 设置文件路径,错误输出文件路径参数
@@ -221,8 +257,7 @@ public class DataToolsServiceImpl implements DataToolsService { @@ -221,8 +257,7 @@ public class DataToolsServiceImpl implements DataToolsService {
221 } 257 }
222 String transpath = String.valueOf(params.get("transpath")); 258 String transpath = String.valueOf(params.get("transpath"));
223 if ("null".equals(transpath)) { 259 if ("null".equals(transpath)) {
224 - throw new Exception(  
225 - "没有指定transpath参数值,无法确定ktr转换文件!"); 260 + throw new Exception(this.i18n.getMessage("dataToolsServiceImpl-line260"));
226 } 261 }
227 File ktrFile = new File(transpath); 262 File ktrFile = new File(transpath);
228 // 设置文件路径参数 263 // 设置文件路径参数
src/main/resources/application-test.properties
@@ -83,7 +83,7 @@ wvp.channel.history.list.url=http://61.169.120.202:28080/api/gb_record/query/{de @@ -83,7 +83,7 @@ wvp.channel.history.list.url=http://61.169.120.202:28080/api/gb_record/query/{de
83 83
84 84
85 #客流图像 85 #客流图像
86 -passengerFlow.url = http://58.247.254.118:9999/images/ 86 +passengerFlow.url = http://192.168.168.152:9999/images/
87 #DSM图像视频 87 #DSM图像视频
88 dsm.url = http://211.95.61.66:9008/safedriving/SafeDrivingInterface_for_jcpt 88 dsm.url = http://211.95.61.66:9008/safedriving/SafeDrivingInterface_for_jcpt
89 89
src/main/resources/datatools/config-cloud.properties
@@ -2,18 +2,8 @@ @@ -2,18 +2,8 @@
2 2
3 # 1、kettle配置文件路径(类路径) 3 # 1、kettle配置文件路径(类路径)
4 datatools.kettle_properties=/datatools/kettle.properties 4 datatools.kettle_properties=/datatools/kettle.properties
5 -# 2、ktr文件通用配置变量(数据库连接,根据不同的环境需要修正)  
6 5
7 -#数据库ip地址  
8 -datatools.kvars_dbip=192.170.100.132  
9 -#数据库用户名  
10 -datatools.kvars_dbuname=root  
11 -#数据库密码  
12 -datatools.kvars_dbpwd=root2jsp  
13 -#数据库库名  
14 -datatools.kvars_dbdname=control  
15 -  
16 -# 3、上传数据配置信息 6 +# 2、上传数据配置信息
17 # 上传文件目录配置(根据不同的环境需要修正) 7 # 上传文件目录配置(根据不同的环境需要修正)
18 datatools.fileupload_dir=/home/bsth_control_u_d_files 8 datatools.fileupload_dir=/home/bsth_control_u_d_files
19 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) 9 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
@@ -23,61 +13,68 @@ datatools.trans_tempdir=/home/bsth_control_u_d_files/temp @@ -23,61 +13,68 @@ datatools.trans_tempdir=/home/bsth_control_u_d_files/temp
23 # 模版文件目录 13 # 模版文件目录
24 datatools.trans_templatedir=/home/bsth_control_u_d_files/template 14 datatools.trans_templatedir=/home/bsth_control_u_d_files/template
25 15
26 -##---------------------------- 导入数据ktr ----------------------------##  
27 -# 车辆信息导入ktr转换  
28 -datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr  
29 -# 人员信息导入  
30 -datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr  
31 -# 路牌信息导入  
32 -datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr  
33 -# 时刻表基础信息导入  
34 -datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr  
35 -# 时刻表明细信息导入(元数据)  
36 -datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailDataInputMetaData.ktr  
37 -# 时刻表明细编辑用数据  
38 -datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr  
39 -# 时刻表明细信息导入  
40 -datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr  
41 -# 时刻表明细信息导入2  
42 -datatools.ttinfodetail_datainputktr2=/datatools/ktrs/ttinfodetailDataInput2.ktr  
43 -# 时刻表明细信息导入2(版本化)  
44 -datatools.ttinfodetail_datainputktr2version=/datatools/ktrs/ttinfodetailDataInput2_version.ktr  
45 -# 时刻表明细信息导入2(版本化),使用生成时刻表格式  
46 -datatools.ttinfodetail_datainputktr2version2=/datatools/ktrs/ttinfodetailDataInput2_version_2.ktr  
47 -# 时刻表明细信息导入2,一般格式(路牌列后加一列工时列)  
48 -datatools.ttinfodetail_datainputktr2normalwithgs=/datatools/ktrs/ttinfodetailDataInput2_normalwithgs.ktr 16 +# 3、数据导出配置信息
  17 +# 导出数据文件目录配置(根据不同的环境需要修正)
  18 +datatools.fileoutput_dir=/home/bsth_control_u_d_files
  19 +
  20 +##---------------------------- 时刻表数据相关ktr(以下)----------------------------##
  21 +datatools.en_ttinfo_detail_meta_data_for_export=/datatools/ktrs/en/ttinfo-detail-metadata_for_export.ktr
  22 +datatools.en_ttinfo_detail_data_export=/datatools/ktrs/en/ttinfo-detail-data_export.ktr
  23 +datatools.zh_ttinfo_detail_meta_data_for_export=/datatools/ktrs/zh/ttinfo-detail-metadata_for_export.ktr
  24 +datatools.zh_ttinfo_detail_data_export=/datatools/ktrs/zh/ttinfo-detail-data_export.ktr
  25 +datatools.en_ttinfo_detail_data_export_for_edit=/datatools/ktrs/en/ttinfo-detail-data_export_for_edit.ktr
  26 +datatools.zh_ttinfo_detail_data_export_for_edit=/datatools/ktrs/zh/ttinfo-detail-data_export_for_edit.ktr
  27 +datatools.en_ttinfo_detail_meta_data_for_import=/datatools/ktrs/en/ttinfo-detail-metadata_for_import.ktr
  28 +datatools.zh_ttinfo_detail_meta_data_for_import=/datatools/ktrs/zh/ttinfo-detail-metadata_for_import.ktr
  29 +datatools.en_ttinfo_detail_data_import_of_dynamic=/datatools/ktrs/en/ttinfo-detail-data_import_of_dynamic.ktr
  30 +datatools.zh_ttinfo_detail_data_import_of_dynamic=/datatools/ktrs/zh/ttinfo-detail-data_import_of_dynamic.ktr
  31 +datatools.en_ttinfo_detail_data_import_of_normal=/datatools/ktrs/en/ttinfo-detail-data_import_of_normal.ktr
  32 +datatools.zh_ttinfo_detail_data_import_of_normal=/datatools/ktrs/zh/ttinfo-detail-data_import_of_normal.ktr
  33 +datatools.en_ttinfo_detail_data_import_of_normal_with_gs=/datatools/ktrs/en/ttinfo-detail-data_import_of_normalWithGs.ktr
  34 +datatools.zh_ttinfo_detail_data_import_of_normal_with_gs=/datatools/ktrs/zh/ttinfo-detail-data_import_of_normalWithGs.ktr
  35 +##---------------------------- 时刻表数据相关ktr(以下)----------------------------##
49 36
50 -# 车辆配置信息导入  
51 -datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr  
52 -# 人员配置信息导入  
53 -datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr 37 +##---------------------------- 车辆基础数据相关ktr(以下)----------------------------##
  38 +datatools.en_vehicle_basic_data_import=/datatools/ktrs/en/vehicle-basic-data_import.ktr
  39 +datatools.en_vehicle_basic_data_export=/datatools/ktrs/en/vehicle-basic-data_export.ktr
  40 +datatools.zh_vehicle_basic_data_import=/datatools/ktrs/zh/vehicle-basic-data_import.ktr
  41 +datatools.zh_vehicle_basic_data_export=/datatools/ktrs/zh/vehicle-basic-data_export.ktr
  42 +##---------------------------- 车辆基础数据相关ktr(以上)----------------------------##
54 43
55 -# 排版规则信息导入  
56 -datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr 44 +##---------------------------- 人员基础数据相关ktr(以下)----------------------------##
  45 +datatools.en_personnel_basic_data_import=/datatools/ktrs/en/personnel-basic-data_import.ktr
  46 +datatools.en_personnel_basic_data_export=/datatools/ktrs/en/personnel-basic-data_export.ktr
  47 +datatools.zh_personnel_basic_data_import=/datatools/ktrs/zh/personnel-basic-data_import.ktr
  48 +datatools.zh_personnel_basic_data_export=/datatools/ktrs/zh/personnel-basic-data_export.ktr
  49 +##---------------------------- 人员基础数据相关ktr(以上)----------------------------##
57 50
58 -# 4、数据导出配置信息  
59 -# 导出数据文件目录配置(根据不同的环境需要修正)  
60 -datatools.fileoutput_dir=/home/bsth_control_u_d_files 51 +##---------------------------- 路牌信息相关ktr(以下)----------------------------##
  52 +datatools.en_road_sign_data_import=/datatools/ktrs/en/road-sign-data_import.ktr
  53 +datatools.en_road_sign_data_export=/datatools/ktrs/en/road-sign-data_export.ktr
  54 +datatools.zh_road_sign_data_import=/datatools/ktrs/zh/road-sign-data_import.ktr
  55 +datatools.zh_road_sign_data_export=/datatools/ktrs/zh/road-sign-data_export.ktr
  56 +##---------------------------- 路牌信息相关ktr(以上)----------------------------##
61 57
62 -##---------------------------- 导出数据ktr -----------------------------##  
63 -# 车辆信息导出ktr转换  
64 -datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr  
65 -# 人员信息导出ktr转换  
66 -datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr  
67 -# 时刻表导出元数据ktr转换  
68 -datatools.ttinfodetail_metaoutput=/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr  
69 -# 时刻表导出数据ktr转换  
70 -datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr  
71 -# 排版规则导出数据ktr转换  
72 -datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr 58 +##---------------------------- 车辆配置数据相关ktr(以下)----------------------------##
  59 +datatools.en_vehicle_config_data_import=/datatools/ktrs/en/vehicle-config-data_import.ktr
  60 +datatools.en_vehicle_config_data_export=/datatools/ktrs/en/vehicle-config-data_export.ktr
  61 +datatools.zh_vehicle_config_data_import=/datatools/ktrs/zh/vehicle-config-data_import.ktr
  62 +datatools.zh_vehicle_config_data_export=/datatools/ktrs/zh/vehicle-config-data_export.ktr
  63 +##---------------------------- 车辆配置数据相关ktr(以上)----------------------------##
73 64
74 -# 车辆配置信息导出ktr转换  
75 -datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr  
76 -# 人员配置信息导出ktr转换  
77 -datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr 65 +##---------------------------- 人员配置数据相关ktr(以下)----------------------------##
  66 +datatools.en_employee_config_data_import=/datatools/ktrs/en/employee-config-data_import.ktr
  67 +datatools.en_employee_config_data_export=/datatools/ktrs/en/employee-config-data_export.ktr
  68 +datatools.zh_employee_config_data_import=/datatools/ktrs/zh/employee-config-data_import.ktr
  69 +datatools.zh_employee_config_data_export=/datatools/ktrs/zh/employee-config-data_export.ktr
  70 +##---------------------------- 人员配置数据相关ktr(以上)----------------------------##
78 71
79 -# 路牌信息导出  
80 -datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr 72 +##---------------------------- 排班规则数据相关ktr(以下)----------------------------##
  73 +datatools.en_schedule_rule_data_import=/datatools/ktrs/en/schedule-rule-data_import.ktr
  74 +datatools.en_schedule_rule_data_export=/datatools/ktrs/en/schedule-rule-data_export.ktr
  75 +datatools.zh_schedule_rule_data_import=/datatools/ktrs/zh/schedule-rule-data_import.ktr
  76 +datatools.zh_schedule_rule_data_export=/datatools/ktrs/zh/schedule-rule-data_export.ktr
  77 +##---------------------------- 排班规则数据相关ktr(以上)----------------------------##
81 78
82 ##--------------------------- 数据同步ktr ------------------------## 79 ##--------------------------- 数据同步ktr ------------------------##
83 datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr 80 datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr
src/main/resources/datatools/config-dev.properties
@@ -2,17 +2,8 @@ @@ -2,17 +2,8 @@
2 2
3 # 1、kettle配置文件路径(类路径) 3 # 1、kettle配置文件路径(类路径)
4 datatools.kettle_properties=/datatools/kettle.properties 4 datatools.kettle_properties=/datatools/kettle.properties
5 -# 2、ktr文件通用配置变量(数据库连接,根据不同的环境需要修正)  
6 -#数据库ip地址  
7 -datatools.kvars_dbip=127.0.0.1  
8 -#数据库用户名  
9 -datatools.kvars_dbuname=root  
10 -#数据库密码  
11 -datatools.kvars_dbpwd=  
12 -#数据库库名  
13 -datatools.kvars_dbdname=test_control  
14 -  
15 -# 3、上传数据配置信息 5 +
  6 +# 2、上传数据配置信息
16 # 上传文件目录配置(根据不同的环境需要修正) 7 # 上传文件目录配置(根据不同的环境需要修正)
17 datatools.fileupload_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files 8 datatools.fileupload_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files
18 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) 9 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
@@ -22,62 +13,68 @@ datatools.trans_tempdir=/Users/xu/resource/project_code/runtime_temp/bsth_contro @@ -22,62 +13,68 @@ datatools.trans_tempdir=/Users/xu/resource/project_code/runtime_temp/bsth_contro
22 # 模版文件目录 13 # 模版文件目录
23 datatools.trans_templatedir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/template 14 datatools.trans_templatedir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/template
24 15
25 -##---------------------------- 导入数据ktr ----------------------------##  
26 -# 车辆信息导入ktr转换  
27 -datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr  
28 -# 人员信息导入  
29 -datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr  
30 -# 路牌信息导入  
31 -datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr  
32 -# 时刻表基础信息导入  
33 -datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr  
34 -# 时刻表明细信息导入(元数据)  
35 -datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailDataInputMetaData.ktr  
36 -# 时刻表明细编辑用数据  
37 -datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr  
38 -# 时刻表明细信息导入  
39 -datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr  
40 -# 时刻表明细信息导入2  
41 -datatools.ttinfodetail_datainputktr2=/datatools/ktrs/ttinfodetailDataInput2.ktr  
42 -# 时刻表明细信息导入2(版本化)  
43 -datatools.ttinfodetail_datainputktr2version=/datatools/ktrs/ttinfodetailDataInput2_version.ktr  
44 -# 时刻表明细信息导入2(版本化),使用生成时刻表格式  
45 -datatools.ttinfodetail_datainputktr2version2=/datatools/ktrs/ttinfodetailDataInput2_version_2.ktr  
46 -# 时刻表明细信息导入2,一般格式(路牌列后加一列工时列)  
47 -datatools.ttinfodetail_datainputktr2normalwithgs=/datatools/ktrs/ttinfodetailDataInput2_normalwithgs.ktr  
48 -  
49 -# 车辆配置信息导入  
50 -datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr  
51 -# 人员配置信息导入  
52 -datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr  
53 -  
54 -# 排版规则信息导入  
55 -datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr  
56 -  
57 -# 4、数据导出配置信息 16 +# 3、数据导出配置信息
58 # 导出数据文件目录配置(根据不同的环境需要修正) 17 # 导出数据文件目录配置(根据不同的环境需要修正)
59 datatools.fileoutput_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files 18 datatools.fileoutput_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files
60 19
61 -##---------------------------- 导出数据ktr -----------------------------##  
62 -# 车辆信息导出ktr转换  
63 -datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr  
64 -# 人员信息导出ktr转换  
65 -datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr  
66 -# 时刻表导出元数据ktr转换  
67 -datatools.ttinfodetail_metaoutput=/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr  
68 -# 时刻表导出数据ktr转换  
69 -datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr  
70 -# 排版规则导出数据ktr转换  
71 -datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr  
72 -  
73 -# 车辆配置信息导出ktr转换  
74 -datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr  
75 -# 人员配置信息导出ktr转换  
76 -datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr  
77 -  
78 -# 路牌信息导出  
79 -datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr  
80 - 20 +##---------------------------- 时刻表数据相关ktr(以下)----------------------------##
  21 +datatools.en_ttinfo_detail_meta_data_for_export=/datatools/ktrs/en/ttinfo-detail-metadata_for_export.ktr
  22 +datatools.en_ttinfo_detail_data_export=/datatools/ktrs/en/ttinfo-detail-data_export.ktr
  23 +datatools.zh_ttinfo_detail_meta_data_for_export=/datatools/ktrs/zh/ttinfo-detail-metadata_for_export.ktr
  24 +datatools.zh_ttinfo_detail_data_export=/datatools/ktrs/zh/ttinfo-detail-data_export.ktr
  25 +datatools.en_ttinfo_detail_data_export_for_edit=/datatools/ktrs/en/ttinfo-detail-data_export_for_edit.ktr
  26 +datatools.zh_ttinfo_detail_data_export_for_edit=/datatools/ktrs/zh/ttinfo-detail-data_export_for_edit.ktr
  27 +datatools.en_ttinfo_detail_meta_data_for_import=/datatools/ktrs/en/ttinfo-detail-metadata_for_import.ktr
  28 +datatools.zh_ttinfo_detail_meta_data_for_import=/datatools/ktrs/zh/ttinfo-detail-metadata_for_import.ktr
  29 +datatools.en_ttinfo_detail_data_import_of_dynamic=/datatools/ktrs/en/ttinfo-detail-data_import_of_dynamic.ktr
  30 +datatools.zh_ttinfo_detail_data_import_of_dynamic=/datatools/ktrs/zh/ttinfo-detail-data_import_of_dynamic.ktr
  31 +datatools.en_ttinfo_detail_data_import_of_normal=/datatools/ktrs/en/ttinfo-detail-data_import_of_normal.ktr
  32 +datatools.zh_ttinfo_detail_data_import_of_normal=/datatools/ktrs/zh/ttinfo-detail-data_import_of_normal.ktr
  33 +datatools.en_ttinfo_detail_data_import_of_normal_with_gs=/datatools/ktrs/en/ttinfo-detail-data_import_of_normalWithGs.ktr
  34 +datatools.zh_ttinfo_detail_data_import_of_normal_with_gs=/datatools/ktrs/zh/ttinfo-detail-data_import_of_normalWithGs.ktr
  35 +##---------------------------- 时刻表数据相关ktr(以下)----------------------------##
  36 +
  37 +##---------------------------- 车辆基础数据相关ktr(以下)----------------------------##
  38 +datatools.en_vehicle_basic_data_import=/datatools/ktrs/en/vehicle-basic-data_import.ktr
  39 +datatools.en_vehicle_basic_data_export=/datatools/ktrs/en/vehicle-basic-data_export.ktr
  40 +datatools.zh_vehicle_basic_data_import=/datatools/ktrs/zh/vehicle-basic-data_import.ktr
  41 +datatools.zh_vehicle_basic_data_export=/datatools/ktrs/zh/vehicle-basic-data_export.ktr
  42 +##---------------------------- 车辆基础数据相关ktr(以上)----------------------------##
  43 +
  44 +##---------------------------- 人员基础数据相关ktr(以下)----------------------------##
  45 +datatools.en_personnel_basic_data_import=/datatools/ktrs/en/personnel-basic-data_import.ktr
  46 +datatools.en_personnel_basic_data_export=/datatools/ktrs/en/personnel-basic-data_export.ktr
  47 +datatools.zh_personnel_basic_data_import=/datatools/ktrs/zh/personnel-basic-data_import.ktr
  48 +datatools.zh_personnel_basic_data_export=/datatools/ktrs/zh/personnel-basic-data_export.ktr
  49 +##---------------------------- 人员基础数据相关ktr(以上)----------------------------##
  50 +
  51 +##---------------------------- 路牌信息相关ktr(以下)----------------------------##
  52 +datatools.en_road_sign_data_import=/datatools/ktrs/en/road-sign-data_import.ktr
  53 +datatools.en_road_sign_data_export=/datatools/ktrs/en/road-sign-data_export.ktr
  54 +datatools.zh_road_sign_data_import=/datatools/ktrs/zh/road-sign-data_import.ktr
  55 +datatools.zh_road_sign_data_export=/datatools/ktrs/zh/road-sign-data_export.ktr
  56 +##---------------------------- 路牌信息相关ktr(以上)----------------------------##
  57 +
  58 +##---------------------------- 车辆配置数据相关ktr(以下)----------------------------##
  59 +datatools.en_vehicle_config_data_import=/datatools/ktrs/en/vehicle-config-data_import.ktr
  60 +datatools.en_vehicle_config_data_export=/datatools/ktrs/en/vehicle-config-data_export.ktr
  61 +datatools.zh_vehicle_config_data_import=/datatools/ktrs/zh/vehicle-config-data_import.ktr
  62 +datatools.zh_vehicle_config_data_export=/datatools/ktrs/zh/vehicle-config-data_export.ktr
  63 +##---------------------------- 车辆配置数据相关ktr(以上)----------------------------##
  64 +
  65 +##---------------------------- 人员配置数据相关ktr(以下)----------------------------##
  66 +datatools.en_employee_config_data_import=/datatools/ktrs/en/employee-config-data_import.ktr
  67 +datatools.en_employee_config_data_export=/datatools/ktrs/en/employee-config-data_export.ktr
  68 +datatools.zh_employee_config_data_import=/datatools/ktrs/zh/employee-config-data_import.ktr
  69 +datatools.zh_employee_config_data_export=/datatools/ktrs/zh/employee-config-data_export.ktr
  70 +##---------------------------- 人员配置数据相关ktr(以上)----------------------------##
  71 +
  72 +##---------------------------- 排班规则数据相关ktr(以下)----------------------------##
  73 +datatools.en_schedule_rule_data_import=/datatools/ktrs/en/schedule-rule-data_import.ktr
  74 +datatools.en_schedule_rule_data_export=/datatools/ktrs/en/schedule-rule-data_export.ktr
  75 +datatools.zh_schedule_rule_data_import=/datatools/ktrs/zh/schedule-rule-data_import.ktr
  76 +datatools.zh_schedule_rule_data_export=/datatools/ktrs/zh/schedule-rule-data_export.ktr
  77 +##---------------------------- 排班规则数据相关ktr(以上)----------------------------##
81 78
82 ##--------------------------- 数据同步ktr ------------------------## 79 ##--------------------------- 数据同步ktr ------------------------##
83 datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr 80 datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr
src/main/resources/datatools/config-prod.properties
@@ -2,18 +2,8 @@ @@ -2,18 +2,8 @@
2 2
3 # 1、kettle配置文件路径(类路径) 3 # 1、kettle配置文件路径(类路径)
4 datatools.kettle_properties=/datatools/kettle.properties 4 datatools.kettle_properties=/datatools/kettle.properties
5 -# 2、ktr文件通用配置变量(数据库连接,根据不同的环境需要修正)  
6 5
7 -#数据库ip地址  
8 -datatools.kvars_dbip=192.168.168.241  
9 -#数据库用户名  
10 -datatools.kvars_dbuname=root  
11 -#数据库密码  
12 -datatools.kvars_dbpwd=root2jsp  
13 -#数据库库名  
14 -datatools.kvars_dbdname=pd_control  
15 -  
16 -# 3、上传数据配置信息 6 +# 2、上传数据配置信息
17 # 上传文件目录配置(根据不同的环境需要修正) 7 # 上传文件目录配置(根据不同的环境需要修正)
18 datatools.fileupload_dir=/home/bsth_control_u_d_files 8 datatools.fileupload_dir=/home/bsth_control_u_d_files
19 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) 9 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
@@ -23,61 +13,68 @@ datatools.trans_tempdir=/home/bsth_control_u_d_files/temp @@ -23,61 +13,68 @@ datatools.trans_tempdir=/home/bsth_control_u_d_files/temp
23 # 模版文件目录 13 # 模版文件目录
24 datatools.trans_templatedir=/home/bsth_control_u_d_files/template 14 datatools.trans_templatedir=/home/bsth_control_u_d_files/template
25 15
26 -##---------------------------- 导入数据ktr ----------------------------##  
27 -# 车辆信息导入ktr转换  
28 -datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr  
29 -# 人员信息导入  
30 -datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr  
31 -# 路牌信息导入  
32 -datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr  
33 -# 时刻表基础信息导入  
34 -datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr  
35 -# 时刻表明细信息导入(元数据)  
36 -datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailDataInputMetaData.ktr  
37 -# 时刻表明细编辑用数据  
38 -datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr  
39 -# 时刻表明细信息导入  
40 -datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr  
41 -# 时刻表明细信息导入2  
42 -datatools.ttinfodetail_datainputktr2=/datatools/ktrs/ttinfodetailDataInput2.ktr  
43 -# 时刻表明细信息导入2(版本化)  
44 -datatools.ttinfodetail_datainputktr2version=/datatools/ktrs/ttinfodetailDataInput2_version.ktr  
45 -# 时刻表明细信息导入2(版本化),使用生成时刻表格式  
46 -datatools.ttinfodetail_datainputktr2version2=/datatools/ktrs/ttinfodetailDataInput2_version_2.ktr  
47 -# 时刻表明细信息导入2,一般格式(路牌列后加一列工时列)  
48 -datatools.ttinfodetail_datainputktr2normalwithgs=/datatools/ktrs/ttinfodetailDataInput2_normalwithgs.ktr 16 +# 3、数据导出配置信息
  17 +# 导出数据文件目录配置(根据不同的环境需要修正)
  18 +datatools.fileoutput_dir=/home/bsth_control_u_d_files
  19 +
  20 +##---------------------------- 时刻表数据相关ktr(以下)----------------------------##
  21 +datatools.en_ttinfo_detail_meta_data_for_export=/datatools/ktrs/en/ttinfo-detail-metadata_for_export.ktr
  22 +datatools.en_ttinfo_detail_data_export=/datatools/ktrs/en/ttinfo-detail-data_export.ktr
  23 +datatools.zh_ttinfo_detail_meta_data_for_export=/datatools/ktrs/zh/ttinfo-detail-metadata_for_export.ktr
  24 +datatools.zh_ttinfo_detail_data_export=/datatools/ktrs/zh/ttinfo-detail-data_export.ktr
  25 +datatools.en_ttinfo_detail_data_export_for_edit=/datatools/ktrs/en/ttinfo-detail-data_export_for_edit.ktr
  26 +datatools.zh_ttinfo_detail_data_export_for_edit=/datatools/ktrs/zh/ttinfo-detail-data_export_for_edit.ktr
  27 +datatools.en_ttinfo_detail_meta_data_for_import=/datatools/ktrs/en/ttinfo-detail-metadata_for_import.ktr
  28 +datatools.zh_ttinfo_detail_meta_data_for_import=/datatools/ktrs/zh/ttinfo-detail-metadata_for_import.ktr
  29 +datatools.en_ttinfo_detail_data_import_of_dynamic=/datatools/ktrs/en/ttinfo-detail-data_import_of_dynamic.ktr
  30 +datatools.zh_ttinfo_detail_data_import_of_dynamic=/datatools/ktrs/zh/ttinfo-detail-data_import_of_dynamic.ktr
  31 +datatools.en_ttinfo_detail_data_import_of_normal=/datatools/ktrs/en/ttinfo-detail-data_import_of_normal.ktr
  32 +datatools.zh_ttinfo_detail_data_import_of_normal=/datatools/ktrs/zh/ttinfo-detail-data_import_of_normal.ktr
  33 +datatools.en_ttinfo_detail_data_import_of_normal_with_gs=/datatools/ktrs/en/ttinfo-detail-data_import_of_normalWithGs.ktr
  34 +datatools.zh_ttinfo_detail_data_import_of_normal_with_gs=/datatools/ktrs/zh/ttinfo-detail-data_import_of_normalWithGs.ktr
  35 +##---------------------------- 时刻表数据相关ktr(以下)----------------------------##
49 36
50 -# 车辆配置信息导入  
51 -datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr  
52 -# 人员配置信息导入  
53 -datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr 37 +##---------------------------- 车辆基础数据相关ktr(以下)----------------------------##
  38 +datatools.en_vehicle_basic_data_import=/datatools/ktrs/en/vehicle-basic-data_import.ktr
  39 +datatools.en_vehicle_basic_data_export=/datatools/ktrs/en/vehicle-basic-data_export.ktr
  40 +datatools.zh_vehicle_basic_data_import=/datatools/ktrs/zh/vehicle-basic-data_import.ktr
  41 +datatools.zh_vehicle_basic_data_export=/datatools/ktrs/zh/vehicle-basic-data_export.ktr
  42 +##---------------------------- 车辆基础数据相关ktr(以上)----------------------------##
54 43
55 -# 排版规则信息导入  
56 -datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr 44 +##---------------------------- 人员基础数据相关ktr(以下)----------------------------##
  45 +datatools.en_personnel_basic_data_import=/datatools/ktrs/en/personnel-basic-data_import.ktr
  46 +datatools.en_personnel_basic_data_export=/datatools/ktrs/en/personnel-basic-data_export.ktr
  47 +datatools.zh_personnel_basic_data_import=/datatools/ktrs/zh/personnel-basic-data_import.ktr
  48 +datatools.zh_personnel_basic_data_export=/datatools/ktrs/zh/personnel-basic-data_export.ktr
  49 +##---------------------------- 人员基础数据相关ktr(以上)----------------------------##
57 50
58 -# 4、数据导出配置信息  
59 -# 导出数据文件目录配置(根据不同的环境需要修正)  
60 -datatools.fileoutput_dir=/home/bsth_control_u_d_files 51 +##---------------------------- 路牌信息相关ktr(以下)----------------------------##
  52 +datatools.en_road_sign_data_import=/datatools/ktrs/en/road-sign-data_import.ktr
  53 +datatools.en_road_sign_data_export=/datatools/ktrs/en/road-sign-data_export.ktr
  54 +datatools.zh_road_sign_data_import=/datatools/ktrs/zh/road-sign-data_import.ktr
  55 +datatools.zh_road_sign_data_export=/datatools/ktrs/zh/road-sign-data_export.ktr
  56 +##---------------------------- 路牌信息相关ktr(以上)----------------------------##
61 57
62 -##---------------------------- 导出数据ktr -----------------------------##  
63 -# 车辆信息导出ktr转换  
64 -datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr  
65 -# 人员信息导出ktr转换  
66 -datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr  
67 -# 时刻表导出元数据ktr转换  
68 -datatools.ttinfodetail_metaoutput=/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr  
69 -# 时刻表导出数据ktr转换  
70 -datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr  
71 -# 排版规则导出数据ktr转换  
72 -datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr 58 +##---------------------------- 车辆配置数据相关ktr(以下)----------------------------##
  59 +datatools.en_vehicle_config_data_import=/datatools/ktrs/en/vehicle-config-data_import.ktr
  60 +datatools.en_vehicle_config_data_export=/datatools/ktrs/en/vehicle-config-data_export.ktr
  61 +datatools.zh_vehicle_config_data_import=/datatools/ktrs/zh/vehicle-config-data_import.ktr
  62 +datatools.zh_vehicle_config_data_export=/datatools/ktrs/zh/vehicle-config-data_export.ktr
  63 +##---------------------------- 车辆配置数据相关ktr(以上)----------------------------##
73 64
74 -# 车辆配置信息导出ktr转换  
75 -datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr  
76 -# 人员配置信息导出ktr转换  
77 -datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr 65 +##---------------------------- 人员配置数据相关ktr(以下)----------------------------##
  66 +datatools.en_employee_config_data_import=/datatools/ktrs/en/employee-config-data_import.ktr
  67 +datatools.en_employee_config_data_export=/datatools/ktrs/en/employee-config-data_export.ktr
  68 +datatools.zh_employee_config_data_import=/datatools/ktrs/zh/employee-config-data_import.ktr
  69 +datatools.zh_employee_config_data_export=/datatools/ktrs/zh/employee-config-data_export.ktr
  70 +##---------------------------- 人员配置数据相关ktr(以上)----------------------------##
78 71
79 -# 路牌信息导出  
80 -datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr 72 +##---------------------------- 排班规则数据相关ktr(以下)----------------------------##
  73 +datatools.en_schedule_rule_data_import=/datatools/ktrs/en/schedule-rule-data_import.ktr
  74 +datatools.en_schedule_rule_data_export=/datatools/ktrs/en/schedule-rule-data_export.ktr
  75 +datatools.zh_schedule_rule_data_import=/datatools/ktrs/zh/schedule-rule-data_import.ktr
  76 +datatools.zh_schedule_rule_data_export=/datatools/ktrs/zh/schedule-rule-data_export.ktr
  77 +##---------------------------- 排班规则数据相关ktr(以上)----------------------------##
81 78
82 ##--------------------------- 数据同步ktr ------------------------## 79 ##--------------------------- 数据同步ktr ------------------------##
83 datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr 80 datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr
src/main/resources/datatools/config-test.properties
@@ -2,82 +2,80 @@ @@ -2,82 +2,80 @@
2 2
3 # 1、kettle配置文件路径(类路径) 3 # 1、kettle配置文件路径(类路径)
4 datatools.kettle_properties=/datatools/kettle.properties 4 datatools.kettle_properties=/datatools/kettle.properties
5 -# 2、ktr文件通用配置变量(数据库连接,根据不同的环境需要修正)  
6 5
7 -#数据库ip地址  
8 -datatools.kvars_dbip=10.10.200.148  
9 -#数据库用户名  
10 -datatools.kvars_dbuname=root  
11 -#数据库密码  
12 -datatools.kvars_dbpwd=root  
13 -#数据库库名  
14 -datatools.kvars_dbdname=control  
15 -  
16 -# 3、上传数据配置信息 6 +# 2、上传数据配置信息
17 # 上传文件目录配置(根据不同的环境需要修正) 7 # 上传文件目录配置(根据不同的环境需要修正)
18 -datatools.fileupload_dir=/home/bsth_control_u_d_files 8 +datatools.fileupload_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files
19 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) 9 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
20 -datatools.trans_errordir=/home/bsth_control_u_d_files/erroroutput 10 +datatools.trans_errordir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/erroroutput
21 # 临时输出文件目录 11 # 临时输出文件目录
22 -datatools.trans_tempdir=/home/bsth_control_u_d_files/temp 12 +datatools.trans_tempdir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/temp
23 # 模版文件目录 13 # 模版文件目录
24 -datatools.trans_templatedir=/home/bsth_control_u_d_files/template 14 +datatools.trans_templatedir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/template
25 15
26 -##---------------------------- 导入数据ktr ----------------------------##  
27 -# 车辆信息导入ktr转换  
28 -datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr  
29 -# 人员信息导入  
30 -datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr  
31 -# 路牌信息导入  
32 -datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr  
33 -# 时刻表基础信息导入  
34 -datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr  
35 -# 时刻表明细信息导入(元数据)  
36 -datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailDataInputMetaData.ktr  
37 -# 时刻表明细编辑用数据  
38 -datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr  
39 -# 时刻表明细信息导入  
40 -datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr  
41 -# 时刻表明细信息导入2  
42 -datatools.ttinfodetail_datainputktr2=/datatools/ktrs/ttinfodetailDataInput2.ktr  
43 -# 时刻表明细信息导入2(版本化)  
44 -datatools.ttinfodetail_datainputktr2version=/datatools/ktrs/ttinfodetailDataInput2_version.ktr  
45 -# 时刻表明细信息导入2(版本化),使用生成时刻表格式  
46 -datatools.ttinfodetail_datainputktr2version2=/datatools/ktrs/ttinfodetailDataInput2_version_2.ktr  
47 -# 时刻表明细信息导入2,一般格式(路牌列后加一列工时列)  
48 -datatools.ttinfodetail_datainputktr2normalwithgs=/datatools/ktrs/ttinfodetailDataInput2_normalwithgs.ktr 16 +# 3、数据导出配置信息
  17 +# 导出数据文件目录配置(根据不同的环境需要修正)
  18 +datatools.fileoutput_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files
49 19
50 -# 车辆配置信息导入  
51 -datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr  
52 -# 人员配置信息导入  
53 -datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr 20 +##---------------------------- 时刻表数据相关ktr(以下)----------------------------##
  21 +datatools.en_ttinfo_detail_meta_data_for_export=/datatools/ktrs/en/ttinfo-detail-metadata_for_export.ktr
  22 +datatools.en_ttinfo_detail_data_export=/datatools/ktrs/en/ttinfo-detail-data_export.ktr
  23 +datatools.zh_ttinfo_detail_meta_data_for_export=/datatools/ktrs/zh/ttinfo-detail-metadata_for_export.ktr
  24 +datatools.zh_ttinfo_detail_data_export=/datatools/ktrs/zh/ttinfo-detail-data_export.ktr
  25 +datatools.en_ttinfo_detail_data_export_for_edit=/datatools/ktrs/en/ttinfo-detail-data_export_for_edit.ktr
  26 +datatools.zh_ttinfo_detail_data_export_for_edit=/datatools/ktrs/zh/ttinfo-detail-data_export_for_edit.ktr
  27 +datatools.en_ttinfo_detail_meta_data_for_import=/datatools/ktrs/en/ttinfo-detail-metadata_for_import.ktr
  28 +datatools.zh_ttinfo_detail_meta_data_for_import=/datatools/ktrs/zh/ttinfo-detail-metadata_for_import.ktr
  29 +datatools.en_ttinfo_detail_data_import_of_dynamic=/datatools/ktrs/en/ttinfo-detail-data_import_of_dynamic.ktr
  30 +datatools.zh_ttinfo_detail_data_import_of_dynamic=/datatools/ktrs/zh/ttinfo-detail-data_import_of_dynamic.ktr
  31 +datatools.en_ttinfo_detail_data_import_of_normal=/datatools/ktrs/en/ttinfo-detail-data_import_of_normal.ktr
  32 +datatools.zh_ttinfo_detail_data_import_of_normal=/datatools/ktrs/zh/ttinfo-detail-data_import_of_normal.ktr
  33 +datatools.en_ttinfo_detail_data_import_of_normal_with_gs=/datatools/ktrs/en/ttinfo-detail-data_import_of_normalWithGs.ktr
  34 +datatools.zh_ttinfo_detail_data_import_of_normal_with_gs=/datatools/ktrs/zh/ttinfo-detail-data_import_of_normalWithGs.ktr
  35 +##---------------------------- 时刻表数据相关ktr(以下)----------------------------##
54 36
55 -# 排版规则信息导入  
56 -datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr 37 +##---------------------------- 车辆基础数据相关ktr(以下)----------------------------##
  38 +datatools.en_vehicle_basic_data_import=/datatools/ktrs/en/vehicle-basic-data_import.ktr
  39 +datatools.en_vehicle_basic_data_export=/datatools/ktrs/en/vehicle-basic-data_export.ktr
  40 +datatools.zh_vehicle_basic_data_import=/datatools/ktrs/zh/vehicle-basic-data_import.ktr
  41 +datatools.zh_vehicle_basic_data_export=/datatools/ktrs/zh/vehicle-basic-data_export.ktr
  42 +##---------------------------- 车辆基础数据相关ktr(以上)----------------------------##
57 43
58 -# 4、数据导出配置信息  
59 -# 导出数据文件目录配置(根据不同的环境需要修正)  
60 -datatools.fileoutput_dir=/home/bsth_control_u_d_files 44 +##---------------------------- 人员基础数据相关ktr(以下)----------------------------##
  45 +datatools.en_personnel_basic_data_import=/datatools/ktrs/en/personnel-basic-data_import.ktr
  46 +datatools.en_personnel_basic_data_export=/datatools/ktrs/en/personnel-basic-data_export.ktr
  47 +datatools.zh_personnel_basic_data_import=/datatools/ktrs/zh/personnel-basic-data_import.ktr
  48 +datatools.zh_personnel_basic_data_export=/datatools/ktrs/zh/personnel-basic-data_export.ktr
  49 +##---------------------------- 人员基础数据相关ktr(以上)----------------------------##
  50 +
  51 +##---------------------------- 路牌信息相关ktr(以下)----------------------------##
  52 +datatools.en_road_sign_data_import=/datatools/ktrs/en/road-sign-data_import.ktr
  53 +datatools.en_road_sign_data_export=/datatools/ktrs/en/road-sign-data_export.ktr
  54 +datatools.zh_road_sign_data_import=/datatools/ktrs/zh/road-sign-data_import.ktr
  55 +datatools.zh_road_sign_data_export=/datatools/ktrs/zh/road-sign-data_export.ktr
  56 +##---------------------------- 路牌信息相关ktr(以上)----------------------------##
  57 +
  58 +##---------------------------- 车辆配置数据相关ktr(以下)----------------------------##
  59 +datatools.en_vehicle_config_data_import=/datatools/ktrs/en/vehicle-config-data_import.ktr
  60 +datatools.en_vehicle_config_data_export=/datatools/ktrs/en/vehicle-config-data_export.ktr
  61 +datatools.zh_vehicle_config_data_import=/datatools/ktrs/zh/vehicle-config-data_import.ktr
  62 +datatools.zh_vehicle_config_data_export=/datatools/ktrs/zh/vehicle-config-data_export.ktr
  63 +##---------------------------- 车辆配置数据相关ktr(以上)----------------------------##
61 64
62 -##---------------------------- 导出数据ktr -----------------------------##  
63 -# 车辆信息导出ktr转换  
64 -datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr  
65 -# 人员信息导出ktr转换  
66 -datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr  
67 -# 时刻表导出元数据ktr转换  
68 -datatools.ttinfodetail_metaoutput=/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr  
69 -# 时刻表导出数据ktr转换  
70 -datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr  
71 -# 排版规则导出数据ktr转换  
72 -datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr 65 +##---------------------------- 人员配置数据相关ktr(以下)----------------------------##
  66 +datatools.en_employee_config_data_import=/datatools/ktrs/en/employee-config-data_import.ktr
  67 +datatools.en_employee_config_data_export=/datatools/ktrs/en/employee-config-data_export.ktr
  68 +datatools.zh_employee_config_data_import=/datatools/ktrs/zh/employee-config-data_import.ktr
  69 +datatools.zh_employee_config_data_export=/datatools/ktrs/zh/employee-config-data_export.ktr
  70 +##---------------------------- 人员配置数据相关ktr(以上)----------------------------##
73 71
74 -# 车辆配置信息导出ktr转换  
75 -datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr  
76 -# 人员配置信息导出ktr转换  
77 -datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr 72 +##---------------------------- 排班规则数据相关ktr(以下)----------------------------##
  73 +datatools.en_schedule_rule_data_import=/datatools/ktrs/en/schedule-rule-data_import.ktr
  74 +datatools.en_schedule_rule_data_export=/datatools/ktrs/en/schedule-rule-data_export.ktr
  75 +datatools.zh_schedule_rule_data_import=/datatools/ktrs/zh/schedule-rule-data_import.ktr
  76 +datatools.zh_schedule_rule_data_export=/datatools/ktrs/zh/schedule-rule-data_export.ktr
  77 +##---------------------------- 排班规则数据相关ktr(以上)----------------------------##
78 78
79 -# 路牌信息导出  
80 -datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr  
81 79
82 ##--------------------------- 数据同步ktr ------------------------## 80 ##--------------------------- 数据同步ktr ------------------------##
83 datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr 81 datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr
src/main/resources/datatools/ktrs/en/employee-config-data_export.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x51fa;_en</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>filepath</name>
  14 + <default_value/>
  15 + <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>xlid</name>
  19 + <default_value/>
  20 + <description>&#x7ebf;&#x8def;id</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</modified_date>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>
  89 + <xloc>66</xloc>
  90 + <yloc>151</yloc>
  91 + <width>333</width>
  92 + <heigth>90</heigth>
  93 + <fontname>YaHei Consolas Hybrid</fontname>
  94 + <fontsize>12</fontsize>
  95 + <fontbold>N</fontbold>
  96 + <fontitalic>N</fontitalic>
  97 + <fontcolorred>0</fontcolorred>
  98 + <fontcolorgreen>0</fontcolorgreen>
  99 + <fontcolorblue>0</fontcolorblue>
  100 + <backgroundcolorred>255</backgroundcolorred>
  101 + <backgroundcolorgreen>205</backgroundcolorgreen>
  102 + <backgroundcolorblue>112</backgroundcolorblue>
  103 + <bordercolorred>100</bordercolorred>
  104 + <bordercolorgreen>100</bordercolorgreen>
  105 + <bordercolorblue>100</bordercolorblue>
  106 + <drawshadow>Y</drawshadow>
  107 + </notepad>
  108 + <notepad>
  109 + <note>&#x82f1;&#x6587;&#x6a21;&#x7248;&#x5bfc;&#x51fa;&#xa;excel&#x4e2d;&#x6587;&#x5b57;&#x6bb5;&#x540d; excel&#x82f1;&#x6587;&#x5b57;&#x6bb5;&#x540d;&#xa;&#x7ebf;&#x8def; route name&#xa;&#x642d;&#x73ed;&#x7f16;&#x7801; shift code&#xa;&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7; driver employee number&#xa;&#x9a7e;&#x9a76;&#x5458; driver name&#xa;&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7; conductor employee number&#xa;&#x552e;&#x7968;&#x5458; conductor name</note>
  110 + <xloc>90</xloc>
  111 + <yloc>283</yloc>
  112 + <width>308</width>
  113 + <heigth>138</heigth>
  114 + <fontname>YaHei Consolas Hybrid</fontname>
  115 + <fontsize>12</fontsize>
  116 + <fontbold>N</fontbold>
  117 + <fontitalic>N</fontitalic>
  118 + <fontcolorred>0</fontcolorred>
  119 + <fontcolorgreen>0</fontcolorgreen>
  120 + <fontcolorblue>0</fontcolorblue>
  121 + <backgroundcolorred>255</backgroundcolorred>
  122 + <backgroundcolorgreen>205</backgroundcolorgreen>
  123 + <backgroundcolorblue>112</backgroundcolorblue>
  124 + <bordercolorred>100</bordercolorred>
  125 + <bordercolorgreen>100</bordercolorgreen>
  126 + <bordercolorblue>100</bordercolorblue>
  127 + <drawshadow>Y</drawshadow>
  128 + </notepad>
  129 + </notepads>
  130 + <connection>
  131 + <name>192.168.168.1_jwgl_dw</name>
  132 + <server>192.168.168.1</server>
  133 + <type>ORACLE</type>
  134 + <access>Native</access>
  135 + <database>orcl</database>
  136 + <port>1521</port>
  137 + <username>jwgl_dw</username>
  138 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  139 + <servername/>
  140 + <data_tablespace/>
  141 + <index_tablespace/>
  142 + <attributes>
  143 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  144 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  145 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  146 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  147 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  148 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  149 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  150 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  151 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  152 + </attributes>
  153 + </connection>
  154 + <connection>
  155 + <name>bus_control_variable</name>
  156 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  157 + <type>MYSQL</type>
  158 + <access>Native</access>
  159 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  160 + <port>3306</port>
  161 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  162 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  163 + <servername/>
  164 + <data_tablespace/>
  165 + <index_tablespace/>
  166 + <attributes>
  167 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  168 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  169 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  170 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  171 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  172 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  173 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  174 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  175 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  176 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  177 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  178 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  179 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  180 + </attributes>
  181 + </connection>
  182 + <connection>
  183 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  184 + <server>localhost</server>
  185 + <type>MYSQL</type>
  186 + <access>Native</access>
  187 + <database>control</database>
  188 + <port>3306</port>
  189 + <username>root</username>
  190 + <password>Encrypted </password>
  191 + <servername/>
  192 + <data_tablespace/>
  193 + <index_tablespace/>
  194 + <attributes>
  195 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  196 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  197 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  198 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  199 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  200 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  201 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  202 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  203 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  204 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  205 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  206 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  207 + </attributes>
  208 + </connection>
  209 + <connection>
  210 + <name>bus_control_&#x672c;&#x673a;</name>
  211 + <server>localhost</server>
  212 + <type>MYSQL</type>
  213 + <access>Native</access>
  214 + <database>control</database>
  215 + <port>3306</port>
  216 + <username>root</username>
  217 + <password>Encrypted </password>
  218 + <servername/>
  219 + <data_tablespace/>
  220 + <index_tablespace/>
  221 + <attributes>
  222 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  223 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  224 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  225 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  226 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  227 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  228 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  229 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  230 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  231 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  232 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  233 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  234 + </attributes>
  235 + </connection>
  236 + <connection>
  237 + <name>control_jndi</name>
  238 + <server/>
  239 + <type>MYSQL</type>
  240 + <access>JNDI</access>
  241 + <database>control_jndi</database>
  242 + <port>1521</port>
  243 + <username/>
  244 + <password>Encrypted </password>
  245 + <servername/>
  246 + <data_tablespace/>
  247 + <index_tablespace/>
  248 + <attributes>
  249 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  250 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  251 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  252 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  253 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  254 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  255 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  256 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  257 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  258 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  259 + </attributes>
  260 + </connection>
  261 + <connection>
  262 + <name>JGJW_VM</name>
  263 + <server>192.168.198.240</server>
  264 + <type>ORACLE</type>
  265 + <access>Native</access>
  266 + <database>orcl</database>
  267 + <port>1521</port>
  268 + <username>jwgl</username>
  269 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password>
  270 + <servername/>
  271 + <data_tablespace/>
  272 + <index_tablespace/>
  273 + <attributes>
  274 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  275 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  276 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  277 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  278 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  279 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  280 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  281 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  282 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  283 + </attributes>
  284 + </connection>
  285 + <connection>
  286 + <name>NHJW_VM</name>
  287 + <server>192.168.198.240</server>
  288 + <type>ORACLE</type>
  289 + <access>Native</access>
  290 + <database>orcl</database>
  291 + <port>1521</port>
  292 + <username>nhjw</username>
  293 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d09aa5cd</password>
  294 + <servername/>
  295 + <data_tablespace/>
  296 + <index_tablespace/>
  297 + <attributes>
  298 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  299 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  300 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  301 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  302 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  303 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  304 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  305 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  306 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  307 + </attributes>
  308 + </connection>
  309 + <connection>
  310 + <name>PDGJ_VM</name>
  311 + <server>192.168.198.240</server>
  312 + <type>ORACLE</type>
  313 + <access>Native</access>
  314 + <database>orcl</database>
  315 + <port>1521</port>
  316 + <username>pdgj</username>
  317 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10ce96a8d0</password>
  318 + <servername/>
  319 + <data_tablespace/>
  320 + <index_tablespace/>
  321 + <attributes>
  322 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  323 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  324 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  325 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  326 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  327 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  328 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  329 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  330 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  331 + </attributes>
  332 + </connection>
  333 + <connection>
  334 + <name>repair_dw_mysql_jndi</name>
  335 + <server/>
  336 + <type>MYSQL</type>
  337 + <access>JNDI</access>
  338 + <database>repair_dw_mysql</database>
  339 + <port>1521</port>
  340 + <username/>
  341 + <password>Encrypted </password>
  342 + <servername/>
  343 + <data_tablespace/>
  344 + <index_tablespace/>
  345 + <attributes>
  346 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  347 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  348 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  349 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  350 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  351 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  352 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  353 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  354 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  355 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  356 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  357 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  358 + </attributes>
  359 + </connection>
  360 + <connection>
  361 + <name>repair_dw&#xff08;&#x672c;&#x673a;&#xff09;</name>
  362 + <server>localhost</server>
  363 + <type>MYSQL</type>
  364 + <access>Native</access>
  365 + <database>ruoyi-vue-3.5</database>
  366 + <port>3306</port>
  367 + <username>root</username>
  368 + <password>Encrypted </password>
  369 + <servername/>
  370 + <data_tablespace/>
  371 + <index_tablespace/>
  372 + <attributes>
  373 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  374 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  375 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  376 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  377 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  378 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  379 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  380 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  381 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  382 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  383 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  384 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  385 + </attributes>
  386 + </connection>
  387 + <connection>
  388 + <name>repair_real_h2</name>
  389 + <server/>
  390 + <type>H2</type>
  391 + <access>JNDI</access>
  392 + <database>repair_real_h2</database>
  393 + <port>1521</port>
  394 + <username/>
  395 + <password>Encrypted </password>
  396 + <servername/>
  397 + <data_tablespace/>
  398 + <index_tablespace/>
  399 + <attributes>
  400 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  401 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  402 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  403 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  404 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  405 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  406 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  407 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  408 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  409 + </attributes>
  410 + </connection>
  411 + <connection>
  412 + <name>SNJW_VM</name>
  413 + <server>192.168.198.240</server>
  414 + <type>ORACLE</type>
  415 + <access>Native</access>
  416 + <database>orcl</database>
  417 + <port>1521</port>
  418 + <username>snjw</username>
  419 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10cd9ca5cd</password>
  420 + <servername/>
  421 + <data_tablespace/>
  422 + <index_tablespace/>
  423 + <attributes>
  424 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  425 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  426 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  427 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  428 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  429 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  430 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  431 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  432 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  433 + </attributes>
  434 + </connection>
  435 + <connection>
  436 + <name>test_control_local</name>
  437 + <server>localhost</server>
  438 + <type>MYSQL</type>
  439 + <access>Native</access>
  440 + <database>test_control</database>
  441 + <port>3306</port>
  442 + <username>root</username>
  443 + <password>Encrypted </password>
  444 + <servername/>
  445 + <data_tablespace/>
  446 + <index_tablespace/>
  447 + <attributes>
  448 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  449 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  450 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  451 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  452 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  453 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  454 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  455 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  456 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  457 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  458 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  459 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  460 + </attributes>
  461 + </connection>
  462 + <connection>
  463 + <name>test_control&#xff08;&#x672c;&#x673a;&#xff09;</name>
  464 + <server>127.0.0.1</server>
  465 + <type>MYSQL</type>
  466 + <access>Native</access>
  467 + <database>test_control</database>
  468 + <port>3306</port>
  469 + <username>root</username>
  470 + <password>Encrypted </password>
  471 + <servername/>
  472 + <data_tablespace/>
  473 + <index_tablespace/>
  474 + <attributes>
  475 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  476 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  477 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  478 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  479 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  480 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  481 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  482 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  483 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  484 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  485 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  486 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  487 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  488 + </attributes>
  489 + </connection>
  490 + <connection>
  491 + <name>wzk_mysql_jndi</name>
  492 + <server/>
  493 + <type>MYSQL</type>
  494 + <access>JNDI</access>
  495 + <database>wzk_mysql</database>
  496 + <port>1521</port>
  497 + <username/>
  498 + <password>Encrypted </password>
  499 + <servername/>
  500 + <data_tablespace/>
  501 + <index_tablespace/>
  502 + <attributes>
  503 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  504 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  505 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  506 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  507 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  508 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  509 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  510 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  511 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  512 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  513 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  514 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  515 + </attributes>
  516 + </connection>
  517 + <connection>
  518 + <name>wzk&#xff08;&#x672c;&#x673a;&#xff09;</name>
  519 + <server>localhost</server>
  520 + <type>MYSQL</type>
  521 + <access>Native</access>
  522 + <database>pdgj_wzk_sys</database>
  523 + <port>3306</port>
  524 + <username>root</username>
  525 + <password>Encrypted </password>
  526 + <servername/>
  527 + <data_tablespace/>
  528 + <index_tablespace/>
  529 + <attributes>
  530 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  531 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  532 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  533 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  534 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  535 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  536 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  537 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  538 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  539 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  540 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  541 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  542 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  543 + </attributes>
  544 + </connection>
  545 + <connection>
  546 + <name>xlab_mysql_youle</name>
  547 + <server>101.231.124.8</server>
  548 + <type>MYSQL</type>
  549 + <access>Native</access>
  550 + <database>xlab_youle</database>
  551 + <port>45687</port>
  552 + <username>xlab-youle</username>
  553 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  554 + <servername/>
  555 + <data_tablespace/>
  556 + <index_tablespace/>
  557 + <attributes>
  558 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  559 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  560 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  561 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  562 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  563 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  564 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  565 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  566 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  567 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  568 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  569 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  570 + </attributes>
  571 + </connection>
  572 + <connection>
  573 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  574 + <server>localhost</server>
  575 + <type>MYSQL</type>
  576 + <access>Native</access>
  577 + <database>xlab_youle</database>
  578 + <port>3306</port>
  579 + <username>root</username>
  580 + <password>Encrypted </password>
  581 + <servername/>
  582 + <data_tablespace/>
  583 + <index_tablespace/>
  584 + <attributes>
  585 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  586 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  587 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  588 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  589 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  590 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  591 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  592 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  593 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  594 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  595 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  596 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  597 + </attributes>
  598 + </connection>
  599 + <connection>
  600 + <name>xlab_youle</name>
  601 + <server/>
  602 + <type>MYSQL</type>
  603 + <access>JNDI</access>
  604 + <database>xlab_youle</database>
  605 + <port>1521</port>
  606 + <username/>
  607 + <password>Encrypted </password>
  608 + <servername/>
  609 + <data_tablespace/>
  610 + <index_tablespace/>
  611 + <attributes>
  612 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  613 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  614 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  615 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  616 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  617 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  618 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  619 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  620 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  621 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  622 + </attributes>
  623 + </connection>
  624 + <connection>
  625 + <name>YGJW_VM</name>
  626 + <server>192.168.198.240</server>
  627 + <type>ORACLE</type>
  628 + <access>Native</access>
  629 + <database>orcl</database>
  630 + <port>1521</port>
  631 + <username>ygjw</username>
  632 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password>
  633 + <servername/>
  634 + <data_tablespace/>
  635 + <index_tablespace/>
  636 + <attributes>
  637 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  638 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  639 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  640 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  641 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  642 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  643 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  644 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  645 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  646 + </attributes>
  647 + </connection>
  648 + <connection>
  649 + <name>&#x516c;&#x53f8;jgjw</name>
  650 + <server>192.168.168.1</server>
  651 + <type>ORACLE</type>
  652 + <access>Native</access>
  653 + <database>orcl</database>
  654 + <port>1521</port>
  655 + <username>jwgl</username>
  656 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password>
  657 + <servername/>
  658 + <data_tablespace/>
  659 + <index_tablespace/>
  660 + <attributes>
  661 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  662 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  663 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  664 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  665 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  666 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  667 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  668 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  669 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  670 + </attributes>
  671 + </connection>
  672 + <connection>
  673 + <name>&#x516c;&#x53f8;snjw</name>
  674 + <server>192.168.168.1</server>
  675 + <type>ORACLE</type>
  676 + <access>Native</access>
  677 + <database>orcl</database>
  678 + <port>1521</port>
  679 + <username>snjw</username>
  680 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10cd9ca5cd</password>
  681 + <servername/>
  682 + <data_tablespace/>
  683 + <index_tablespace/>
  684 + <attributes>
  685 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  686 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  687 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  688 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  689 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  690 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  691 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  692 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  693 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  694 + </attributes>
  695 + </connection>
  696 + <connection>
  697 + <name>&#x516c;&#x53f8;ygjw</name>
  698 + <server>192.168.168.178</server>
  699 + <type>ORACLE</type>
  700 + <access>Native</access>
  701 + <database>orcl</database>
  702 + <port>1521</port>
  703 + <username>ygjw</username>
  704 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password>
  705 + <servername/>
  706 + <data_tablespace/>
  707 + <index_tablespace/>
  708 + <attributes>
  709 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  710 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  711 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  712 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  713 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  714 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  715 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  716 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  717 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  718 + </attributes>
  719 + </connection>
  720 + <connection>
  721 + <name>&#x516c;&#x53f8;&#x673a;&#x52a1;_pdgj</name>
  722 + <server>192.168.168.178</server>
  723 + <type>ORACLE</type>
  724 + <access>Native</access>
  725 + <database>orcl</database>
  726 + <port>1521</port>
  727 + <username>pdgj</username>
  728 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10ce96a8d0</password>
  729 + <servername/>
  730 + <data_tablespace/>
  731 + <index_tablespace/>
  732 + <attributes>
  733 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  734 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  735 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  736 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  737 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  738 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  739 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  740 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  741 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  742 + </attributes>
  743 + </connection>
  744 + <connection>
  745 + <name>&#x5916;&#x7f51;vpn&#x4e34;&#x6e2f;&#x673a;&#x52a1;oracle</name>
  746 + <server>10.10.150.114</server>
  747 + <type>ORACLE</type>
  748 + <access>Native</access>
  749 + <database>helowin</database>
  750 + <port>1521</port>
  751 + <username>lgjw</username>
  752 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d295a5cd</password>
  753 + <servername/>
  754 + <data_tablespace/>
  755 + <index_tablespace/>
  756 + <attributes>
  757 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  758 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  759 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  760 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  761 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  762 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  763 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  764 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  765 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  766 + </attributes>
  767 + </connection>
  768 + <connection>
  769 + <name>&#x5916;&#x7f51;&#x5357;&#x6c47;&#x673a;&#x52a1;oracle</name>
  770 + <server>58.247.254.118</server>
  771 + <type>ORACLE</type>
  772 + <access>Native</access>
  773 + <database>orcl</database>
  774 + <port>15211</port>
  775 + <username>nhjw</username>
  776 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d09aa5cd</password>
  777 + <servername/>
  778 + <data_tablespace/>
  779 + <index_tablespace/>
  780 + <attributes>
  781 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  782 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  783 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  784 + <attribute><code>PORT_NUMBER</code><attribute>15211</attribute></attribute>
  785 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  786 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  787 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  788 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  789 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  790 + </attributes>
  791 + </connection>
  792 + <connection>
  793 + <name>&#x5916;&#x7f51;&#x6768;&#x9ad8;&#x673a;&#x52a1;oracle</name>
  794 + <server>58.247.254.118</server>
  795 + <type>ORACLE</type>
  796 + <access>Native</access>
  797 + <database>orcl</database>
  798 + <port>15211</port>
  799 + <username>ygjw</username>
  800 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password>
  801 + <servername/>
  802 + <data_tablespace/>
  803 + <index_tablespace/>
  804 + <attributes>
  805 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  806 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  807 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  808 + <attribute><code>PORT_NUMBER</code><attribute>15211</attribute></attribute>
  809 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  810 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  811 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  812 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  813 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  814 + </attributes>
  815 + </connection>
  816 + <connection>
  817 + <name>&#x5916;&#x7f51;&#x91d1;&#x9ad8;&#x673a;&#x52a1;oracle</name>
  818 + <server>58.247.254.118</server>
  819 + <type>ORACLE</type>
  820 + <access>Native</access>
  821 + <database>orcl</database>
  822 + <port>15211</port>
  823 + <username>jwgl</username>
  824 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password>
  825 + <servername/>
  826 + <data_tablespace/>
  827 + <index_tablespace/>
  828 + <attributes>
  829 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  830 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  831 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  832 + <attribute><code>PORT_NUMBER</code><attribute>15211</attribute></attribute>
  833 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  834 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  835 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  836 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  837 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  838 + </attributes>
  839 + </connection>
  840 + <order>
  841 + <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  842 + <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  843 + <hop> <from>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</from><to>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  844 + <hop> <from>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  845 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  846 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  847 + </order>
  848 + <step>
  849 + <name>Excel&#x8f93;&#x51fa;</name>
  850 + <type>ExcelOutput</type>
  851 + <description/>
  852 + <distribute>Y</distribute>
  853 + <custom_distribution/>
  854 + <copies>1</copies>
  855 + <partitioning>
  856 + <method>none</method>
  857 + <schema_name/>
  858 + </partitioning>
  859 + <header>Y</header>
  860 + <footer>N</footer>
  861 + <encoding/>
  862 + <append>N</append>
  863 + <add_to_result_filenames>Y</add_to_result_filenames>
  864 + <file>
  865 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  866 + <extention>xls</extention>
  867 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  868 + <create_parent_folder>N</create_parent_folder>
  869 + <split>N</split>
  870 + <add_date>N</add_date>
  871 + <add_time>N</add_time>
  872 + <SpecifyFormat>N</SpecifyFormat>
  873 + <date_time_format>yyyyMMddHHmmss</date_time_format>
  874 + <sheetname>sheet1</sheetname>
  875 + <autosizecolums>N</autosizecolums>
  876 + <nullisblank>N</nullisblank>
  877 + <protect_sheet>N</protect_sheet>
  878 + <password>Encrypted </password>
  879 + <splitevery>0</splitevery>
  880 + <usetempfiles>N</usetempfiles>
  881 + <tempdirectory/>
  882 + </file>
  883 + <template>
  884 + <enabled>N</enabled>
  885 + <append>N</append>
  886 + <filename>template.xls</filename>
  887 + </template>
  888 + <fields>
  889 + <field>
  890 + <name>route name</name>
  891 + <type>String</type>
  892 + <format/>
  893 + </field>
  894 + <field>
  895 + <name>shift code</name>
  896 + <type>String</type>
  897 + <format/>
  898 + </field>
  899 + <field>
  900 + <name>driver employee number</name>
  901 + <type>String</type>
  902 + <format/>
  903 + </field>
  904 + <field>
  905 + <name>driver name</name>
  906 + <type>String</type>
  907 + <format/>
  908 + </field>
  909 + <field>
  910 + <name>conductor employee number</name>
  911 + <type>String</type>
  912 + <format/>
  913 + </field>
  914 + <field>
  915 + <name>conductor name</name>
  916 + <type>String</type>
  917 + <format/>
  918 + </field>
  919 + </fields>
  920 + <custom>
  921 + <header_font_name>arial</header_font_name>
  922 + <header_font_size>10</header_font_size>
  923 + <header_font_bold>N</header_font_bold>
  924 + <header_font_italic>N</header_font_italic>
  925 + <header_font_underline>no</header_font_underline>
  926 + <header_font_orientation>horizontal</header_font_orientation>
  927 + <header_font_color>black</header_font_color>
  928 + <header_background_color>none</header_background_color>
  929 + <header_row_height>255</header_row_height>
  930 + <header_alignment>left</header_alignment>
  931 + <header_image/>
  932 + <row_font_name>arial</row_font_name>
  933 + <row_font_size>10</row_font_size>
  934 + <row_font_color>black</row_font_color>
  935 + <row_background_color>none</row_background_color>
  936 + </custom>
  937 + <cluster_schema/>
  938 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  939 + <xloc>696</xloc>
  940 + <yloc>257</yloc>
  941 + <draw>Y</draw>
  942 + </GUI>
  943 + </step>
  944 +
  945 + <step>
  946 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</name>
  947 + <type>TableInput</type>
  948 + <description/>
  949 + <distribute>Y</distribute>
  950 + <custom_distribution/>
  951 + <copies>1</copies>
  952 + <partitioning>
  953 + <method>none</method>
  954 + <schema_name/>
  955 + </partitioning>
  956 + <connection>control_jndi</connection>
  957 + <sql>select &#x2a; from bsth_c_s_ecinfo where is_cancel &#x3d; 0 and xl &#x3d; &#x24;&#x7b;xlid&#x7d;</sql>
  958 + <limit>0</limit>
  959 + <lookup/>
  960 + <execute_each_row>N</execute_each_row>
  961 + <variables_active>Y</variables_active>
  962 + <lazy_conversion_active>N</lazy_conversion_active>
  963 + <cluster_schema/>
  964 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  965 + <xloc>90</xloc>
  966 + <yloc>59</yloc>
  967 + <draw>Y</draw>
  968 + </GUI>
  969 + </step>
  970 +
  971 + <step>
  972 + <name>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</name>
  973 + <type>DBJoin</type>
  974 + <description/>
  975 + <distribute>Y</distribute>
  976 + <custom_distribution/>
  977 + <copies>1</copies>
  978 + <partitioning>
  979 + <method>none</method>
  980 + <schema_name/>
  981 + </partitioning>
  982 + <connection>control_jndi</connection>
  983 + <rowlimit>1</rowlimit>
  984 + <sql>select job_codeori as scode, personnel_name as sname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>
  985 + <outer_join>Y</outer_join>
  986 + <replace_vars>N</replace_vars>
  987 + <parameter>
  988 + <field>
  989 + <name>spy</name>
  990 + <type>Integer</type>
  991 + </field>
  992 + </parameter>
  993 + <cluster_schema/>
  994 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  995 + <xloc>491</xloc>
  996 + <yloc>60</yloc>
  997 + <draw>Y</draw>
  998 + </GUI>
  999 + </step>
  1000 +
  1001 + <step>
  1002 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  1003 + <type>SelectValues</type>
  1004 + <description/>
  1005 + <distribute>Y</distribute>
  1006 + <custom_distribution/>
  1007 + <copies>1</copies>
  1008 + <partitioning>
  1009 + <method>none</method>
  1010 + <schema_name/>
  1011 + </partitioning>
  1012 + <fields> <field> <name>xlmc</name>
  1013 + <rename>route name</rename>
  1014 + <length>-2</length>
  1015 + <precision>-2</precision>
  1016 + </field> <field> <name>dbbm</name>
  1017 + <rename>shift code</rename>
  1018 + <length>-2</length>
  1019 + <precision>-2</precision>
  1020 + </field> <field> <name>jcode</name>
  1021 + <rename>driver employee number</rename>
  1022 + <length>-2</length>
  1023 + <precision>-2</precision>
  1024 + </field> <field> <name>jname</name>
  1025 + <rename>driver name</rename>
  1026 + <length>-2</length>
  1027 + <precision>-2</precision>
  1028 + </field> <field> <name>scode</name>
  1029 + <rename>conductor employee number</rename>
  1030 + <length>-2</length>
  1031 + <precision>-2</precision>
  1032 + </field> <field> <name>sname</name>
  1033 + <rename>conductor name</rename>
  1034 + <length>-2</length>
  1035 + <precision>-2</precision>
  1036 + </field> <select_unspecified>N</select_unspecified>
  1037 + </fields> <cluster_schema/>
  1038 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1039 + <xloc>492</xloc>
  1040 + <yloc>164</yloc>
  1041 + <draw>Y</draw>
  1042 + </GUI>
  1043 + </step>
  1044 +
  1045 + <step>
  1046 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  1047 + <type>SortRows</type>
  1048 + <description/>
  1049 + <distribute>Y</distribute>
  1050 + <custom_distribution/>
  1051 + <copies>1</copies>
  1052 + <partitioning>
  1053 + <method>none</method>
  1054 + <schema_name/>
  1055 + </partitioning>
  1056 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  1057 + <prefix>out</prefix>
  1058 + <sort_size>1000000</sort_size>
  1059 + <free_memory/>
  1060 + <compress>N</compress>
  1061 + <compress_variable/>
  1062 + <unique_rows>N</unique_rows>
  1063 + <fields>
  1064 + <field>
  1065 + <name>route name</name>
  1066 + <ascending>Y</ascending>
  1067 + <case_sensitive>N</case_sensitive>
  1068 + <presorted>N</presorted>
  1069 + </field>
  1070 + <field>
  1071 + <name>shift code</name>
  1072 + <ascending>Y</ascending>
  1073 + <case_sensitive>N</case_sensitive>
  1074 + <presorted>N</presorted>
  1075 + </field>
  1076 + </fields>
  1077 + <cluster_schema/>
  1078 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1079 + <xloc>692</xloc>
  1080 + <yloc>164</yloc>
  1081 + <draw>Y</draw>
  1082 + </GUI>
  1083 + </step>
  1084 +
  1085 + <step>
  1086 + <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>
  1087 + <type>DBLookup</type>
  1088 + <description/>
  1089 + <distribute>Y</distribute>
  1090 + <custom_distribution/>
  1091 + <copies>1</copies>
  1092 + <partitioning>
  1093 + <method>none</method>
  1094 + <schema_name/>
  1095 + </partitioning>
  1096 + <connection>control_jndi</connection>
  1097 + <cache>Y</cache>
  1098 + <cache_load_all>Y</cache_load_all>
  1099 + <cache_size>0</cache_size>
  1100 + <lookup>
  1101 + <schema/>
  1102 + <table>bsth_c_line</table>
  1103 + <orderby/>
  1104 + <fail_on_multiple>N</fail_on_multiple>
  1105 + <eat_row_on_failure>N</eat_row_on_failure>
  1106 + <key>
  1107 + <name>xl</name>
  1108 + <field>id</field>
  1109 + <condition>&#x3d;</condition>
  1110 + <name2/>
  1111 + </key>
  1112 + <value>
  1113 + <name>name</name>
  1114 + <rename>xlmc</rename>
  1115 + <default/>
  1116 + <type>String</type>
  1117 + </value>
  1118 + </lookup>
  1119 + <cluster_schema/>
  1120 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1121 + <xloc>227</xloc>
  1122 + <yloc>59</yloc>
  1123 + <draw>Y</draw>
  1124 + </GUI>
  1125 + </step>
  1126 +
  1127 + <step>
  1128 + <name>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</name>
  1129 + <type>DBJoin</type>
  1130 + <description/>
  1131 + <distribute>Y</distribute>
  1132 + <custom_distribution/>
  1133 + <copies>1</copies>
  1134 + <partitioning>
  1135 + <method>none</method>
  1136 + <schema_name/>
  1137 + </partitioning>
  1138 + <connection>control_jndi</connection>
  1139 + <rowlimit>1</rowlimit>
  1140 + <sql>select job_codeori as jcode, personnel_name as jname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>
  1141 + <outer_join>Y</outer_join>
  1142 + <replace_vars>N</replace_vars>
  1143 + <parameter>
  1144 + <field>
  1145 + <name>jsy</name>
  1146 + <type>Integer</type>
  1147 + </field>
  1148 + </parameter>
  1149 + <cluster_schema/>
  1150 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1151 + <xloc>366</xloc>
  1152 + <yloc>60</yloc>
  1153 + <draw>Y</draw>
  1154 + </GUI>
  1155 + </step>
  1156 +
  1157 + <step_error_handling>
  1158 + </step_error_handling>
  1159 + <slave-step-copy-partition-distribution>
  1160 +</slave-step-copy-partition-distribution>
  1161 + <slave_transformation>N</slave_transformation>
  1162 +
  1163 +</transformation>