Commit d11b6caaf34cb50f7dfbbbd52e071a87e5240d94

Authored by 潘钊
2 parents 388978b8 087cb21d

update...

Showing 64 changed files with 1680 additions and 874 deletions
src/main/java/com/bsth/controller/oil/YlbController.java
... ... @@ -229,6 +229,12 @@ public class YlbController extends BaseController<Ylb, Integer>{
229 229 return list;
230 230 }
231 231  
  232 + @RequestMapping(value = "/checkDate",method = RequestMethod.GET)
  233 + public String checkDate(@RequestParam Map<String, Object> map){
  234 + String list=ylbService.checkDate(map);
  235 + return list;
  236 + }
  237 +
232 238 @RequestMapping(value = "/sumYlb",method = RequestMethod.GET)
233 239 public Map<String, Object> sumYlb(@RequestParam Map<String, Object> map){
234 240 Map<String, Object> list=ylbService.sumYlb(map);
... ...
src/main/java/com/bsth/controller/report/ReportController.java
... ... @@ -209,6 +209,12 @@ public class ReportController {
209 209 return service.historyMessageCount(line, date, code);
210 210 }
211 211  
  212 + @RequestMapping(value = "/historyMessageList", method = RequestMethod.GET)
  213 + public List<Object[]> historyMessageList(@RequestParam String line, @RequestParam String date,
  214 + @RequestParam String code,@RequestParam String type) {
  215 + return service.historyMessageList(line, date, code, type);
  216 + }
  217 +
212 218 @RequestMapping(value = "/tbodyTime1", method = RequestMethod.GET)
213 219 public Map<String, Object> tbodyTime1(@RequestParam String line,@RequestParam String ttinfo) {
214 220 return service.tbodyTime1(line, ttinfo);
... ...
src/main/java/com/bsth/controller/schedule/core/TTInfoController.java
... ... @@ -55,6 +55,23 @@ public class TTInfoController extends BController&lt;TTInfo, Long&gt; {
55 55 return rtn;
56 56 }
57 57  
  58 + @RequestMapping(value = "/versiondesc2/{lineid}/{status}")
  59 + public Map<String, Object> getLineVersionDesc2(
  60 + @PathVariable(value = "lineid") Integer lineid,
  61 + @PathVariable(value = "status") Integer status) {
  62 + Map<String, Object> rtn = new HashMap<>();
  63 + try {
  64 + rtn.put("status", ResponseCode.SUCCESS);
  65 + rtn.put("data", ttInfoService.getLineVersions(lineid, status));
  66 +
  67 + } catch (Exception exp) {
  68 + rtn.put("status", ResponseCode.ERROR);
  69 + rtn.put("msg", exp.getMessage());
  70 + }
  71 +
  72 + return rtn;
  73 + }
  74 +
58 75 @RequestMapping(value = "/validate_name", method = RequestMethod.GET)
59 76 public Map<String, Object> validate_name(@RequestParam Map<String, Object> param) {
60 77 Map<String, Object> rtn = new HashMap<>();
... ...
src/main/java/com/bsth/controller/schedule/core/TTInfoDetailController.java
... ... @@ -32,30 +32,18 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; {
32 32 * @param sheetname sheet名字
33 33 * @param lineid 线路id
34 34 * @param linename 线路名称
  35 + * @param lineversion 线路版本
35 36 * @return
36 37 */
37 38 @RequestMapping(value = "/validate/sheet", method = RequestMethod.POST)
38 39 public Map<String, Object> validate_sheet(
39   - String filename, String sheetname, Integer lineid, String linename,
40   - Integer zdlytype, Integer zdlyversion) {
  40 + String filename, String sheetname, Integer lineid, String linename, Integer lineversion) {
41 41 Map<String, Object> rtn = new HashMap<>();
42 42 try {
43   - if (zdlytype == null) {
44   - throw new Exception("请选择路由版本类型");
45   - } else {
46   - if (zdlytype == 1) {
47   - ttInfoDetailService.validateExcelSheet(filename, sheetname, lineid, linename, null);
48   - } else if (zdlytype == 2) {
49   - if (zdlyversion == null || zdlyversion == -1) {
50   - throw new Exception("请选择具体版本");
51   - } else {
52   - ttInfoDetailService.validateExcelSheet(filename, sheetname, lineid, linename, zdlyversion);
53   - }
54   - } else {
55   - throw new Exception("未知路由版本类型");
56   - }
  43 + if (lineversion == null) {
  44 + throw new Exception("线路版本未知");
57 45 }
58   -
  46 + ttInfoDetailService.validateExcelSheet(filename, sheetname, lineid, linename, lineversion);
59 47 rtn.put("status", ResponseCode.SUCCESS);
60 48 } catch (Exception exp) {
61 49 rtn.put("status", ResponseCode.ERROR);
... ...
src/main/java/com/bsth/entity/oil/Dlb.java
... ... @@ -73,7 +73,7 @@ public class Dlb {
73 73 private String fgsname;
74 74  
75 75  
76   - private String lp="";
  76 + private String lp;
77 77  
78 78 public Integer getId() {
79 79 return id;
... ...
src/main/java/com/bsth/entity/oil/Ylb.java
... ... @@ -56,7 +56,7 @@ public class Ylb {
56 56 //进场顺序(根据最先出场和最后进场来关联车辆的存油量)
57 57 private int jcsx;
58 58  
59   - private String lp="";
  59 + private String lp;
60 60 @Transient
61 61 private String bglyh;
62 62  
... ...
src/main/java/com/bsth/repository/CarDeviceRepository.java
1 1 package com.bsth.repository;
2 2  
3 3 import com.bsth.entity.CarDevice;
  4 +
  5 +import java.util.Date;
  6 +import java.util.List;
  7 +
  8 +import org.springframework.data.jpa.repository.Query;
4 9 import org.springframework.stereotype.Repository;
5 10  
6 11 /**
... ... @@ -8,4 +13,6 @@ import org.springframework.stereotype.Repository;
8 13 */
9 14 @Repository
10 15 public interface CarDeviceRepository extends BaseRepository<CarDevice, Long> {
  16 + @Query(value="select s from CarDevice s where s.oldDeviceNo=?1 and s.qyrq>=?2 ")
  17 + List<CarDevice> findCarDevice(String device,Date date );
11 18 }
... ...
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
... ... @@ -58,6 +58,12 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
58 58 + " lp_name,xl_name,cl_zbh",nativeQuery=true)
59 59 List<Object[]> historyMessageCount(String line,String date,String code);
60 60  
  61 + @Query(value="SELECT r.xl_name,r.cl_zbh,d.sender,d.timestamp,d.txt_content "
  62 + + " FROM bsth_c_s_sp_info_real r RIGHT JOIN bsth_v_directive_60 d "
  63 + + " ON r.id = d.sch WHERE d.is_dispatch = 1 AND r.xl_bm like %?1% AND "
  64 + + " r.schedule_date_str = ?2 and r.cl_zbh =?3 ",nativeQuery=true)
  65 + List<Object[]> historyMessageList(String line,String date,String code);
  66 +
61 67 @Query(value = "select max(id) from ScheduleRealInfo")
62 68 Long getMaxId();
63 69  
... ...
src/main/java/com/bsth/repository/schedule/TTInfoRepository.java
... ... @@ -11,7 +11,9 @@ import org.springframework.data.jpa.repository.EntityGraph;
11 11 import org.springframework.data.jpa.repository.Query;
12 12 import org.springframework.stereotype.Repository;
13 13  
  14 +import javax.persistence.Tuple;
14 15 import java.util.List;
  16 +import java.util.Map;
15 17  
16 18 /**
17 19 * Created by xu on 16/5/12.
... ... @@ -31,4 +33,19 @@ public interface TTInfoRepository extends BaseRepository&lt;TTInfo, Long&gt; {
31 33  
32 34 @Query("select t from TTInfo t where t.xl = ?1 and t.isCancel = false")
33 35 List<TTInfo> findInCanceledByXl(Line xl);
  36 +
  37 + @Query(value = "select new map(lv.name as name, lv.startDate as sd, " +
  38 + "lv.status as status, lv.versions as version) " +
  39 + "from LineVersions lv where lv.line.id = ?1 ")
  40 + List<Map<String, Object>> findLineVersionDescs(Integer lineId);
  41 +
  42 + @Query(value = "select new map(lv.name as name, lv.startDate as sd, " +
  43 + "lv.status as status, lv.versions as version) " +
  44 + "from LineVersions lv where lv.line.id = ?1 and lv.versions = ?2 ")
  45 + List<Map<String, Object>> findLineVersionDescs2(Integer lineId, Integer version);
  46 +
  47 + @Query(value = "select new map(lv.name as name, lv.versions as version) " +
  48 + "from LineVersions lv where lv.line.id = ?1 and lv.status = ?2 ")
  49 + List<Map<String, Object>> findLineVersionDescs3(Integer lineId, Integer status);
  50 +
34 51 }
... ...
src/main/java/com/bsth/service/forms/impl/FormsServiceImpl.java
... ... @@ -868,7 +868,7 @@ public class FormsServiceImpl implements FormsService {
868 868  
869 869 sin.setEmptMileage(String.valueOf(zksgl));
870 870 sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc)));
871   - sin.setxL(BasicData.lineCode2NameMap.get(line));
  871 + sin.setXlmc(BasicData.lineCode2NameMap.get(line));
872 872 sin.setClzbh(clzbh);
873 873 sin.setJsy("");
874 874 sin.setjName("");
... ... @@ -876,8 +876,9 @@ public class FormsServiceImpl implements FormsService {
876 876 sin.setHyl("");
877 877 sin.setJzl("");
878 878 sin.setUnyyyl("");
  879 + list_.add(sin);
879 880 }
880   - Collections.sort(list,new SingledataByXlbm());
  881 + Collections.sort(list_,new SingledataByXlbm());
881 882 }
882 883 return list_;
883 884 }
... ... @@ -1539,7 +1540,7 @@ public class FormsServiceImpl implements FormsService {
1539 1540  
1540 1541 sin.setEmptMileage(String.valueOf(zksgl));
1541 1542 sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc)));
1542   - sin.setxL(BasicData.lineCode2NameMap.get(line));
  1543 + sin.setXlmc(BasicData.lineCode2NameMap.get(line));
1543 1544 sin.setClzbh(clzbh);
1544 1545 sin.setJsy("");
1545 1546 sin.setjName("");
... ... @@ -1550,9 +1551,7 @@ public class FormsServiceImpl implements FormsService {
1550 1551 }
1551 1552 Collections.sort(list,new SingledataByXlbm());
1552 1553 }
1553   -
1554 1554 return list;
1555   -
1556 1555 }
1557 1556  
1558 1557 // 运营服务阶段报表
... ...
src/main/java/com/bsth/service/oil/YlbService.java
... ... @@ -19,6 +19,8 @@ public interface YlbService extends BaseService&lt;Ylb, Integer&gt;{
19 19  
20 20 Map<String, Object> sumYlb(Map<String, Object> map);
21 21 String checkJsy(Map<String, Object> map);
  22 + String checkDate(Map<String, Object> map);
  23 +
22 24 List<Map<String, Object>> oilListMonth(Map<String, Object> map);
23 25 List<Ylb> listYlb(Map<String, Object> map);
24 26 StringBuffer checkNbmmNum(String rq, String gsbm,String fgsbm,String xlbm,String nbbm,int lx);
... ...
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
... ... @@ -1442,6 +1442,35 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1442 1442 }
1443 1443 return type;
1444 1444 }
  1445 +
  1446 + @Override
  1447 + public String checkDate(Map<String, Object> map) {
  1448 + // TODO Auto-generated method stub
  1449 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
  1450 + String rq=map.get("rq").toString();
  1451 + String gsbm=map.get("ssgsdm_like").toString();
  1452 + String type="1";
  1453 + if(gsbm.equals("26")){
  1454 + Date date=new Date();
  1455 + Calendar aCalendar = Calendar.getInstance();
  1456 + aCalendar.setTime(date);
  1457 + int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
  1458 + try {
  1459 + aCalendar.setTime(sdf.parse(rq));
  1460 + } catch (ParseException e) {
  1461 + // TODO Auto-generated catch block
  1462 + e.printStackTrace();
  1463 + }
  1464 + int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
  1465 + int days=day1-day2;
  1466 + if(days>3){
  1467 + type="2";
  1468 + }
  1469 + }
  1470 + return type;
  1471 + }
  1472 +
  1473 +
1445 1474  
1446 1475 @Override
1447 1476 public Map<String, Object> saveYlb(Ylb t) {
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -21,6 +21,7 @@ import com.bsth.data.schedule.edit_logs.loggers.FcxxwtLogger;
21 21 import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto;
22 22 import com.bsth.data.schedule.late_adjust.LateAdjustHandle;
23 23 import com.bsth.data.utils.CustomStringUtils;
  24 +import com.bsth.entity.CarDevice;
24 25 import com.bsth.entity.Cars;
25 26 import com.bsth.entity.Line;
26 27 import com.bsth.entity.Personnel;
... ... @@ -39,6 +40,7 @@ import com.bsth.entity.schedule.GuideboardInfo;
39 40 import com.bsth.entity.schedule.SchedulePlanInfo;
40 41 import com.bsth.entity.sys.DutyEmployee;
41 42 import com.bsth.entity.sys.SysUser;
  43 +import com.bsth.repository.CarDeviceRepository;
42 44 import com.bsth.repository.LineRepository;
43 45 import com.bsth.repository.oil.DlbRepository;
44 46 import com.bsth.repository.oil.YlbRepository;
... ... @@ -153,6 +155,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
153 155  
154 156 @Autowired
155 157 DirectiveService directiveService;
  158 +
  159 + @Autowired
  160 + CarDeviceRepository carDeviceRepository;
156 161  
157 162 Logger logger = LoggerFactory.getLogger(this.getClass());
158 163  
... ... @@ -1097,6 +1102,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1097 1102 @Override
1098 1103 public List<Object[]> historyMessage(String line, String date, String code, String type) {
1099 1104 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1105 +
1100 1106 long d = 0;
1101 1107 long t = 0;
1102 1108 if (date.length() > 0) {
... ... @@ -1116,7 +1122,23 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1116 1122 List<Object[]> list = scheduleRealInfoRepository.historyMessage(line, d, t, device);
1117 1123 for (Object[] obj : list) {
1118 1124 if (obj != null) {
1119   - obj[0] =BasicData.deviceId2NbbmMap.get(obj[0].toString());
  1125 +
  1126 + if(BasicData.deviceId2NbbmMap.get(obj[0].toString())==null){
  1127 + List<CarDevice> carDeviceList=new ArrayList<CarDevice>();
  1128 + try {
  1129 + carDeviceList = carDeviceRepository.findCarDevice(obj[0].toString(), sdf.parse(date + " 00:00:00"));
  1130 + } catch (ParseException e) {
  1131 + // TODO Auto-generated catch block
  1132 + e.printStackTrace();
  1133 + }
  1134 + if(carDeviceList.size()>0){
  1135 + obj[0] =carDeviceList.get(0).getClZbh();
  1136 + }else{
  1137 + obj[0] =BasicData.deviceId2NbbmMap.get(obj[0].toString());
  1138 + }
  1139 + }else{
  1140 + obj[0] =BasicData.deviceId2NbbmMap.get(obj[0].toString());
  1141 + }
1120 1142 obj[3] = sdf.format(new Date(Long.parseLong(obj[3].toString())));
1121 1143 obj[4] = BasicData.lineCode2NameMap.get(line);
1122 1144 }
... ...
src/main/java/com/bsth/service/report/ReportService.java
... ... @@ -22,6 +22,8 @@ public interface ReportService {
22 22 List<Map<String, String>> sreachZd(String line,int zdlx);
23 23  
24 24 List<Object[]> historyMessageCount(String line, String date, String code);
  25 + List<Object[]> historyMessageList(String line, String date, String code,String type);
  26 +
25 27  
26 28 Map<String, Object> tbodyTime1(String line ,String ttinfo);
27 29  
... ...
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
1 1 package com.bsth.service.report.impl;
2 2 import com.bsth.data.BasicData;
  3 +import com.bsth.entity.CarDevice;
3 4 import com.bsth.entity.Line;
4 5 import com.bsth.entity.Personnel;
5 6 import com.bsth.entity.StationRoute;
... ... @@ -278,6 +279,48 @@ public class ReportServiceImpl implements ReportService{
278 279 return list;
279 280 }
280 281 @Override
  282 + public List<Object[]> historyMessageList(String line, String date, String code,String type) {
  283 + // TODO Auto-generated method stub
  284 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  285 +
  286 + List<Object[]> list = scheduleRealInfoRepository.historyMessageList(line, date, code);
  287 + for (Object[] obj : list) {
  288 + if (obj != null) {
  289 + obj[3] = sdf.format(new Date(Long.parseLong(obj[3].toString())));
  290 + }
  291 + }
  292 +
  293 + if (type != null && type.length() != 0 && type.equals("export_msg")) {
  294 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  295 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  296 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  297 + Map<String, Object> m = new HashMap<String, Object>();
  298 + ReportUtils ee = new ReportUtils();
  299 + List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
  300 + for (int i = 0; i < list.size(); i++) {
  301 + Map<String, Object> map = new HashMap<String, Object>();
  302 + Object[] obj = list.get(i);
  303 + map.put("num", i + 1);
  304 + map.put("line", obj[0]);
  305 + map.put("clZbh", obj[1]);
  306 + map.put("sender", obj[2]);
  307 + map.put("date", obj[3]);
  308 + map.put("text", obj[4]);
  309 + newList.add(map);
  310 + }
  311 + try {
  312 + listI.add(newList.iterator());
  313 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  314 + ee.excelReplace(listI, new Object[]{m}, path + "mould/message.xls",
  315 + path + "export/调度消息分析" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
  316 + } catch (Exception e) {
  317 + // TODO: handle exception
  318 + e.printStackTrace();
  319 + }
  320 + }
  321 + return list;
  322 + }
  323 + @Override
281 324 public Map<String, Object> tbodyTime1(String line, String ttinfo) {
282 325 DecimalFormat df = new DecimalFormat("#0.00");
283 326 // TODO Auto-generated method stub
... ...
src/main/java/com/bsth/service/report/impl/SheetServiceImpl.java
... ... @@ -149,6 +149,8 @@ public class SheetServiceImpl extends BaseServiceImpl&lt;Sheet, Integer&gt; implements
149 149 // String line =map.get("line").toString();
150 150 // String date =map.get("date").toString();
151 151 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
  152 + SimpleDateFormat sdf_=new SimpleDateFormat("yyyy-MM-dd");
  153 +
152 154 String minfcsj="02:00";
153 155 List<Line> lineList=lineRepository.findLineByCode(line);
154 156 if(lineList.size()>0){
... ... @@ -169,111 +171,7 @@ public class SheetServiceImpl extends BaseServiceImpl&lt;Sheet, Integer&gt; implements
169 171 List<ScheduleRealInfo> listReal0=new ArrayList<ScheduleRealInfo>();
170 172  
171 173 List<ScheduleRealInfo> listReal1=new ArrayList<ScheduleRealInfo>();
172   - //排除所有进出场班次
173   -// List<ScheduleRealInfo> list=scheduleRealInfoRepository.scheduleByDateAndLine2(line, date);
174   - /* for (int i = 0; i < list.size(); i++) {
175   - //排除所有烂班的班次
176   - ScheduleRealInfo s=list.get(i);
177   - Set<ChildTaskPlan> cts=s.getcTasks();
178   - if(cts!=null && cts.size() > 0){
179   -
180   - }
181   - ScheduleRealInfo r=checkBc(s);
182   - String[] fcsj= r.getFcsj().split(":");
183   - Long fcsjL=Long.parseLong(fcsj[0])*60+Long.parseLong(fcsj[1]);
184   - Long fscjT=0L;
185   - if(fcsjL<minSj){
186   - Calendar calendar = new GregorianCalendar();
187   - calendar.setTime(r.getScheduleDate());
188   - calendar.add(calendar.DATE,1);
189   - r.setScheduleDate(calendar.getTime());
190   - try {
191   - fscjT = sdf.parse(sdf.format(r.getScheduleDate())+" "+r.getFcsj()).getTime();
192   - } catch (ParseException e) {
193   - // TODO Auto-generated catch block
194   - e.printStackTrace();
195   - }
196   -
197   - }else{
198   - try {
199   - fscjT =sdf.parse(r.getScheduleDateStr()+" "+r.getFcsj()).getTime();
200   - } catch (ParseException e) {
201   - // TODO Auto-generated catch block
202   - e.printStackTrace();
203   - };
204   - }
205   -
206   - Sheet sheet=new Sheet();
207   - Long fcsjAcual=0L;
208   - if (r.getFcsjActual()!=null) {
209   - if(!r.getFcsjActual().equals("")){
210   - try {
211   - fcsjAcual =sdf.parse(r.getRealExecDate()+" "+r.getFcsjActual()).getTime();
212   - } catch (ParseException e) {
213   - // TODO Auto-generated catch block
214   - e.printStackTrace();
215   - }
216   -
217   -
218   - Long sjc=fscjT-fcsjAcual;
219   - //在快慢五分钟内直接添加
220   - if(sjc>= 3*60*1000*-1 && sjc <=3*60*1000){
221   -
222   - sheet.setDate(r.getScheduleDateStr());
223   - sheet.setRealDate(r.getRealExecDate());
224   - sheet.setJhsjt(fscjT);
225   - sheet.setJhsj(r.getFcsj());
226   - sheet.setSjsjt(fcsjAcual);
227   - sheet.setSjsj(r.getFcsjActual());
228   - sheet.setGs(r.getGsBm());
229   - sheet.setFgs(r.getFgsBm());
230   - sheet.setLine(r.getXlBm());
231   - sheet.setXlDir(r.getXlDir());
232   - sheet.setZdname(r.getQdzName());
233   - sheet.setCreateDate(new Date());
234   - listAdd.add(sheet);
235   - }else{
236   - r.setFcsjActualTime(fcsjAcual);
237   - r.setFcsjT(fscjT);
238   - if(r.getXlDir().equals("0")){
239   - listJhsj0.add(r);
240   - listReal0.add(r);
241   - }else{
242   - listJhsj1.add(r);
243   - listReal1.add(r);
244   - }
245   - }
246   - }else{
247   - sheet.setDate(r.getScheduleDateStr());
248   - sheet.setRealDate(r.getRealExecDate());
249   - sheet.setJhsjt(fscjT);
250   - sheet.setJhsj(r.getFcsj());
251   - sheet.setSjsjt(0L);
252   - sheet.setSjsj("烂班");
253   - sheet.setGs(r.getGsBm());
254   - sheet.setFgs(r.getFgsBm());
255   - sheet.setLine(r.getXlBm());
256   - sheet.setXlDir(r.getXlDir());
257   - sheet.setZdname(r.getQdzName());
258   - sheet.setCreateDate(new Date());
259   - listAdd.add(sheet);
260   - }
261   - }else{
262   - sheet.setDate(r.getScheduleDateStr());
263   - sheet.setRealDate(r.getRealExecDate());
264   - sheet.setJhsjt(fscjT);
265   - sheet.setJhsj(r.getFcsj());
266   - sheet.setSjsjt(0L);
267   - sheet.setSjsj("烂班");
268   - sheet.setGs(r.getGsBm());
269   - sheet.setFgs(r.getFgsBm());
270   - sheet.setLine(r.getXlBm());
271   - sheet.setXlDir(r.getXlDir());
272   - sheet.setZdname(r.getQdzName());
273   - sheet.setCreateDate(new Date());
274   - listAdd.add(sheet);
275   - }
276   - }*/
  174 +
277 175 for (int i = 0; i < list.size(); i++) {
278 176 ScheduleRealInfo s=list.get(i);
279 177 ScheduleRealInfo r=checkBc(s);
... ... @@ -286,7 +184,7 @@ public class SheetServiceImpl extends BaseServiceImpl&lt;Sheet, Integer&gt; implements
286 184 calendar.add(calendar.DATE,1);
287 185 r.setScheduleDate(calendar.getTime());
288 186 try {
289   - fscjT = sdf.parse(sdf.format(r.getScheduleDate())+" "+r.getFcsj()).getTime();
  187 + fscjT = sdf.parse(sdf_.format(r.getScheduleDate())+" "+r.getFcsj()).getTime();
290 188 } catch (ParseException e) {
291 189 // TODO Auto-generated catch block
292 190 e.printStackTrace();
... ...
src/main/java/com/bsth/service/schedule/TTInfoDetailService.java
... ... @@ -34,14 +34,14 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; {
34 34 * @param filename excel文件全路径名
35 35 * @param sheetname sheet名字
36 36 * @param lineid 线路id
37   - * @param zdlyversion 站点路由版本
  37 + * @param lineversion 线路版本
38 38 */
39 39 void validateExcelSheet(
40 40 String filename,
41 41 String sheetname,
42 42 Integer lineid,
43 43 String linename,
44   - Integer zdlyversion) throws ScheduleException;
  44 + Integer lineversion) throws ScheduleException;
45 45  
46 46 /**
47 47 * 验证关联的线路标准信息(以后放到规则引擎里去做)。
... ...
src/main/java/com/bsth/service/schedule/TTInfoService.java
... ... @@ -21,4 +21,6 @@ public interface TTInfoService extends BService&lt;TTInfo, Long&gt; {
21 21  
22 22 String getLineVersionDesc(Integer lineId, Integer version);
23 23  
  24 + List<Map<String, Object>> getLineVersions(Integer lineId, Integer status);
  25 +
24 26 }
... ...
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailDataToolsImpl.java
... ... @@ -72,6 +72,10 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
72 72 try {
73 73 LOGGER.info("//---------------- 导入时刻表明细 start... ----------------//");
74 74  
  75 + if (params.get("lineversion") == null) {
  76 + throw new Exception("线路版本未知");
  77 + }
  78 +
75 79 String filename = file.getAbsolutePath(); // xls xlsx 文件名
76 80 String sheetname = String.valueOf(params.get("sheetname")); // sheet名字
77 81 Long ttid = Long.valueOf(String.valueOf(params.get("ttid"))); // 时刻表id
... ... @@ -79,7 +83,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
79 83 Integer lineid = Integer.valueOf(String.valueOf(params.get("lineinfo"))); // 线路标准id
80 84 String xlname = String.valueOf(params.get("xlname")); // 线路名字
81 85 String ttname = String.valueOf(params.get("ttname")); // 时刻表名字
82   - Integer zdlyversion = params.get("zdlyversion") == null ? null : Integer.valueOf(params.get("zdlyversion").toString());
  86 + Integer lineversion = Integer.valueOf(params.get("lineversion").toString());
83 87  
84 88 LOGGER.info("参数1, xls文件名={},sheet名字={}", filename, sheetname);
85 89 LOGGER.info("参数2, 线路id={},线路名字={}", xlid, xlname);
... ... @@ -149,30 +153,27 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
149 153  
150 154 // 创建ktr转换所需参数
151 155 Map<String, Object> ktrParms = new HashMap<>();
152   - File ktrFile = new File(this.getClass().getResource(
  156 + // 元数据ktr
  157 + File mktrFile = new File(this.getClass().getResource(
153 158 dataToolsProperties.getTtinfodetailMetadatainputktr()).toURI());
154   -// File ktrFile2 = new File(this.getClass().getResource(
155   -// dataToolsProperties.getTtinfodetailDatainputktr()).toURI());
156   - File ktrFile2 = new File(this.getClass().getResource(
157   - dataToolsProperties.getTtinfodetailDatainputktr2()).toURI());
158   - File ktrFile2_ls = new File(this.getClass().getResource(
159   - dataToolsProperties.getTtinfodetailDatainputktr2ls()).toURI());
  159 + // 实际数据ktr
  160 + File ktrFile2_version = new File(this.getClass().getResource(
  161 + dataToolsProperties.getTtinfodetailDatainputktr2version()).toURI());
160 162  
161 163 // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
162   - ktrParms.put("transpath", ktrFile.getAbsolutePath());
  164 + ktrParms.put("transpath", mktrFile.getAbsolutePath());
163 165 ktrParms.put("filepath", fileCal.getAbsolutePath());
164 166 ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
165 167  
166 168 // 附加参数
167   - ktrParms.put("injectktrfile", zdlyversion == null || zdlyversion == -1 ?
168   - ktrFile2.getAbsolutePath() : ktrFile2_ls.getAbsolutePath()); // 注入元数据的ktr文件
  169 + ktrParms.put("injectktrfile", ktrFile2_version.getAbsolutePath()); // 注入元数据的ktr文件
169 170 ktrParms.put("sheetname", sheetname); // sheet工作区的名字
170 171 ktrParms.put("lineinfoid", lineid); // 线路标准id
171 172 ktrParms.put("xlname", xlname); // 线路名称
172 173 ktrParms.put("xlid", xlid); // 线路id
173 174 ktrParms.put("ttinfoname", ttname); // 时刻表名称
174 175 ktrParms.put("ttid", ttid.intValue()); // 时刻表id
175   - ktrParms.put("zdlyversion", zdlyversion); // 站点路由版本
  176 + ktrParms.put("lineversion", lineversion); // 站点路由版本
176 177 ktrParms.put("excelfieldnames", StringUtils.join(columnames.toArray(), ",")); // 时刻表excel输入字段名,以逗号连接
177 178 columnames.remove(0);
178 179 ktrParms.put("normalizefieldnames", StringUtils.join(columnames.toArray(), ",")); // 数据范式化字段名,以逗号连接
... ...
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
... ... @@ -1485,7 +1485,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1485 1485  
1486 1486 try {
1487 1487 String sql = "select a.schedule_date_str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"
1488   - + " a.cc_service, b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"
  1488 + + " a.cc_service, a.remarks, a.adjust_exps, b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"
1489 1489 + " where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'"
1490 1490 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1491 1491 if(line.length() != 0)
... ... @@ -1512,6 +1512,8 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1512 1512 schedule.setGsName(rs.getString("gs_name"));
1513 1513 schedule.setFgsName(rs.getString("fgs_name"));
1514 1514 schedule.setCcService(rs.getBoolean("cc_service"));
  1515 + schedule.setRemarks(rs.getString("remarks")!=null?rs.getString("remarks"):"");
  1516 + schedule.setAdjustExps(rs.getString("adjust_exps")!=null?rs.getString("adjust_exps"):"");
1515 1517  
1516 1518 int startOpt = 0;
1517 1519 if(rs.getString("start_opt") != null && rs.getString("start_opt").trim().length() != 0){
... ... @@ -1569,6 +1571,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1569 1571 subCompanyName = s.getFgsName();
1570 1572 }
1571 1573  
  1574 + List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
1572 1575 for(String xlName : keyMap.keySet()){
1573 1576 List<Map<String, Object>> tempList = new ArrayList<Map<String,Object>>();
1574 1577 Map<String, Object> tempMap = new HashMap<String, Object>();
... ... @@ -1630,10 +1633,38 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1630 1633 temp.put("sjfcLast0", s4.getFcsjActual());
1631 1634 temp.put("delayLast0", delayLast0>0?"+"+delayLast0:delayLast0);
1632 1635 jhbc += 2;
1633   - if(delayFirst0 <= 1l && delayFirst0 >= -3l)
  1636 + if(delayFirst0 <= 1l && delayFirst0 >= -3l){
1634 1637 sjbc++;
1635   - if(delayLast0 <= 1l && delayLast0 >= -3l)
  1638 + } else {
  1639 + Map<String, Object> m = new HashMap<String, Object>();
  1640 + m.put("date", date.substring(5));
  1641 + m.put("line", xlName);
  1642 + m.put("firstOrLast", "上行首发");
  1643 + m.put("qdz", s1.getQdzName());
  1644 + m.put("jhfc", s1.getFcsj());
  1645 + m.put("sjfc", s2.getFcsjActual());
  1646 + m.put("delay", delayFirst0>0?"+"+delayFirst0:delayFirst0);
  1647 + m.put("remarks1", s1.getRemarks());
  1648 + m.put("remarks2", s2.getRemarks());
  1649 + m.put("remarks", s1.getRemarks() + s2.getRemarks());
  1650 + mapList.add(m);
  1651 + }
  1652 + if(delayLast0 <= 1l && delayLast0 >= -3l){
1636 1653 sjbc++;
  1654 + } else {
  1655 + Map<String, Object> m = new HashMap<String, Object>();
  1656 + m.put("date", date.substring(5));
  1657 + m.put("line", xlName);
  1658 + m.put("firstOrLast", "上行末发");
  1659 + m.put("qdz", s3.getQdzName());
  1660 + m.put("jhfc", s3.getFcsj());
  1661 + m.put("sjfc", s4.getFcsjActual());
  1662 + m.put("delay", delayLast0>0?"+"+delayLast0:delayLast0);
  1663 + m.put("remarks1", s3.getRemarks());
  1664 + m.put("remarks2", s4.getRemarks());
  1665 + m.put("remarks", s3.getRemarks() + s4.getRemarks());
  1666 + mapList.add(m);
  1667 + }
1637 1668 } else {
1638 1669 temp.put("qdzFirst0", "--");
1639 1670 temp.put("jhfcFirst0", "/");
... ... @@ -1662,10 +1693,40 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1662 1693 temp.put("sjfcLast1", s4.getFcsjActual());
1663 1694 temp.put("delayLast1", delayLast1>0?"+"+delayLast1:delayLast1);
1664 1695 jhbc += 2;
1665   - if(delayFirst1 <= 1l && delayFirst1 >= -3l)
  1696 + if(delayFirst1 <= 1l && delayFirst1 >= -2l){
1666 1697 sjbc++;
1667   - if(delayLast1 <= 1l && delayLast1 >= -3l)
  1698 + } else {
  1699 + Map<String, Object> m = new HashMap<String, Object>();
  1700 + m.put("date", date.substring(5));
  1701 + m.put("line", xlName);
  1702 + m.put("firstOrLast", "下行首发");
  1703 + m.put("qdz", s1.getQdzName());
  1704 + m.put("jhfc", s1.getFcsj());
  1705 + m.put("sjfc", s2.getFcsjActual());
  1706 + m.put("delay", delayFirst1>0?"+"+delayFirst1:delayFirst1);
  1707 + m.put("remarks1", s1.getRemarks());
  1708 + m.put("remarks2", s2.getRemarks());
  1709 + m.put("remarks", s1.getRemarks() + s2.getAdjustExps());
  1710 + mapList.add(m);
  1711 + }
  1712 +
  1713 + if(delayLast1 <= 1l && delayLast1 >= -2l){
1668 1714 sjbc++;
  1715 + } else {
  1716 + Map<String, Object> m = new HashMap<String, Object>();
  1717 + m.put("date", date.substring(5));
  1718 + m.put("line", xlName);
  1719 + m.put("firstOrLast", "下行末发");
  1720 + m.put("qdz", s3.getQdzName());
  1721 + m.put("jhfc", s3.getFcsj());
  1722 + m.put("sjfc", s4.getFcsjActual());
  1723 + m.put("delay", delayLast1>0?"+"+delayLast1:delayLast1);
  1724 + m.put("remarks1", s3.getRemarks());
  1725 + m.put("remarks2", s4.getRemarks());
  1726 + m.put("remarks", s3.getRemarks() + s4.getRemarks());
  1727 + mapList.add(m);
  1728 + }
  1729 +
1669 1730 } else {
1670 1731 temp.put("qdzFirst1", "--");
1671 1732 temp.put("jhfcFirst1", "/");
... ... @@ -1692,14 +1753,20 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1692 1753 Map<String, Object> tempMap = new HashMap<String, Object>();
1693 1754 if(resList.size() > 0){
1694 1755 tempMap.put("date", "合计汇总");
1695   - int jhbc = 0, sjbc = 0;
  1756 + int jhbc = 0, sjbc = 0, i = 0;
1696 1757 for(Map<String, Object> m : resList){
1697 1758 jhbc += Integer.valueOf(m.get("jhbc").toString());
1698 1759 sjbc += Integer.valueOf(m.get("sjbc").toString());
1699 1760 }
1700 1761 tempMap.put("jhbc", jhbc);
1701 1762 tempMap.put("sjbc", sjbc);
1702   - tempMap.put("zdl", nf.format((float) sjbc / jhbc *100) + "%");
  1763 + tempMap.put("zdl", nf.format((float) sjbc / jhbc * 100) + "%");
  1764 + for(Map<String, Object> m : mapList){
  1765 + m.put("no", ++i);
  1766 + m.put("company", companyName);
  1767 + m.put("subCompany", subCompanyName);
  1768 + }
  1769 + tempMap.put("map", mapList);
1703 1770 if(!type.equals("export"))
1704 1771 resList.add(tempMap);
1705 1772 }
... ...
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
... ... @@ -146,7 +146,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
146 146 }
147 147  
148 148 @Override
149   - public void validateExcelSheet(String filename, String sheetname, Integer lineid, String linename, Integer zdlyversion) throws ScheduleException {
  149 + public void validateExcelSheet(String filename, String sheetname, Integer lineid, String linename, Integer lineversion) throws ScheduleException {
150 150 try {
151 151 File file = new File(filename);
152 152 Workbook workbook;
... ... @@ -178,7 +178,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
178 178 } else {
179 179 // 正则表达式去除右侧数字
180 180 // cell_con = cell_con.replaceAll("[\\d+]", "");
181   - cell_con = cell_con.replaceAll("(\\d+)$", "");
  181 +// cell_con = cell_con.replaceAll("(\\d+)$", "");
  182 +
  183 + // 如果站名中有类似->{数字},使用正则表达式过滤掉
  184 + cell_con = cell_con.replaceAll("(->\\d+)", "");
182 185  
183 186 if (i == 0) { // 第一列必须是路牌2个字
184 187 if (!"路牌".equals(cell_con.trim())) {
... ... @@ -189,35 +192,20 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
189 192 (!"进场".equals(cell_con.trim()))) {
190 193 Map<String, Object> p1 = new HashMap<>();
191 194 p1.put("line.id_eq", lineid);
192   - p1.put("stationName_like", cell_con.trim() + "%"); // 使用模糊匹配
193   - p1.put("stationMark_eq", "B");
  195 + p1.put("stationName_eq", cell_con.trim());
  196 + p1.put("stationMark_eq", "B"); // 起点站
194 197 p1.put("destroy_eq", 0); // 未撤销
195   -
196   -
197   - // TODO:这里要修改(起点站有启用撤销的标志的)
198   -
199   - if (zdlyversion == null) {
200   - List<StationRoute> stationRouteList = (List<StationRoute>) stationRouteService.list(p1);
201   - if (CollectionUtils.isEmpty(stationRouteList)) {
202   - throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中不是起点站", i + 1, cell_con.trim(), linename));
203   - } else if (stationRouteList.size() > 1) {
204   - throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中上下行都是起点站", i + 1, cell_con.trim(), linename));
205   - } else if (StringUtils.isEmpty(stationRouteList.get(0).getStationCode())) {
206   - throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中没有站点编码", i + 1, cell_con.trim(), linename));
207   - }
208   - } else {
209   - p1.put("versions_eq", zdlyversion);
210   - List<LsStationRoute> lsStationRoutes = (List<LsStationRoute>) stationRouteService.list_ls(p1);
211   - if (CollectionUtils.isEmpty(lsStationRoutes)) {
212   - throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中不是起点站", i + 1, cell_con.trim(), linename));
213   - } else if (lsStationRoutes.size() > 1) {
214   - throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中上下行都是起点站", i + 1, cell_con.trim(), linename));
215   - } else if (StringUtils.isEmpty(lsStationRoutes.get(0).getStationCode())) {
216   - throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中没有站点编码", i + 1, cell_con.trim(), linename));
217   - }
  198 + p1.put("versions_eq", lineversion); // 带线路版本
  199 +
  200 + List<LsStationRoute> lsStationRoutes = (List<LsStationRoute>) stationRouteService.list_ls(p1);
  201 + if (CollectionUtils.isEmpty(lsStationRoutes)) {
  202 + throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中不是起点站", i + 1, cell_con.trim(), linename));
  203 + } else if (lsStationRoutes.size() > 1) {
  204 + throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中上下行都是起点站", i + 1, cell_con.trim(), linename));
  205 + } else if (StringUtils.isEmpty(lsStationRoutes.get(0).getStationCode())) {
  206 + throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中没有站点编码", i + 1, cell_con.trim(), linename));
218 207 }
219 208  
220   -
221 209 }
222 210  
223 211 }
... ...
src/main/java/com/bsth/service/schedule/impl/TTInfoServiceImpl.java
1 1 package com.bsth.service.schedule.impl;
2 2  
3   -import com.bsth.entity.LineVersions;
4 3 import com.bsth.entity.schedule.TTInfo;
5 4 import com.bsth.entity.schedule.TTInfoBackup;
6 5 import com.bsth.entity.schedule.TTInfoDetail;
7 6 import com.bsth.repository.schedule.TTInfoBackupRepository;
8 7 import com.bsth.repository.schedule.TTInfoDetailRepository;
9 8 import com.bsth.repository.schedule.TTInfoRepository;
10   -import com.bsth.service.LineVersionsService;
11 9 import com.bsth.service.schedule.TTInfoService;
12 10 import com.bsth.service.schedule.exception.ScheduleException;
13 11 import com.bsth.service.schedule.utils.TimeTableProto;
... ... @@ -24,6 +22,7 @@ import org.springframework.util.CollectionUtils;
24 22  
25 23 import java.io.PrintWriter;
26 24 import java.io.StringWriter;
  25 +import java.sql.Timestamp;
27 26 import java.util.*;
28 27  
29 28 /**
... ... @@ -40,8 +39,6 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
40 39 private TTInfoDetailRepository ttInfoDetailRepository;
41 40 @Autowired
42 41 private TTInfoBackupRepository ttInfoBackupRepository;
43   - @Autowired
44   - private LineVersionsService lineVersionsService;
45 42  
46 43 @Override
47 44 public void validate_name(TTInfo ttInfo) throws ScheduleException {
... ... @@ -140,15 +137,18 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
140 137  
141 138 @Override
142 139 public List<Map<String, Object>> getLineStationRouteVersions(Integer lineId) {
143   - // 获取线路版本
144   - List<LineVersions> lineVersionsList = lineVersionsService.findByLineCode(lineId);
  140 + // 获取线路版本数据
  141 + List<Map<String, Object>> lineVersionDescs = ttInfoRepository.findLineVersionDescs(lineId);
145 142 // 按照version版本降序排序
146   - Collections.sort(lineVersionsList, new Comparator<LineVersions>() {
  143 + Collections.sort(lineVersionDescs, new Comparator<Map<String, Object>>() {
147 144 @Override
148   - public int compare(LineVersions o1, LineVersions o2) {
149   - if (o1.getVersions() > o2.getVersions()) {
  145 + public int compare(Map<String, Object> o1, Map<String, Object> o2) {
  146 + int o1_v = Integer.parseInt(o1.get("version").toString());
  147 + int o2_v = Integer.parseInt(o2.get("version").toString());
  148 +
  149 + if (o1_v > o2_v) {
150 150 return -1;
151   - } else if (o1.getVersions() < o2.getVersions()) {
  151 + } else if (o1_v < o2_v) {
152 152 return 1;
153 153 } else {
154 154 return 0;
... ... @@ -158,14 +158,19 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
158 158  
159 159 // 取最开始的2条记录
160 160 List<Map<String, Object>> mapList = new ArrayList<>();
161   - for (LineVersions lv: lineVersionsList) {
162   - String vname = lv.getName();
163   - String rq = lv.getStartDate() == null ? "未知启用日期" : new DateTime(lv.getStartDate()).toString("YYYY年MM月dd日");
164   - String sdesc = lv.getStatus() == 0 ? "历史" : (lv.getStatus() == 1 ? "当前" : "待更新");
  161 + for (Map<String, Object> lv: lineVersionDescs) {
  162 + String t_name = (String) lv.get("name");
  163 + Timestamp t_sd = (Timestamp) lv.get("sd");
  164 + int status = Integer.parseInt(lv.get("status").toString());
  165 + int version = Integer.parseInt(lv.get("version").toString());
  166 +
  167 + String vname = t_name;
  168 + String rq = t_sd == null ? "未知启用日期" : new DateTime(t_sd).toString("YYYY年MM月dd日");
  169 + String sdesc = status == 0 ? "历史" : (status == 1 ? "当前" : "待更新");
165 170  
166 171 Map<String, Object> value = new HashMap<>();
167 172 value.put("desc", vname + "-" + rq + "-" + sdesc);
168   - value.put("version", lv.getVersions());
  173 + value.put("version", version);
169 174  
170 175 mapList.add(value);
171 176  
... ... @@ -180,28 +185,34 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
180 185 @Override
181 186 public String getLineVersionDesc(Integer lineId, Integer version) {
182 187 // 查找指定版本,并判定
183   - Map<String, Object> param = new HashMap<>();
184   - param.put("line_eq", lineId);
185   - param.put("versions_eq", version);
186   - List<LineVersions> lineVersionsList = (List<LineVersions>) lineVersionsService.list(param);
  188 + List<Map<String, Object>> lineVersionDescs = ttInfoRepository.findLineVersionDescs2(lineId, version);
187 189  
188   - LineVersions lv;
189   - if (CollectionUtils.isEmpty(lineVersionsList)) {
  190 + Map<String, Object> lv;
  191 + if (CollectionUtils.isEmpty(lineVersionDescs)) {
190 192 return "未知版本";
191   - } else if (lineVersionsList.size() > 1) {
  193 + } else if (lineVersionDescs.size() > 1) {
192 194 return "重复版本";
193 195 } else {
194   - lv = lineVersionsList.get(0);
  196 + lv = lineVersionDescs.get(0);
195 197 }
196 198  
197   - String vname = lv.getName();
198   - String rq = lv.getStartDate() == null ? "未知启用日期" : new DateTime(lv.getStartDate()).toString("YYYY年MM月dd日");
199   - String sdesc = lv.getStatus() == 0 ? "历史" : (lv.getStatus() == 1 ? "当前" : "待更新");
  199 + String t_name = (String) lv.get("name");
  200 + Timestamp t_sd = (Timestamp) lv.get("sd");
  201 + int status = Integer.parseInt(lv.get("status").toString());
  202 +
  203 + String vname = t_name;
  204 + String rq = t_sd == null ? "未知启用日期" : new DateTime(t_sd).toString("YYYY年MM月dd日");
  205 + String sdesc = status == 0 ? "历史" : (status == 1 ? "当前" : "待更新");
200 206  
201 207 return String.format("%s-%s-%s", vname, rq, sdesc);
202 208 }
203 209  
204 210 @Override
  211 + public List<Map<String, Object>> getLineVersions(Integer lineId, Integer status) {
  212 + return ttInfoRepository.findLineVersionDescs3(lineId, status);
  213 + }
  214 +
  215 + @Override
205 216 @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.REPEATABLE_READ)
206 217 public void backUp(Long ttInfoId) throws ScheduleException {
207 218 LOG.info(">>>>>>开始备份时刻表<<<<<<");
... ...
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
... ... @@ -75,12 +75,12 @@ public class DataToolsProperties {
75 75 /** 时刻表明细信息导入 */
76 76 @NotNull
77 77 private String ttinfodetailDatainputktr;
78   - /** 时刻表明细信息导入 */
  78 + /** 时刻表明细信息导入2 */
79 79 @NotNull
80 80 private String ttinfodetailDatainputktr2;
81   - /** 时刻表明细信息导入 */
  81 + /** 时刻表明细信息导入2(带版本) */
82 82 @NotNull
83   - private String ttinfodetailDatainputktr2ls;
  83 + private String ttinfodetailDatainputktr2version;
84 84 /** 排班规则信息导入 */
85 85 @NotNull
86 86 private String scheduleruleDatainputktr;
... ... @@ -314,12 +314,12 @@ public class DataToolsProperties {
314 314 this.carsconfigDataoutputktr = carsconfigDataoutputktr;
315 315 }
316 316  
317   - public String getTtinfodetailDatainputktr2ls() {
318   - return ttinfodetailDatainputktr2ls;
  317 + public String getTtinfodetailDatainputktr2version() {
  318 + return ttinfodetailDatainputktr2version;
319 319 }
320 320  
321   - public void setTtinfodetailDatainputktr2ls(String ttinfodetailDatainputktr2ls) {
322   - this.ttinfodetailDatainputktr2ls = ttinfodetailDatainputktr2ls;
  321 + public void setTtinfodetailDatainputktr2version(String ttinfodetailDatainputktr2version) {
  322 + this.ttinfodetailDatainputktr2version = ttinfodetailDatainputktr2version;
323 323 }
324 324  
325 325 public String getEmployeesconfigDataoutputktr() {
... ...
src/main/resources/datatools/config-dev.properties
... ... @@ -39,8 +39,8 @@ datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr
39 39 datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
40 40 # 时刻表明细信息导入2
41 41 datatools.ttinfodetail_datainputktr2=/datatools/ktrs/ttinfodetailDataInput2.ktr
42   -# 时刻表明细信息导入2_ls
43   -datatools.ttinfodetail_datainputktr2ls=/datatools/ktrs/ttinfodetailDataInput2_ls.ktr
  42 +# 时刻表明细信息导入2(版本化)
  43 +datatools.ttinfodetail_datainputktr2version=/datatools/ktrs/ttinfodetailDataInput2_version.ktr
44 44  
45 45 # 车辆配置信息导入
46 46 datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
... ...
src/main/resources/datatools/config-prod.properties
... ... @@ -40,8 +40,8 @@ datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr
40 40 datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
41 41 # 时刻表明细信息导入2
42 42 datatools.ttinfodetail_datainputktr2=/datatools/ktrs/ttinfodetailDataInput2.ktr
43   -# 时刻表明细信息导入2_ls
44   -datatools.ttinfodetail_datainputktr2ls=/datatools/ktrs/ttinfodetailDataInput2_ls.ktr
  43 +# 时刻表明细信息导入2(版本化)
  44 +datatools.ttinfodetail_datainputktr2version=/datatools/ktrs/ttinfodetailDataInput2_version.ktr
45 45  
46 46 # 车辆配置信息导入
47 47 datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
... ...
src/main/resources/datatools/ktrs/ttinfodetailDataInput2_ls.ktr renamed to src/main/resources/datatools/ktrs/ttinfodetailDataInput2_version.ktr
... ... @@ -416,6 +416,7 @@
416 416 <hop> <from>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 3</to><enabled>Y</enabled> </hop>
417 417 <hop> <from>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</from><to>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
418 418 <hop> <from>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</from><to>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
  419 + <hop> <from>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</from><to>&#x66f4;&#x65b0;&#x65f6;&#x523b;&#x8868;&#x4e3b;&#x8868;&#x7248;&#x672c;</to><enabled>Y</enabled> </hop>
419 420 </order>
420 421 <step>
421 422 <name>&#x4e0a;&#x4e0b;&#x884c;NULL&#x5224;&#x5b9a;</name>
... ... @@ -829,7 +830,7 @@
829 830 <optimizationLevel>9</optimizationLevel>
830 831 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
831 832 <jsScript_name>Script 1</jsScript_name>
832   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;if &#x28;qdzname &#x21;&#x3d; &#x22;&#x51fa;&#x573a;&#x22; &#x26;&#x26; qdzname &#x21;&#x3d; &#x22;&#x8fdb;&#x573a;&#x22;&#x29; &#x7b;&#xa; qdzname &#x3d; qdzname &#x2b; &#x22;&#x25;&#x22;&#x3b; &#x2f;&#x2f; &#x6a21;&#x7cca;&#x5339;&#x914d;&#x6807;&#x8bc6;&#x7b26;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu &#x3d; sendtime.replace&#x28;&#x2f;&#x5c;s&#x2f;g, &#x22;&#x22;&#x29;&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5168;&#x90e8;&#x4fee;&#x6b63;&#x5b8c;&#x6bd5;&#x540e;&#xff0c;&#x5982;&#x679c;&#x957f;&#x5ea6;&#x4e0d;&#x662f;5&#xff0c;&#x524d;&#x9762;&#x8865;0&#xa;if &#x28;sendtime_calcu.length &#x21;&#x3d; 5&#x29; &#x7b;&#xa; sendtime_calcu &#x3d; &#x22;0&#x22; &#x2b; sendtime_calcu&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script>
  833 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x5982;&#x679c;&#x7ad9;&#x540d;&#x4e2d;&#x6709;&#x7c7b;&#x4f3c;-&#x3e;&#x7b;&#x6570;&#x5b57;&#x7d;&#xff0c;&#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x8fc7;&#x6ee4;&#x6389;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;-&#x3e;&#x5c;d&#x2b;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;if &#x28;qdzname &#x21;&#x3d; &#x22;&#x51fa;&#x573a;&#x22; &#x26;&#x26; qdzname &#x21;&#x3d; &#x22;&#x8fdb;&#x573a;&#x22;&#x29; &#x7b;&#xa; qdzname &#x3d; qdzname &#x2b; &#x22;&#x25;&#x22;&#x3b; &#x2f;&#x2f; &#x6a21;&#x7cca;&#x5339;&#x914d;&#x6807;&#x8bc6;&#x7b26;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu &#x3d; sendtime.replace&#x28;&#x2f;&#x5c;s&#x2f;g, &#x22;&#x22;&#x29;&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5168;&#x90e8;&#x4fee;&#x6b63;&#x5b8c;&#x6bd5;&#x540e;&#xff0c;&#x5982;&#x679c;&#x957f;&#x5ea6;&#x4e0d;&#x662f;5&#xff0c;&#x524d;&#x9762;&#x8865;0&#xa;if &#x28;sendtime_calcu.length &#x21;&#x3d; 5&#x29; &#x7b;&#xa; sendtime_calcu &#x3d; &#x22;0&#x22; &#x2b; sendtime_calcu&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script>
833 834 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
834 835 <rename>qdzname</rename>
835 836 <type>String</type>
... ... @@ -1095,6 +1096,11 @@
1095 1096 <rename>ists</rename>
1096 1097 <update>Y</update>
1097 1098 </value>
  1099 + <value>
  1100 + <name>line_version</name>
  1101 + <rename>version</rename>
  1102 + <update>Y</update>
  1103 + </value>
1098 1104 </lookup>
1099 1105 <cluster_schema/>
1100 1106 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
... ... @@ -1241,6 +1247,11 @@
1241 1247 <rename>ists</rename>
1242 1248 <update>Y</update>
1243 1249 </value>
  1250 + <value>
  1251 + <name>line_version</name>
  1252 + <rename>version</rename>
  1253 + <update>Y</update>
  1254 + </value>
1244 1255 </lookup>
1245 1256 <cluster_schema/>
1246 1257 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
... ... @@ -1387,6 +1398,11 @@
1387 1398 <rename>ists</rename>
1388 1399 <update>Y</update>
1389 1400 </value>
  1401 + <value>
  1402 + <name>line_version</name>
  1403 + <rename>version</rename>
  1404 + <update>Y</update>
  1405 + </value>
1390 1406 </lookup>
1391 1407 <cluster_schema/>
1392 1408 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
... ... @@ -1465,6 +1481,45 @@
1465 1481 </step>
1466 1482  
1467 1483 <step>
  1484 + <name>&#x66f4;&#x65b0;&#x65f6;&#x523b;&#x8868;&#x4e3b;&#x8868;&#x7248;&#x672c;</name>
  1485 + <type>Update</type>
  1486 + <description/>
  1487 + <distribute>Y</distribute>
  1488 + <custom_distribution/>
  1489 + <copies>1</copies>
  1490 + <partitioning>
  1491 + <method>none</method>
  1492 + <schema_name/>
  1493 + </partitioning>
  1494 + <connection>bus_control_variable</connection>
  1495 + <skip_lookup>N</skip_lookup>
  1496 + <commit>100</commit>
  1497 + <use_batch>N</use_batch>
  1498 + <error_ignored>N</error_ignored>
  1499 + <ignore_flag_field/>
  1500 + <lookup>
  1501 + <schema/>
  1502 + <table>bsth_c_s_ttinfo</table>
  1503 + <key>
  1504 + <name>ttid</name>
  1505 + <field>id</field>
  1506 + <condition>&#x3d;</condition>
  1507 + <name2/>
  1508 + </key>
  1509 + <value>
  1510 + <name>line_version</name>
  1511 + <rename>version</rename>
  1512 + </value>
  1513 + </lookup>
  1514 + <cluster_schema/>
  1515 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1516 + <xloc>863</xloc>
  1517 + <yloc>338</yloc>
  1518 + <draw>Y</draw>
  1519 + </GUI>
  1520 + </step>
  1521 +
  1522 + <step>
1468 1523 <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</name>
1469 1524 <type>DBLookup</type>
1470 1525 <description/>
... ... @@ -2197,7 +2252,7 @@
2197 2252 <cluster_schema/>
2198 2253 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2199 2254 <xloc>1013</xloc>
2200   - <yloc>265</yloc>
  2255 + <yloc>221</yloc>
2201 2256 <draw>Y</draw>
2202 2257 </GUI>
2203 2258 </step>
... ... @@ -2733,6 +2788,41 @@
2733 2788 </step>
2734 2789  
2735 2790 <step>
  2791 + <name>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</name>
  2792 + <type>SelectValues</type>
  2793 + <description/>
  2794 + <distribute>N</distribute>
  2795 + <custom_distribution/>
  2796 + <copies>1</copies>
  2797 + <partitioning>
  2798 + <method>none</method>
  2799 + <schema_name/>
  2800 + </partitioning>
  2801 + <fields> <select_unspecified>Y</select_unspecified>
  2802 + <meta> <name>zdlyversion_</name>
  2803 + <rename>version</rename>
  2804 + <type>Integer</type>
  2805 + <length>-2</length>
  2806 + <precision>-2</precision>
  2807 + <conversion_mask/>
  2808 + <date_format_lenient>false</date_format_lenient>
  2809 + <date_format_locale/>
  2810 + <date_format_timezone/>
  2811 + <lenient_string_to_number>false</lenient_string_to_number>
  2812 + <encoding/>
  2813 + <decimal_symbol/>
  2814 + <grouping_symbol/>
  2815 + <currency_symbol/>
  2816 + <storage_type/>
  2817 + </meta> </fields> <cluster_schema/>
  2818 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2819 + <xloc>1016</xloc>
  2820 + <yloc>305</yloc>
  2821 + <draw>Y</draw>
  2822 + </GUI>
  2823 + </step>
  2824 +
  2825 + <step>
2736 2826 <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</name>
2737 2827 <type>SelectValues</type>
2738 2828 <description/>
... ... @@ -3071,41 +3161,6 @@
3071 3161 </GUI>
3072 3162 </step>
3073 3163  
3074   - <step>
3075   - <name>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</name>
3076   - <type>SelectValues</type>
3077   - <description/>
3078   - <distribute>Y</distribute>
3079   - <custom_distribution/>
3080   - <copies>1</copies>
3081   - <partitioning>
3082   - <method>none</method>
3083   - <schema_name/>
3084   - </partitioning>
3085   - <fields> <select_unspecified>Y</select_unspecified>
3086   - <meta> <name>zdlyversion_</name>
3087   - <rename>version</rename>
3088   - <type>Integer</type>
3089   - <length>-2</length>
3090   - <precision>-2</precision>
3091   - <conversion_mask/>
3092   - <date_format_lenient>false</date_format_lenient>
3093   - <date_format_locale/>
3094   - <date_format_timezone/>
3095   - <lenient_string_to_number>false</lenient_string_to_number>
3096   - <encoding/>
3097   - <decimal_symbol/>
3098   - <grouping_symbol/>
3099   - <currency_symbol/>
3100   - <storage_type/>
3101   - </meta> </fields> <cluster_schema/>
3102   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
3103   - <xloc>1015</xloc>
3104   - <yloc>333</yloc>
3105   - <draw>Y</draw>
3106   - </GUI>
3107   - </step>
3108   -
3109 3164 <step_error_handling>
3110 3165 <error>
3111 3166 <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</source_step>
... ...
src/main/resources/datatools/ktrs/ttinfodetailDataInputMetaData.ktr
... ... @@ -35,6 +35,11 @@
35 35 <description>&#x7ebf;&#x8def;&#x6807;&#x51c6;id</description>
36 36 </parameter>
37 37 <parameter>
  38 + <name>lineversion</name>
  39 + <default_value>-1</default_value>
  40 + <description>&#x7ebf;&#x8def;&#x7248;&#x672c;</description>
  41 + </parameter>
  42 + <parameter>
38 43 <name>normalizefieldnames</name>
39 44 <default_value>&#x51fa;&#x573a;,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;1,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;1,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;2,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;2,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;3,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;3,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;4,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;4,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;5,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;5,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;6,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;6,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;7,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;7,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;8,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;8,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;9,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;9,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;10,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;10,&#x8fdb;&#x573a;</default_value>
40 45 <description>&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
... ... @@ -62,18 +67,13 @@
62 67 <parameter>
63 68 <name>xlid</name>
64 69 <default_value>-999</default_value>
65   - <description/>
  70 + <description>&#x7ebf;&#x8def;id</description>
66 71 </parameter>
67 72 <parameter>
68 73 <name>xlname</name>
69 74 <default_value>&#x95f5;&#x884c;26&#x8def;</default_value>
70 75 <description>&#x7ebf;&#x8def;&#x540d;&#x79f0;</description>
71 76 </parameter>
72   - <parameter>
73   - <name>zdlyversion</name>
74   - <default_value>-1</default_value>
75   - <description/>
76   - </parameter>
77 77 </parameters>
78 78 <log>
79 79 <trans-log-table><connection/>
... ... @@ -436,15 +436,15 @@
436 436 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
437 437 <source_field>nfieldname</source_field>
438 438 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
439   - <target_attribute_key>LENGTH</target_attribute_key>
440   - <target_detail>Y</target_detail>
441   - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
442   - <source_field>length</source_field>
443   - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
444 439 <target_attribute_key>SHEET_NAME</target_attribute_key>
445 440 <target_detail>Y</target_detail>
446 441 <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>
447 442 <source_field>sheetname_</source_field>
  443 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  444 + <target_attribute_key>LENGTH</target_attribute_key>
  445 + <target_detail>Y</target_detail>
  446 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  447 + <source_field>length</source_field>
448 448 </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
449 449 <target_attribute_key>NAME</target_attribute_key>
450 450 <target_detail>Y</target_detail>
... ... @@ -460,41 +460,41 @@
460 460 <target_detail>Y</target_detail>
461 461 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
462 462 <source_field>fieldName</source_field>
463   - </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
464   - <target_attribute_key>VALUE</target_attribute_key>
465   - <target_detail>Y</target_detail>
466   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
467   - <source_field>fieldName</source_field>
468 463 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
469 464 <target_attribute_key>TRIM_TYPE</target_attribute_key>
470 465 <target_detail>Y</target_detail>
471 466 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
472 467 <source_field>trim_type</source_field>
473 468 </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
474   - <target_attribute_key>NORMALISED</target_attribute_key>
  469 + <target_attribute_key>VALUE</target_attribute_key>
475 470 <target_detail>Y</target_detail>
476 471 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
477   - <source_field>value</source_field>
  472 + <source_field>fieldName</source_field>
478 473 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
479 474 <target_attribute_key>REPEAT</target_attribute_key>
480 475 <target_detail>Y</target_detail>
481 476 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
482 477 <source_field>repeat</source_field>
483   - </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  478 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
484 479 <target_attribute_key>NORMALISED</target_attribute_key>
485 480 <target_detail>Y</target_detail>
486   - <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
487   - <source_field>valuefield</source_field>
  481 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  482 + <source_field>value</source_field>
488 483 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
489   - <target_attribute_key>VALUE</target_attribute_key>
  484 + <target_attribute_key>NORMALISED</target_attribute_key>
490 485 <target_detail>Y</target_detail>
491 486 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
492   - <source_field>nfieldname</source_field>
  487 + <source_field>valuefield</source_field>
493 488 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
494 489 <target_attribute_key>FORMAT</target_attribute_key>
495 490 <target_detail>Y</target_detail>
496 491 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
497 492 <source_field>format</source_field>
  493 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  494 + <target_attribute_key>VALUE</target_attribute_key>
  495 + <target_detail>Y</target_detail>
  496 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  497 + <source_field>nfieldname</source_field>
498 498 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
499 499 <target_attribute_key>PRECISION</target_attribute_key>
500 500 <target_detail>Y</target_detail>
... ... @@ -917,6 +917,63 @@
917 917 </step>
918 918  
919 919 <step>
  920 + <name>&#x589e;&#x52a0;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c; metadata</name>
  921 + <type>Constant</type>
  922 + <description/>
  923 + <distribute>Y</distribute>
  924 + <custom_distribution/>
  925 + <copies>1</copies>
  926 + <partitioning>
  927 + <method>none</method>
  928 + <schema_name/>
  929 + </partitioning>
  930 + <fields>
  931 + <field>
  932 + <name>col_name</name>
  933 + <type>String</type>
  934 + <format/>
  935 + <currency/>
  936 + <decimal/>
  937 + <group/>
  938 + <nullif>zdlyversion_</nullif>
  939 + <length>-1</length>
  940 + <precision>-1</precision>
  941 + <set_empty_string>N</set_empty_string>
  942 + </field>
  943 + <field>
  944 + <name>col_type</name>
  945 + <type>String</type>
  946 + <format/>
  947 + <currency/>
  948 + <decimal/>
  949 + <group/>
  950 + <nullif>String</nullif>
  951 + <length>-1</length>
  952 + <precision>-1</precision>
  953 + <set_empty_string>N</set_empty_string>
  954 + </field>
  955 + <field>
  956 + <name>col_value</name>
  957 + <type>String</type>
  958 + <format/>
  959 + <currency/>
  960 + <decimal/>
  961 + <group/>
  962 + <nullif>replace</nullif>
  963 + <length>-1</length>
  964 + <precision>-1</precision>
  965 + <set_empty_string>N</set_empty_string>
  966 + </field>
  967 + </fields>
  968 + <cluster_schema/>
  969 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  970 + <xloc>390</xloc>
  971 + <yloc>532</yloc>
  972 + <draw>Y</draw>
  973 + </GUI>
  974 + </step>
  975 +
  976 + <step>
920 977 <name>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</name>
921 978 <type>Constant</type>
922 979 <description/>
... ... @@ -1056,6 +1113,31 @@
1056 1113 </step>
1057 1114  
1058 1115 <step>
  1116 + <name>&#x66ff;&#x6362;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;</name>
  1117 + <type>SetValueField</type>
  1118 + <description/>
  1119 + <distribute>Y</distribute>
  1120 + <custom_distribution/>
  1121 + <copies>1</copies>
  1122 + <partitioning>
  1123 + <method>none</method>
  1124 + <schema_name/>
  1125 + </partitioning>
  1126 + <fields>
  1127 + <field>
  1128 + <name>col_value</name>
  1129 + <replaceby>zdlyversion_</replaceby>
  1130 + </field>
  1131 + </fields>
  1132 + <cluster_schema/>
  1133 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1134 + <xloc>594</xloc>
  1135 + <yloc>532</yloc>
  1136 + <draw>Y</draw>
  1137 + </GUI>
  1138 + </step>
  1139 +
  1140 + <step>
1059 1141 <name>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
1060 1142 <type>SetValueField</type>
1061 1143 <description/>
... ... @@ -1081,6 +1163,38 @@
1081 1163 </step>
1082 1164  
1083 1165 <step>
  1166 + <name>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;metadata&#x5b57;&#x6bb5;</name>
  1167 + <type>SelectValues</type>
  1168 + <description/>
  1169 + <distribute>Y</distribute>
  1170 + <custom_distribution/>
  1171 + <copies>1</copies>
  1172 + <partitioning>
  1173 + <method>none</method>
  1174 + <schema_name/>
  1175 + </partitioning>
  1176 + <fields> <field> <name>col_name</name>
  1177 + <rename/>
  1178 + <length>-2</length>
  1179 + <precision>-2</precision>
  1180 + </field> <field> <name>col_type</name>
  1181 + <rename/>
  1182 + <length>-2</length>
  1183 + <precision>-2</precision>
  1184 + </field> <field> <name>col_value</name>
  1185 + <rename/>
  1186 + <length>-2</length>
  1187 + <precision>-2</precision>
  1188 + </field> <select_unspecified>N</select_unspecified>
  1189 + </fields> <cluster_schema/>
  1190 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1191 + <xloc>741</xloc>
  1192 + <yloc>533</yloc>
  1193 + <draw>Y</draw>
  1194 + </GUI>
  1195 + </step>
  1196 +
  1197 + <step>
1084 1198 <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
1085 1199 <type>SelectValues</type>
1086 1200 <description/>
... ... @@ -1302,6 +1416,39 @@
1302 1416 </step>
1303 1417  
1304 1418 <step>
  1419 + <name>&#x83b7;&#x53d6;&#x7ad9;&#x70b9;&#x8def;&#x7531;version</name>
  1420 + <type>GetVariable</type>
  1421 + <description/>
  1422 + <distribute>Y</distribute>
  1423 + <custom_distribution/>
  1424 + <copies>1</copies>
  1425 + <partitioning>
  1426 + <method>none</method>
  1427 + <schema_name/>
  1428 + </partitioning>
  1429 + <fields>
  1430 + <field>
  1431 + <name>zdlyversion_</name>
  1432 + <variable>&#x24;&#x7b;lineversion&#x7d;</variable>
  1433 + <type>String</type>
  1434 + <format/>
  1435 + <currency/>
  1436 + <decimal/>
  1437 + <group/>
  1438 + <length>-1</length>
  1439 + <precision>-1</precision>
  1440 + <trim_type>none</trim_type>
  1441 + </field>
  1442 + </fields>
  1443 + <cluster_schema/>
  1444 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1445 + <xloc>187</xloc>
  1446 + <yloc>534</yloc>
  1447 + <draw>Y</draw>
  1448 + </GUI>
  1449 + </step>
  1450 +
  1451 + <step>
1305 1452 <name>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
1306 1453 <type>GetVariable</type>
1307 1454 <description/>
... ... @@ -1419,153 +1566,6 @@
1419 1566 </GUI>
1420 1567 </step>
1421 1568  
1422   - <step>
1423   - <name>&#x589e;&#x52a0;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c; metadata</name>
1424   - <type>Constant</type>
1425   - <description/>
1426   - <distribute>Y</distribute>
1427   - <custom_distribution/>
1428   - <copies>1</copies>
1429   - <partitioning>
1430   - <method>none</method>
1431   - <schema_name/>
1432   - </partitioning>
1433   - <fields>
1434   - <field>
1435   - <name>col_name</name>
1436   - <type>String</type>
1437   - <format/>
1438   - <currency/>
1439   - <decimal/>
1440   - <group/>
1441   - <nullif>zdlyversion_</nullif>
1442   - <length>-1</length>
1443   - <precision>-1</precision>
1444   - <set_empty_string>N</set_empty_string>
1445   - </field>
1446   - <field>
1447   - <name>col_type</name>
1448   - <type>String</type>
1449   - <format/>
1450   - <currency/>
1451   - <decimal/>
1452   - <group/>
1453   - <nullif>String</nullif>
1454   - <length>-1</length>
1455   - <precision>-1</precision>
1456   - <set_empty_string>N</set_empty_string>
1457   - </field>
1458   - <field>
1459   - <name>col_value</name>
1460   - <type>String</type>
1461   - <format/>
1462   - <currency/>
1463   - <decimal/>
1464   - <group/>
1465   - <nullif>replace</nullif>
1466   - <length>-1</length>
1467   - <precision>-1</precision>
1468   - <set_empty_string>N</set_empty_string>
1469   - </field>
1470   - </fields>
1471   - <cluster_schema/>
1472   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1473   - <xloc>390</xloc>
1474   - <yloc>532</yloc>
1475   - <draw>Y</draw>
1476   - </GUI>
1477   - </step>
1478   -
1479   - <step>
1480   - <name>&#x66ff;&#x6362;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;</name>
1481   - <type>SetValueField</type>
1482   - <description/>
1483   - <distribute>Y</distribute>
1484   - <custom_distribution/>
1485   - <copies>1</copies>
1486   - <partitioning>
1487   - <method>none</method>
1488   - <schema_name/>
1489   - </partitioning>
1490   - <fields>
1491   - <field>
1492   - <name>col_value</name>
1493   - <replaceby>zdlyversion_</replaceby>
1494   - </field>
1495   - </fields>
1496   - <cluster_schema/>
1497   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1498   - <xloc>594</xloc>
1499   - <yloc>532</yloc>
1500   - <draw>Y</draw>
1501   - </GUI>
1502   - </step>
1503   -
1504   - <step>
1505   - <name>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;metadata&#x5b57;&#x6bb5;</name>
1506   - <type>SelectValues</type>
1507   - <description/>
1508   - <distribute>Y</distribute>
1509   - <custom_distribution/>
1510   - <copies>1</copies>
1511   - <partitioning>
1512   - <method>none</method>
1513   - <schema_name/>
1514   - </partitioning>
1515   - <fields> <field> <name>col_name</name>
1516   - <rename/>
1517   - <length>-2</length>
1518   - <precision>-2</precision>
1519   - </field> <field> <name>col_type</name>
1520   - <rename/>
1521   - <length>-2</length>
1522   - <precision>-2</precision>
1523   - </field> <field> <name>col_value</name>
1524   - <rename/>
1525   - <length>-2</length>
1526   - <precision>-2</precision>
1527   - </field> <select_unspecified>N</select_unspecified>
1528   - </fields> <cluster_schema/>
1529   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1530   - <xloc>741</xloc>
1531   - <yloc>533</yloc>
1532   - <draw>Y</draw>
1533   - </GUI>
1534   - </step>
1535   -
1536   - <step>
1537   - <name>&#x83b7;&#x53d6;&#x7ad9;&#x70b9;&#x8def;&#x7531;version</name>
1538   - <type>GetVariable</type>
1539   - <description/>
1540   - <distribute>Y</distribute>
1541   - <custom_distribution/>
1542   - <copies>1</copies>
1543   - <partitioning>
1544   - <method>none</method>
1545   - <schema_name/>
1546   - </partitioning>
1547   - <fields>
1548   - <field>
1549   - <name>zdlyversion_</name>
1550   - <variable>&#x24;&#x7b;zdlyversion&#x7d;</variable>
1551   - <type>String</type>
1552   - <format/>
1553   - <currency/>
1554   - <decimal/>
1555   - <group/>
1556   - <length>-1</length>
1557   - <precision>-1</precision>
1558   - <trim_type>none</trim_type>
1559   - </field>
1560   - </fields>
1561   - <cluster_schema/>
1562   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1563   - <xloc>187</xloc>
1564   - <yloc>534</yloc>
1565   - <draw>Y</draw>
1566   - </GUI>
1567   - </step>
1568   -
1569 1569 <step_error_handling>
1570 1570 </step_error_handling>
1571 1571 <slave-step-copy-partition-distribution>
... ...
src/main/resources/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr
... ... @@ -16,7 +16,7 @@
16 16 </parameter>
17 17 <parameter>
18 18 <name>injectktrfile</name>
19   - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataOutput.ktr</default_value>
  19 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_parent&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataOutput.ktr</default_value>
20 20 <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>
21 21 </parameter>
22 22 <parameter>
... ... @@ -91,8 +91,8 @@
91 91 <notepads>
92 92 <notepad>
93 93 <note>TODO&#xff1a;&#x5982;&#x679c;groupby &#x52a0;&#x5165;bctype&#xff0c;&#xa;&#x5219;&#x4ee5;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;&#xff0c;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5206;&#x7ec4;&#x7684;&#x6570;&#x636e;&#x53ef;&#x80fd;&#x91cd;&#x590d;&#xff0c;&#xa;&#x5e94;&#x4e3a;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x53ef;&#x80fd;&#x4e0d;&#x4e00;&#x6837;&#xff08;&#x5bfc;&#x5165;&#x4e4b;&#x540e;&#x4eba;&#x4e3a;&#x4fee;&#x6539;&#x7684;&#xff0c;&#x5982;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6539;&#x6210;&#x533a;&#x95f4;&#xff09;&#xff0c;&#xa;&#x56e0;&#x4e3a;&#x5bfc;&#x51fa;&#x65f6;&#x5fc5;&#x987b;&#x6570;&#x636e;&#x4e0d;&#x91cd;&#x590d;&#xff0c;&#x8fd9;&#x91cc;&#x7684;&#x89e3;&#x51b3;&#x65b9;&#x6cd5;&#xff0c;&#x53ea;&#x4f7f;&#x7528;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;&#x5206;&#x7ec4;&#xff0c;&#xa;&#x4ee5;&#x540e;&#x5efa;&#x8bae;&#xff0c;&#x8fd8;&#x662f;&#x539f;&#x6765;&#x7684;&#x65b9;&#x5f0f;&#x5206;&#x7ec4;&#xff0c;&#x7136;&#x540e;&#x628a;&#x66f4;&#x65b0;&#x65f6;&#x95f4;&#x665a;&#x7684;&#x53bb;&#x9664;&#xa;&#xa;&#x4ee5;&#x540e;&#x6539;&#x6210;&#x53bb;&#x9664;&#x91cd;&#x590d;&#x7eaa;&#x5f55;</note>
94   - <xloc>37</xloc>
95   - <yloc>309</yloc>
  94 + <xloc>46</xloc>
  95 + <yloc>400</yloc>
96 96 <width>406</width>
97 97 <heigth>122</heigth>
98 98 <fontname>YaHei Consolas Hybrid</fontname>
... ... @@ -368,6 +368,29 @@
368 368 </step>
369 369  
370 370 <step>
  371 + <name>&#x53bb;&#x9664;&#x91cd;&#x590d;&#x8bb0;&#x5f55;</name>
  372 + <type>Unique</type>
  373 + <description/>
  374 + <distribute>Y</distribute>
  375 + <custom_distribution/>
  376 + <copies>1</copies>
  377 + <partitioning>
  378 + <method>none</method>
  379 + <schema_name/>
  380 + </partitioning>
  381 + <count_rows>N</count_rows>
  382 + <count_field/>
  383 + <reject_duplicate_row>N</reject_duplicate_row>
  384 + <error_description/>
  385 + <fields> </fields> <cluster_schema/>
  386 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  387 + <xloc>842</xloc>
  388 + <yloc>592</yloc>
  389 + <draw>Y</draw>
  390 + </GUI>
  391 + </step>
  392 +
  393 + <step>
371 394 <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
372 395 <type>SelectValues</type>
373 396 <description/>
... ... @@ -590,7 +613,7 @@
590 613 <optimizationLevel>9</optimizationLevel>
591 614 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
592 615 <jsScript_name>Script 1</jsScript_name>
593   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var fieldname&#x3b; &#x2f;&#x2f; &#x5b57;&#x6bb5;&#x540d;&#xa;var fieldtype&#x3b; &#x2f;&#x2f; &#x5b57;&#x6bb5;&#x7c7b;&#x578b;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; &#x27;&#x8fdb;&#x573a;&#x27; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; &#x27;&#x51fa;&#x573a;&#x27; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; zdname &#x2b; fcno&#x3b;&#xa;&#x7d; else &#x7b;&#xa; fieldname &#x3d; zdname &#x2b; fcno&#x3b;&#xa;&#x7d; &#xa;&#xa;fieldtype &#x3d; &#x27;String&#x27;&#x3b;&#xa;</jsScript_script>
  616 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var fieldname&#x3b; &#x2f;&#x2f; &#x5b57;&#x6bb5;&#x540d;&#xa;var fieldtype&#x3b; &#x2f;&#x2f; &#x5b57;&#x6bb5;&#x7c7b;&#x578b;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; &#x27;&#x8fdb;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; &#x27;&#x51fa;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else &#x7b;&#xa; fieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; &#xa;&#xa;fieldtype &#x3d; &#x27;String&#x27;&#x3b;&#xa;</jsScript_script>
594 617 </jsScript> </jsScripts> <fields> <field> <name>fieldname</name>
595 618 <rename>fieldname</rename>
596 619 <type>String</type>
... ... @@ -626,7 +649,7 @@
626 649 <optimizationLevel>9</optimizationLevel>
627 650 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
628 651 <jsScript_name>Script 1</jsScript_name>
629   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var targetfieldname&#x3b; &#x2f;&#x2f; &#x76ee;&#x6807;&#x5b57;&#x6bb5;&#x540d;&#xa;var targettype&#x3b; &#x2f;&#x2f; &#x76ee;&#x6807;&#x7c7b;&#x578b;&#xa;var valuefieldname&#x3b; &#x2f;&#x2f; &#x503c;&#x5b57;&#x6bb5;&#x540d;&#xa;var keyvalue&#x3b; &#x2f;&#x2f; &#x5173;&#x952e;&#x5b57;&#x503c;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; &#x27;&#x8fdb;&#x573a;&#x27; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; &#x27;&#x51fa;&#x573a;&#x27; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; zdname &#x2b; fcno&#x3b;&#xa;&#x7d; else &#x7b;&#xa; targetfieldname &#x3d; zdname &#x2b; fcno&#x3b;&#xa;&#x7d; &#xa;&#xa;targettype &#x3d; &#x27;String&#x27;&#x3b;&#xa;valuefieldname &#x3d; &#x27;fcsj&#x27;&#x3b;&#xa;keyvalue &#x3d; fcno&#x3b;&#xa;</jsScript_script>
  652 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var targetfieldname&#x3b; &#x2f;&#x2f; &#x76ee;&#x6807;&#x5b57;&#x6bb5;&#x540d;&#xa;var targettype&#x3b; &#x2f;&#x2f; &#x76ee;&#x6807;&#x7c7b;&#x578b;&#xa;var valuefieldname&#x3b; &#x2f;&#x2f; &#x503c;&#x5b57;&#x6bb5;&#x540d;&#xa;var keyvalue&#x3b; &#x2f;&#x2f; &#x5173;&#x952e;&#x5b57;&#x503c;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; &#x27;&#x8fdb;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; &#x27;&#x51fa;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else &#x7b;&#xa; targetfieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; &#xa;&#xa;targettype &#x3d; &#x27;String&#x27;&#x3b;&#xa;valuefieldname &#x3d; &#x27;fcsj&#x27;&#x3b;&#xa;keyvalue &#x3d; fcno&#x3b;&#xa;</jsScript_script>
630 653 </jsScript> </jsScripts> <fields> <field> <name>targetfieldname</name>
631 654 <rename>targetfieldname</rename>
632 655 <type>String</type>
... ... @@ -718,29 +741,6 @@
718 741 </GUI>
719 742 </step>
720 743  
721   - <step>
722   - <name>&#x53bb;&#x9664;&#x91cd;&#x590d;&#x8bb0;&#x5f55;</name>
723   - <type>Unique</type>
724   - <description/>
725   - <distribute>Y</distribute>
726   - <custom_distribution/>
727   - <copies>1</copies>
728   - <partitioning>
729   - <method>none</method>
730   - <schema_name/>
731   - </partitioning>
732   - <count_rows>N</count_rows>
733   - <count_field/>
734   - <reject_duplicate_row>N</reject_duplicate_row>
735   - <error_description/>
736   - <fields> </fields> <cluster_schema/>
737   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
738   - <xloc>842</xloc>
739   - <yloc>592</yloc>
740   - <draw>Y</draw>
741   - </GUI>
742   - </step>
743   -
744 744 <step_error_handling>
745 745 </step_error_handling>
746 746 <slave-step-copy-partition-distribution>
... ...
src/main/resources/static/pages/base/carpark/add.html
... ... @@ -325,7 +325,7 @@
325 325 <a href="javascript:;" class="btn btn-outline green button-next"> 下一步
326 326 <i class="fa fa-angle-right"></i>
327 327 </a>
328   - <a href="javascript:;" class="btn green button-submit" style="display: none;"> 提交
  328 + <a href="javascript:;" class="btn green button-submit" style="display: none;" id="submintBtn"> 提交
329 329 <i class="fa fa-check"></i>
330 330 </a>
331 331 </div>
... ...
src/main/resources/static/pages/base/carpark/js/add-form-wizard.js
... ... @@ -91,6 +91,8 @@ var FormWizard = function() {
91 91 * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form
92 92 */
93 93 submitHandler : function(f) {
  94 + // 防止用户多次提交
  95 + $("#submintBtn").addClass("disabled");
94 96 // 表单序列化
95 97 var params = form.serializeJSON();
96 98 if(params.shapesType=='圆形')
... ... @@ -109,6 +111,7 @@ var FormWizard = function() {
109 111 // 返回list.html页面
110 112 loadPage('/pages/base/carpark/list.html');
111 113 });
  114 + $("#submintBtn").removeClass("disabled");
112 115 }
113 116 });
114 117 $.validator.addMethod("alnum", function(value, element) {
... ...
src/main/resources/static/pages/base/company/add.html
... ... @@ -89,7 +89,7 @@
89 89 <div class="form-actions">
90 90 <div class="row">
91 91 <div class="col-md-offset-3 col-md-4">
92   - <button type="submit" class="btn green" ><i class="fa fa-check"></i> 提交</button>
  92 + <button type="submit" class="btn green" id="submintBtn"><i class="fa fa-check"></i> 提交</button>
93 93 <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a>
94 94 </div>
95 95 </div>
... ...
src/main/resources/static/pages/base/company/js/comp-add-form.js
... ... @@ -139,6 +139,8 @@ $(function(){
139 139 });
140 140 // 提交
141 141 function submit() {
  142 + // 防止用户多次提交
  143 + $("#submintBtn").addClass("disabled");
142 144 // 添加数据
143 145 $post('/business', params, function(result) {
144 146 // 如果返回结果不为空
... ... @@ -155,6 +157,7 @@ $(function(){
155 157 // 返回list.html页面
156 158 loadPage('list.html');
157 159 });
  160 + $("#submintBtn").removeClass("disabled");
158 161 }
159 162 }
160 163 });
... ...
src/main/resources/static/pages/base/interval/add.html
... ... @@ -80,7 +80,7 @@
80 80 <div class="form-actions">
81 81 <div class="row">
82 82 <div class="col-md-offset-5 col-md-7">
83   - <button type="submit" class="btn green" ><i class="fa fa-check"></i> 提交</button>
  83 + <button type="submit" class="btn green" id="submintBtn"><i class="fa fa-check"></i> 提交</button>
84 84 <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a>
85 85 </div>
86 86 </div>
... ...
src/main/resources/static/pages/base/interval/js/interval-add-form.js
... ... @@ -108,6 +108,8 @@ $(function(){
108 108 submit();
109 109 // 提交
110 110 function submit() {
  111 + // 防止用户多次提交
  112 + $("#submintBtn").addClass("disabled");
111 113 // 添加数据
112 114 $post('/interval', params, function(result) {
113 115 // 如果返回结果不为空
... ... @@ -125,6 +127,7 @@ $(function(){
125 127 //loadPage('list.html');
126 128 window.location.href = 'list.html';
127 129 });
  130 + $("#submintBtn").removeClass("disabled");
128 131 }
129 132 }
130 133 });
... ...
src/main/resources/static/pages/base/line/add.html
... ... @@ -487,7 +487,7 @@
487 487 <div class="form-actions">
488 488 <div class="row">
489 489 <div class="col-md-offset-5 col-md-7">
490   - <button type="submit" class="btn green" ><i class="fa fa-check"></i> 提交</button>
  490 + <button type="submit" class="btn green" id="submintBtn"><i class="fa fa-check"></i> 提交</button>
491 491 <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a>
492 492 </div>
493 493 </div>
... ...
src/main/resources/static/pages/base/line/js/line-add-form.js
... ... @@ -94,7 +94,7 @@ $(function(){
94 94 // 需要验证的表单元素
95 95 rules : {
96 96 'name' : {required : true,maxlength: 30},// 线路名称 必填项、 最大长度.
97   - 'lineCode' : {required : true,maxlength: 6,digits:true ,
  97 + 'lineCode' : {required : true,maxlength: 6,digits:true ,isLineCode:true,
98 98 remote:{type: 'GET',
99 99 url: '/line/lineCodeVerification',
100 100 cache:false,
... ... @@ -237,6 +237,9 @@ $(function(){
237 237 // 提交
238 238 function submit() {
239 239  
  240 + // 防止用户多次提交
  241 + $("#submintBtn").addClass("disabled");
  242 +
240 243 // 添加数据
241 244 $post('/line', params, function(result) {
242 245 // 如果返回结果不为空
... ... @@ -262,7 +265,14 @@ $(function(){
262 265 }
263 266 }
264 267 });
265   -
  268 +
  269 + // 线路编码不能0开头
  270 + $.validator.addMethod("isLineCode", function(value,element) {
  271 + // 线路编码正则表达式
  272 + var lineCode = /^([1-9])/;
  273 + return lineCode.test(value);
  274 + }, "线路编码不能以0开头");
  275 +
266 276 // 联系电话(手机/电话皆可)验证
267 277 $.validator.addMethod("isPhone", function(value,element) {
268 278 // 长度
... ...
src/main/resources/static/pages/base/lineinformation/add.html
... ... @@ -583,7 +583,7 @@
583 583 <div class="form-actions">
584 584 <div class="row">
585 585 <div class="col-md-offset-5 col-md-7">
586   - <button type="submit" class="btn green" ><i class="fa fa-check"></i> 提交</button>
  586 + <button type="submit" class="btn green" id="submintBtn"><i class="fa fa-check"></i> 提交</button>
587 587 <a type="button" class="btn default lineinformation_back" href="lineinformation.html" data-pjax><i class="fa fa-times"></i> 取消</a>
588 588 </div>
589 589 </div>
... ...
src/main/resources/static/pages/base/lineinformation/js/lineinformation-add-form.js
... ... @@ -198,11 +198,13 @@ $(function(){
198 198 error.hide();
199 199  
200 200 var params = form.serializeJSON();
  201 + // 防止用户多次提交
  202 + $("#submintBtn").addClass("disabled");
201 203  
202 204 if (params.line) {
203 205  
204 206 // 添加数据
205   - $post('/lineInformation', params, function(result) {
  207 + $post('/lineInformation1', params, function(result) {
206 208  
207 209 // 如果返回结果不为空
208 210 if(result){
... ... @@ -226,6 +228,7 @@ $(function(){
226 228 });
227 229  
228 230 }
  231 + $("#submintBtn").removeClass("disabled");
229 232 }
230 233 });
231 234  
... ...
src/main/resources/static/pages/base/lineversions/add.html
... ... @@ -129,7 +129,7 @@
129 129 <div class="form-actions">
130 130 <div class="row">
131 131 <div class="col-md-offset-5 col-md-7">
132   - <button type="submit" class="btn green" ><i class="fa fa-check"></i> 提交</button>
  132 + <button type="submit" class="btn green" id="submintBtn"><i class="fa fa-check"></i> 提交</button>
133 133 <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a>
134 134 </div>
135 135 </div>
... ...
src/main/resources/static/pages/base/lineversions/js/lineversions-add-from.js
... ... @@ -195,6 +195,8 @@
195 195 submit();
196 196 // 提交
197 197 function submit() {
  198 + // 防止用户多次提交
  199 + $("#submintBtn").addClass("disabled");
198 200 // 添加数据
199 201 $post('/lineVersions/add', params, function(result) {
200 202 // 如果返回结果不为空
... ... @@ -211,6 +213,7 @@
211 213 // 返回list.html页面
212 214 loadPage('list.html');
213 215 });
  216 + $("#submintBtn").removeClass("disabled");
214 217 }
215 218 }
216 219 });
... ...
src/main/resources/static/pages/base/roadspeed/add.html
... ... @@ -102,10 +102,10 @@
102 102 <div class="col-md-9">
103 103 <div class="icheck-list">
104 104 <label>
105   - <input type="radio" class="icheck" name="baseRes" value=0 > 系统生成
  105 + <input type="radio" class="icheck" name="baseRes" value=0 checked> 系统生成
106 106 </label>
107 107 <label >
108   - <input type="radio" class="icheck" name="baseRes" value=1 checked> 手动添加
  108 + <input type="radio" class="icheck" name="baseRes" value=1 > 手动添加
109 109 </label>
110 110 </div>
111 111 </div>
... ... @@ -251,7 +251,7 @@
251 251 <a href="javascript:;" class="btn btn-outline green button-next"> 下一步
252 252 <i class="fa fa-angle-right"></i>
253 253 </a>
254   - <a href="javascript:;" class="btn green button-submit" style="display: none;"> 提交
  254 + <a href="javascript:;" class="btn green button-submit" style="display: none;" id="submintBtn"> 提交
255 255 <i class="fa fa-check"></i>
256 256 </a>
257 257 </div>
... ...
src/main/resources/static/pages/base/roadspeed/editroadspeed.html
... ... @@ -155,7 +155,7 @@ $(&#39;#edit_roadspeed_mobal&#39;).on(&#39;editRoadspeedMobal_show&#39;, function(e, map_,ajaxd,
155 155 },
156 156 submitHandler : function(f) {
157 157 var params = form.serializeJSON();
158   - params.bRoadVector = EditRoadspeedObj.getEitdRoadspeed().bRoadVector;
  158 + params.bRoadVector = Roadspeed.bRoadVector;
159 159 error.hide();
160 160 ajaxd.roadspeedUpdate(params,function(resuntDate) {
161 161 if(resuntDate.status=='SUCCESS') {
... ... @@ -164,7 +164,6 @@ $(&#39;#edit_roadspeed_mobal&#39;).on(&#39;editRoadspeedMobal_show&#39;, function(e, map_,ajaxd,
164 164 }else {
165 165 // 弹出添加失败提示消息
166 166 layer.msg('修改失败...');
167   -
168 167 }
169 168 $('#edit_roadspeed_mobal').modal('hide');
170 169 closeMobleSetClean();
... ...
src/main/resources/static/pages/base/roadspeed/js/add-form-wizard.js
... ... @@ -76,6 +76,9 @@ var FormWizard = function() {
76 76 * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form.
77 77 */
78 78 submitHandler : function(f) {
  79 + // 防止用户多次提交
  80 + $("#submintBtn").addClass("disabled");
  81 + debugger
79 82 var params = form.serializeJSON();// 表单序列化.
80 83 if(params.roadVector=='') {
81 84 layer.msg('路段几何图形为空~请先在路段位置步骤中绘制出线路走向!');
... ... @@ -90,6 +93,7 @@ var FormWizard = function() {
90 93 }
91 94 loadPage('list.html');// 返回list.html页面.
92 95 });
  96 + $("#submintBtn").removeClass("disabled");
93 97 }
94 98 });
95 99  
... ... @@ -146,8 +150,8 @@ var FormWizard = function() {
146 150 var stationStartValue = $('#stationStartInput').val();
147 151 var stationEndValue = $('#stationEndInput').val();
148 152 var paramsStationsArray = [];
149   - paramsStationsArray[0] = stationStartValue+'公交车站';
150   - paramsStationsArray[1]= stationEndValue+'公交车站';
  153 + paramsStationsArray[0] = stationStartValue;
  154 + paramsStationsArray[1]= stationEndValue;
151 155 $('#nameInput').val(stationStartValue + '至' + stationEndValue );
152 156 if(baseResValue == 0) {
153 157 $('.leftUtils').hide();
... ... @@ -161,8 +165,8 @@ var FormWizard = function() {
161 165 });
162 166 });
163 167 }else if(baseResValue ==1) {
164   - SectionVmapWorlds.localSearchFromAdreesToPoint(stationStartValue+'公交车站');
165   - SectionVmapWorlds.localSearchFromAdreesToPoint(stationEndValue+'公交车站');
  168 + SectionVmapWorlds.localSearchFromAdreesToPoint(stationStartValue);
  169 + SectionVmapWorlds.localSearchFromAdreesToPoint(stationEndValue);
166 170 // SectionVmapWorlds.drawingManagerOpen();
167 171 }
168 172 $('html,body').animate({scrollTop: ($('#form-wizard-info').offset().top-5) + "px"},500);
... ...
src/main/resources/static/pages/base/roadspeed/js/add-vmap-world.js
... ... @@ -63,11 +63,11 @@ var SectionVmapWorlds = function() {
63 63 marker.setAnimation(BMAP_ANIMATION_BOUNCE);
64 64 }else {
65 65 // 弹出添加成功提示消息
66   - layer.msg('无法获取停车场【'+Address+'】地理位置!');
  66 + layer.msg('无法获取【'+Address+'】地理位置!');
67 67 }
68 68 }else {
69 69 // 弹出添加成功提示消息
70   - layer.msg('无法获取停车场【'+Address+'】地理位置!');
  70 + layer.msg('无法获取【'+Address+'】地理位置!');
71 71 }
72 72 });
73 73 // 根据检索词发起检索。
... ... @@ -174,7 +174,7 @@ var SectionVmapWorlds = function() {
174 174 var f = arguments.callee;
175 175 var poiOne = new BMap.Point(stationsPoint[index].potion.lng,stationsPoint[index].potion.lat);
176 176 var poiTwo = new BMap.Point(stationsPoint[index+1].potion.lng,stationsPoint[index+1].potion.lat);
177   - var transit = new BMap.DrivingRoute(mapB, {renderOptions: {map: mapB},onPolylinesSet: searchPolylinesSet});
  177 + var transit = new BMap.DrivingRoute(mapB, {renderOptions: {map: mapB,enableDragging : true},onPolylinesSet: searchPolylinesSet});
178 178 function searchPolylinesSet(results){
179 179 if (transit.getStatus() != BMAP_STATUS_SUCCESS){
180 180 }else {
... ...
src/main/resources/static/pages/base/section/add.html
... ... @@ -376,7 +376,7 @@
376 376 <a href="javascript:;" class="btn btn-outline green button-next"> 下一步
377 377 <i class="fa fa-angle-right"></i>
378 378 </a>
379   - <a href="javascript:;" class="btn green button-submit" style="display: none;"> 提交
  379 + <a href="javascript:;" class="btn green button-submit" style="display: none;" id="submintBtn"> 提交
380 380 <i class="fa fa-check"></i>
381 381 </a>
382 382 </div>
... ...
src/main/resources/static/pages/base/section/js/add-form-wizard.js
... ... @@ -81,6 +81,8 @@ var FormWizard = function() {
81 81 * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form.
82 82 */
83 83 submitHandler : function(f) {
  84 + // 防止用户多次提交
  85 + $("#submintBtn").addClass("disabled");
84 86 var params = form.serializeJSON();// 表单序列化.
85 87 if(params.bsectionVector=='') {
86 88 layer.msg('路段几何图形为空~请先在路段位置步骤中绘制出线路走向!');
... ... @@ -95,6 +97,7 @@ var FormWizard = function() {
95 97 }
96 98 loadPage('list.html');// 返回list.html页面.
97 99 });
  100 + $("#submintBtn").removeClass("disabled");
98 101 }
99 102 });
100 103  
... ... @@ -151,8 +154,8 @@ var FormWizard = function() {
151 154 var stationStartValue = $('#stationStartInput').val();
152 155 var stationEndValue = $('#stationEndInput').val();
153 156 var paramsStationsArray = [];
154   - paramsStationsArray[0] = stationStartValue+'公交车站';
155   - paramsStationsArray[1]= stationEndValue+'公交车站';
  157 + paramsStationsArray[0] = stationStartValue;
  158 + paramsStationsArray[1]= stationEndValue;
156 159 $('#sectionNameInput').val(stationStartValue + '至' + stationEndValue );
157 160 if(baseResValue == 0) {
158 161 $('.leftUtils').hide();
... ... @@ -166,8 +169,8 @@ var FormWizard = function() {
166 169 });
167 170 });
168 171 }else if(baseResValue ==1) {
169   - SectionVmapWorlds.localSearchFromAdreesToPoint(stationStartValue+'公交车站');
170   - SectionVmapWorlds.localSearchFromAdreesToPoint(stationEndValue+'公交车站');
  172 + SectionVmapWorlds.localSearchFromAdreesToPoint(stationStartValue);
  173 + SectionVmapWorlds.localSearchFromAdreesToPoint(stationEndValue);
171 174 // SectionVmapWorlds.drawingManagerOpen();
172 175 }
173 176 $('html,body').animate({scrollTop: ($('#form-wizard-info').offset().top-5) + "px"},500);
... ...
src/main/resources/static/pages/base/section/js/add-vmap-world.js
... ... @@ -63,11 +63,11 @@ var SectionVmapWorlds = function() {
63 63 marker.setAnimation(BMAP_ANIMATION_BOUNCE);
64 64 }else {
65 65 // 弹出添加成功提示消息
66   - layer.msg('无法获取停车场【'+Address+'】地理位置!');
  66 + layer.msg('无法获取【'+Address+'】地理位置!');
67 67 }
68 68 }else {
69 69 // 弹出添加成功提示消息
70   - layer.msg('无法获取停车场【'+Address+'】地理位置!');
  70 + layer.msg('无法获取【'+Address+'】地理位置!');
71 71 }
72 72 });
73 73 // 根据检索词发起检索。
... ... @@ -174,7 +174,7 @@ var SectionVmapWorlds = function() {
174 174 var f = arguments.callee;
175 175 var poiOne = new BMap.Point(stationsPoint[index].potion.lng,stationsPoint[index].potion.lat);
176 176 var poiTwo = new BMap.Point(stationsPoint[index+1].potion.lng,stationsPoint[index+1].potion.lat);
177   - var transit = new BMap.DrivingRoute(mapB, {renderOptions: {map: mapB},onPolylinesSet: searchPolylinesSet});
  177 + var transit = new BMap.DrivingRoute(mapB, {renderOptions: {map: mapB,enableDragging : true},onPolylinesSet: searchPolylinesSet});
178 178 function searchPolylinesSet(results){
179 179 if (transit.getStatus() != BMAP_STATUS_SUCCESS){
180 180 }else {
... ...
src/main/resources/static/pages/base/station/add.html
... ... @@ -425,7 +425,7 @@
425 425 <a href="javascript:;" class="btn btn-outline green button-next"> 下一步
426 426 <i class="fa fa-angle-right"></i>
427 427 </a>
428   - <a href="javascript:;" class="btn green button-submit" style="display: none;"> 提交
  428 + <a href="javascript:;" class="btn green button-submit" style="display: none;" id="submintBtn"> 提交
429 429 <i class="fa fa-check"></i>
430 430 </a>
431 431 </div>
... ...
src/main/resources/static/pages/base/station/js/add-form-wizard.js
... ... @@ -90,6 +90,8 @@ var FormWizard = function() {
90 90 * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form
91 91 */
92 92 submitHandler : function(f) {
  93 + // 防止用户多次提交
  94 + $("#submintBtn").addClass("disabled");
93 95 // 表单序列化
94 96 var params = form.serializeJSON();
95 97 if(params.shapesType=='圆形')
... ... @@ -108,6 +110,7 @@ var FormWizard = function() {
108 110 // 返回list.html页面
109 111 loadPage('list.html');
110 112 });
  113 + $("#submintBtn").removeClass("disabled");
111 114 }
112 115 });
113 116 // 当站点类型为中途站或者终点站时,上一站点为必填项!
... ...
src/main/resources/static/pages/electricity/list/add.html
... ... @@ -387,22 +387,35 @@
387 387 var date=$("#date").val();
388 388 var jsy=$("#jsy").val();
389 389 var xlbm=$("#xlbm").val();
  390 + var gsdm=$("#ssgsdm").val();
390 391 var map={};
391 392 map["nbbm"]=nbbm;
392 393 map["date"]=date;
393 394 map["jsy"]=jsy;
394 395 map["xlbm"]=xlbm;
  396 + map["rq"]=date;
  397 + map["ssgsdm_like"]=gsdm;
395 398 //检查一下用户是否存在
396   - $get('/dlb/checkJsy', map, function(fage){
397   - if(fage=="0"){
398   - layer.msg('该驾驶员当天已存在.');
  399 + var i = layer.load(2);
  400 + $get('/ylb/checkDate', map, function(fage){
  401 + if(fage=="2"){
  402 + layer.msg('只能操作三天内数据.');
  403 + layer.close(i);
399 404 }else{
400   - $post('/dlb/saveDlb', params, function(){
401   - layer.msg('添加信息成功.');
402   - loadPage('list.html');
  405 + $get('/dlb/checkJsy', map, function(fage){
  406 + if(fage=="0"){
  407 + layer.msg('该驾驶员当天已存在.');
  408 + layer.close(i);
  409 + }else{
  410 + $post('/dlb/saveDlb', params, function(){
  411 + layer.close(i);
  412 + layer.msg('添加信息成功.');
  413 + loadPage('list.html');
  414 + });
  415 + }
403 416 });
404 417 }
405   - });
  418 + })
406 419 }
407 420 });
408 421 });
... ...
src/main/resources/static/pages/electricity/list/list.html
... ... @@ -271,12 +271,18 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
271 271  
272 272 $("#checkDl").on('click', function () {
273 273 if ($("#rq").val() != "") {
274   - var params=getParamsList();
275   - var i = layer.load(2);
276   - $get('/dlb/checkDl', params, function () {
277   - layer.close(i);
278   - jsDoQuery(params, true);
279   - });
  274 + var params=getParamsList();
  275 + $get('/ylb/checkDate',params,function(status){
  276 + if(status=='2'){
  277 + layer.msg('只能操作三天内数据.');
  278 + }else{
  279 + var i = layer.load(2);
  280 + $get('/dlb/checkDl', params, function () {
  281 + layer.close(i);
  282 + jsDoQuery(params, true);
  283 + });
  284 + }
  285 + })
280 286 } else {
281 287 layer.msg('请选择日期.');
282 288 }
... ... @@ -286,12 +292,18 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
286 292 $("#outAndIn").on('click', function () {
287 293 console.log("进场油量等于出场油量");
288 294 if ($("#rq").val() != "") {
289   - var params=getParamsList();
290   - var i = layer.load(2);
291   - $get('/ylb/outAndIn', params, function () {
292   - layer.close(i);
293   - jsDoQuery(params, true);
294   - });
  295 + var params=getParamsList();
  296 + $get('/ylb/checkDate',params,function(status){
  297 + if(status=='2'){
  298 + layer.msg('只能操作三天内数据.');
  299 + }else{
  300 + var i = layer.load(2);
  301 + $get('/ylb/outAndIn', params, function () {
  302 + layer.close(i);
  303 + jsDoQuery(params, true);
  304 + });
  305 + }
  306 + })
295 307 } else {
296 308 layer.msg('请选择日期.');
297 309 }
... ... @@ -300,56 +312,63 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
300 312  
301 313 //保存
302 314 $("#saveButton").on('click',function(){
303   - var ylArray = [];
304   - $('input.icheck').each(function(){
305   - var map = {};
306   - var id=$(this).data('id');
307   - var nbbm =$('.in_carpark_nbbm[data-id='+id+']', '#dl_oil_list').html();
308   - var cdl =$('.in_carpark_cdl[data-id='+id+']', '#dl_oil_list').html();
309   - if(cdl=="" || cdl ==null){
310   - cdl=0;
311   - }
312   - var czcd=$('.in_carpark_czcd[data-id='+id+']', '#dl_oil_list').val();
313   - if(czcd=="" || czcd==null){
314   - czcd=0;
315   - }
316   - var jzcd=$('.in_carpark_jzcd[data-id='+id+']', '#dl_oil_list').val();
317   - if(jzcd=="" || jzcd==null){
318   - jzcd=0;
319   - }
320   -
321   - var sh = $('.in_carpark_shyl[data-id='+id+']', '#dl_oil_list').val();
322   - if(sh=="" || sh==null){
323   - sh=0;
324   - }
325   -
326   - var shyy = $('.in_carpark_shyy[data-id='+id+']', '#dl_oil_list').val();
327   - var hd = $('.in_carpark_hd[data-id='+id+']', '#dl_oil_list').val();
328   - if(hd=="" || hd==null){
329   - hd=0;
330   - }
331   - var yhlx = $('.in_carpark_yhlx[data-id='+id+']', '#dl_oil_list').val();
332   -
333   - map['id']=id;
334   - map['cdl']=cdl;
335   - map['czcd']=czcd;
336   - map['jzcd']=jzcd;
337   - map['sh']=sh;
338   - map['shyy']=shyy;
339   - map['yhlx']=yhlx;
340   - map['nbbm']=nbbm;
341   - map['hd']=hd;
342   - map['rq']=$("#rq").val();
343   - ylArray.push(map);
  315 + var params_=getParamsList();
  316 + $get('/ylb/checkDate',params_,function(status){
  317 + if(status=='2'){
  318 + layer.msg('只能操作三天内数据.');
  319 + }else{
  320 + var ylArray = [];
  321 + $('input.icheck').each(function(){
  322 + var map = {};
  323 + var id=$(this).data('id');
  324 + var nbbm =$('.in_carpark_nbbm[data-id='+id+']', '#dl_oil_list').html();
  325 + var cdl =$('.in_carpark_cdl[data-id='+id+']', '#dl_oil_list').html();
  326 + if(cdl=="" || cdl ==null){
  327 + cdl=0;
  328 + }
  329 + var czcd=$('.in_carpark_czcd[data-id='+id+']', '#dl_oil_list').val();
  330 + if(czcd=="" || czcd==null){
  331 + czcd=0;
  332 + }
  333 + var jzcd=$('.in_carpark_jzcd[data-id='+id+']', '#dl_oil_list').val();
  334 + if(jzcd=="" || jzcd==null){
  335 + jzcd=0;
  336 + }
  337 +
  338 + var sh = $('.in_carpark_shyl[data-id='+id+']', '#dl_oil_list').val();
  339 + if(sh=="" || sh==null){
  340 + sh=0;
  341 + }
  342 +
  343 + var shyy = $('.in_carpark_shyy[data-id='+id+']', '#dl_oil_list').val();
  344 + var hd = $('.in_carpark_hd[data-id='+id+']', '#dl_oil_list').val();
  345 + if(hd=="" || hd==null){
  346 + hd=0;
  347 + }
  348 + var yhlx = $('.in_carpark_yhlx[data-id='+id+']', '#dl_oil_list').val();
  349 +
  350 + map['id']=id;
  351 + map['cdl']=cdl;
  352 + map['czcd']=czcd;
  353 + map['jzcd']=jzcd;
  354 + map['sh']=sh;
  355 + map['shyy']=shyy;
  356 + map['yhlx']=yhlx;
  357 + map['nbbm']=nbbm;
  358 + map['hd']=hd;
  359 + map['rq']=$("#rq").val();
  360 + ylArray.push(map);
  361 + })
  362 + var params = {};
  363 + params['dlbList']=JSON.stringify(ylArray);
  364 + var i = layer.load(2);
  365 + $post('/dlb/saveDlbList', params, function () {
  366 + layer.close(i);
  367 + var params1 =getParamsList();
  368 + jsDoQuery(params1, true);
  369 + });
  370 + }
344 371 })
345   - var params = {};
346   - params['dlbList']=JSON.stringify(ylArray);
347   - var i = layer.load(2);
348   - $post('/dlb/saveDlbList', params, function () {
349   - layer.close(i);
350   - var params1 =getParamsList();
351   - jsDoQuery(params1, true);
352   - });
353 372 })
354 373 //拆分
355 374 $("#sortButton").on('click', function () {
... ... @@ -405,13 +424,18 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
405 424 //获取加存信息
406 425 $("#obtain").on('click', function () {
407 426 if ($("#rq").val() != "") {
408   - var params =getParamsList();
409   -
410   - var i = layer.load(2);
411   - $get('/dlb/obtain', params, function () {
412   - layer.close(i);
413   - jsDoQuery(params, true);
414   - });
  427 + var params=getParamsList();
  428 + $get('/ylb/checkDate',params,function(status){
  429 + if(status=='2'){
  430 + layer.msg('只能操作三天内数据.');
  431 + }else{
  432 + var i = layer.load(2);
  433 + $get('/dlb/obtain', params, function () {
  434 + layer.close(i);
  435 + jsDoQuery(params, true);
  436 + });
  437 + }
  438 + })
415 439 } else {
416 440 layer.msg('请选择日期.');
417 441 }
... ... @@ -563,15 +587,20 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
563 587 }
564 588  
565 589 function jsyUpdate(){
566   - var id = $(this).data('id');
567   - var jsy=$('.in_carpark_jsy[data-id='+id+']', '#dl_oil_list').val();
568   - $get('/dlb/updateJsy',{id:id,jsy:jsy}, function(result){
569   - layer.msg('修改成功.');
570   - var params = getParamsList();
571   - page = 0;
572   - jsDoQuery(params, true);
573   - });
574   -
  590 + var params=getParamsList();
  591 + $get('/ylb/checkDate',params,function(status){
  592 + if(status=='2'){
  593 + layer.msg('只能操作三天内数据.');
  594 + }else{
  595 + var id = $(this).data('id');
  596 + var jsy=$('.in_carpark_jsy[data-id='+id+']', '#dl_oil_list').val();
  597 + $get('/dlb/updateJsy',{id:id,jsy:jsy}, function(result){
  598 + layer.msg('修改成功.');
  599 + page = 0;
  600 + jsDoQuery(params, true);
  601 + });
  602 + }
  603 + })
575 604 }
576 605 //页面计算防止精度丢失
577 606 var accAdd = function (a, b) {
... ... @@ -702,31 +731,38 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
702 731  
703 732 //删除
704 733 $('#removeButton').on('click', function () {
705   - var idArray = [];
706   - var x=0;
707   - $('input.icheck:checked').each(function(){
708   - x++;
709   - var map ={};
710   - var id=$(this).data('id');
711   - map['id']=id;
712   - idArray.push(map);
713   -
  734 + var params_=getParamsList();
  735 + $get('/ylb/checkDate',params_,function(status){
  736 + if(status=='2'){
  737 + layer.msg('只能操作三天内数据.');
  738 + }else{
  739 + var idArray = [];
  740 + var x=0;
  741 + $('input.icheck:checked').each(function(){
  742 + x++;
  743 + var map ={};
  744 + var id=$(this).data('id');
  745 + map['id']=id;
  746 + idArray.push(map);
  747 +
  748 + })
  749 + var params = {};
  750 + params['ids']=JSON.stringify(idArray);
  751 + if (x==0) {
  752 + layer.msg("请选择要删除的数据");
  753 + }else{
  754 + if(confirm('确定要删除选中的数据?'))
  755 + {
  756 + var i = layer.load(2);
  757 + $post('/dlb/deleteIds', params, function (result) {
  758 + layer.close(i);
  759 + var params=getParamsList();
  760 + jsDoQuery(params, true);
  761 + });
  762 + }
  763 + }
  764 + }
714 765 })
715   - var params = {};
716   - params['ids']=JSON.stringify(idArray);
717   - if (x==0) {
718   - layer.msg("请选择要删除的数据");
719   - }else{
720   - if(confirm('确定要删除选中的数据?'))
721   - {
722   - var i = layer.load(2);
723   - $post('/dlb/deleteIds', params, function (result) {
724   - layer.close(i);
725   - var params=getParamsList();
726   - jsDoQuery(params, true);
727   - });
728   - }
729   - }
730 766 });
731 767  
732 768  
... ...
src/main/resources/static/pages/forms/statement/firstAndLastBus_delay.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid;
  11 + text-align: center; }
  12 + .table-bordered > thead > tr > th,
  13 + .table-bordered > thead > tr > td {
  14 + border-bottom-width: 2px; }
  15 +
  16 + .table > tbody + tbody {
  17 + border-top: 1px solid; }
  18 +</style>
  19 +
  20 +<div class="page-head">
  21 + <div class="page-title">
  22 + <h1>线路首末班准点率</h1>
  23 + </div>
  24 +</div>
  25 +
  26 +<div class="row">
  27 + <div class="col-md-12">
  28 + <div class="portlet light porttlet-fit bordered">
  29 + <div class="portlet-title">
  30 + <form id="history" class="form-inline" action="">
  31 + <div style="display: inline-block;margin-left: 28px;" id="company1">
  32 + <span class="item-label" style="width: 80px;">公司: </span>
  33 + <select class="form-control" name="company" id="company" style="width: 160px;"></select>
  34 + </div>
  35 + <div style="display: inline-block;margin-left: 24px;" id="subCompany1">
  36 + <span class="item-label" style="width: 80px;">分公司: </span>
  37 + <select class="form-control" name="subCompany" id="subCompany" style="width: 160px;"></select>
  38 + </div>
  39 + <div style="display: inline-block;margin-left: 10px;">
  40 + <span class="item-label" style="width: 80px;">线路: </span>
  41 + <select class="form-control" name="line" id="line" style="width: 160px;"></select>
  42 + </div>
  43 + <div style="margin-top: 10px"></div>
  44 + <div style="display: inline-block;margin-left: 0px;">
  45 + <span class="item-label" style="width: 80px;">开始时间: </span>
  46 + <input class="form-control" type="text" id="startDate" style="width: 160px;"/>
  47 + </div>
  48 + <div style="display: inline-block;margin-left: 10px;">
  49 + <span class="item-label" style="width: 80px;">结束时间: </span>
  50 + <input class="form-control" type="text" id="endDate" style="width: 160px;"/>
  51 + </div>
  52 + <div class="form-group" style="margin-left: 10px;">
  53 + <input class="btn btn-default" type="button" id="query" value="筛选"/>
  54 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  55 + </div>
  56 + </form>
  57 + </div>
  58 + <div class="portlet-body">
  59 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  60 + <table class="table table-bordered table-hover table-checkable" id="forms">
  61 + <thead>
  62 + <tr class="hidden">
  63 + <th align="center">序号</th>
  64 + <th>日期</th>
  65 + <th>分公司</th>
  66 + <th>线路</th>
  67 + <th>首末班次</th>
  68 + <th>计发</th>
  69 + <th>实发</th>
  70 + <th>误差</th>
  71 + <th>调度路单备注</th>
  72 + </tr>
  73 + </thead>
  74 + <tbody>
  75 +
  76 + </tbody>
  77 + </table>
  78 + </div>
  79 + </div>
  80 + </div>
  81 + </div>
  82 +</div>
  83 +
  84 +<script type="text/javascript" src="js/jquery.table2excel.min.js"></script>
  85 +<script>
  86 + $(function(){
  87 + $('#export').attr('disabled', "true");
  88 +
  89 + // 关闭左侧栏
  90 + if (!$('body').hasClass('page-sidebar-closed'))
  91 + $('.menu-toggler.sidebar-toggler').click();
  92 +
  93 +
  94 + var d = new Date();
  95 + d.setTime(d.getTime() - 1*1000*60*60*24);
  96 + var year = d.getFullYear();
  97 + var month = d.getMonth() + 1;
  98 + var day = d.getDate();
  99 + if(month < 10)
  100 + month = "0" + month;
  101 + if(day < 10)
  102 + day = "0" + day;
  103 + var dateTime = year + "-" + month + "-" + day;
  104 + $("#startDate,#endDate").datetimepicker({
  105 + format : 'YYYY-MM-DD',
  106 + locale : 'zh-cn',
  107 + maxDate : dateTime
  108 + });
  109 + $("#startDate,#endDate").val(dateTime);
  110 +
  111 + var fage=false;
  112 + var xlList;
  113 + var obj = [];
  114 +
  115 + $.get('/report/lineList',function(result){
  116 + xlList=result;
  117 + $.get('/user/companyData', function(result){
  118 + obj = result;
  119 + var options = '';
  120 + for(var i = 0; i < obj.length; i++){
  121 + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>';
  122 + }
  123 +
  124 + if(obj.length ==0){
  125 + $("#company1").css('display','none');
  126 + }else if(obj.length ==1){
  127 + $("#company1").css('display','none');
  128 + if(obj[0].children.length == 1 || obj[0].children.length ==0)
  129 + $('#subCompany1').css('display','none');
  130 + }
  131 + $('#company').html(options);
  132 + updateCompany();
  133 + });
  134 + })
  135 + $("#company").on("change",updateCompany);
  136 + function updateCompany(){
  137 + var company = $('#company').val();
  138 + var options = '';
  139 + for(var i = 0; i < obj.length; i++){
  140 + if(obj[i].companyCode == company){
  141 + var children = obj[i].children;
  142 + for(var j = 0; j < children.length; j++){
  143 + options += '<option value="'+children[j].code+'">'+children[j].name+'</option>';
  144 + }
  145 + }
  146 + }
  147 + $('#subCompany').html(options);
  148 + }
  149 +
  150 + var tempData = {};
  151 + $.get('/report/lineList',function(xlList){
  152 + var data = [];
  153 + data.push({id: " ", text: "全部线路"});
  154 + $.get('/user/companyData', function(result){
  155 + for(var i = 0; i < result.length; i++){
  156 + var companyCode = result[i].companyCode;
  157 + var children = result[i].children;
  158 + for(var j = 0; j < children.length; j++){
  159 + var code = children[j].code;
  160 + for(var k=0;k < xlList.length;k++ ){
  161 + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){
  162 + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]});
  163 + tempData[xlList[k]["xlbm"]] = companyCode+":"+code;
  164 + }
  165 + }
  166 + }
  167 + }
  168 + initPinYinSelect2('#line',data,'');
  169 +
  170 + });
  171 + });
  172 +
  173 + $("#line").on("change", function(){
  174 + if($("#line").val() == " "){
  175 + $("#company").attr("disabled", false);
  176 + $("#subCompany").attr("disabled", false);
  177 + } else {
  178 + var temp = tempData[$("#line").val()].split(":");
  179 + $("#company").val(temp[0]);
  180 + updateCompany();
  181 + $("#subCompany").val(temp[1]);
  182 + $("#company").attr("disabled", true);
  183 + $("#subCompany").attr("disabled", true);
  184 + }
  185 + });
  186 +
  187 + $("#query").on("click",jsDoQuery);
  188 +
  189 + var company = $("#company").val();
  190 + var subCompany = $("#subCompany").val();
  191 + var line = $("#line").val();
  192 + var startDate = $("#startDate").val();
  193 + var endDate = $("#endDate").val();
  194 + function jsDoQuery(pagination){
  195 + if($("#startDate").val() == null || $("#startDate").val().trim().length == 0){
  196 + layer.msg("请选择时间!");
  197 + return;
  198 + }
  199 + if($("#endDate").val() == null || $("#endDate").val().trim().length == 0){
  200 + layer.msg("请选择时间!");
  201 + return;
  202 + }
  203 + var i = layer.load(2);
  204 + var params = {};
  205 + company = $("#company").val();
  206 + subCompany = $("#subCompany").val();
  207 + line = $("#line").val();
  208 + startDate = $("#startDate").val();
  209 + endDate = $("#endDate").val();
  210 + if(line == " ")
  211 + line = "";
  212 + params['company'] = company;
  213 + params['subCompany'] = subCompany;
  214 + params['line'] = line;
  215 + params['startDate'] = startDate;
  216 + params['endDate'] = endDate;
  217 + params['type'] = "query";
  218 + $("#forms .hidden").removeClass("hidden");
  219 + $("#map tr").addClass("hidden");
  220 + $("#sumMap tr").addClass("hidden");
  221 + $get('/pcpc/firstAndLastBus_sum', params, function(result){
  222 + // 把数据填充到模版中
  223 + var tbodyHtml = template('list_firstAndLastBus_delay',{list:result[result.length - 1].map});
  224 + // 把渲染好的模版html文本追加到表格中
  225 + $('#forms tbody').html(tbodyHtml);
  226 +
  227 + if(result.length == 0)
  228 + $("#export").attr('disabled',"true");
  229 + else
  230 + $("#export").removeAttr("disabled");
  231 +
  232 + layer.close(i);
  233 + });
  234 + }
  235 +
  236 + $("#export").on("click",function(){
  237 + $("#forms").table2excel({
  238 + exclue: ".noExl",
  239 + name: "Excel Document Name.xlsx",
  240 + filename: "首末班误点班次",
  241 + exclude_img: true,
  242 + exclude_links: true,
  243 + exclude_inputs: true
  244 + });
  245 + });
  246 +
  247 +
  248 + });
  249 +
  250 +</script>
  251 +<script type="text/html" id="list_firstAndLastBus_delay">
  252 + {{each list as obj i}}
  253 + <tr>
  254 + <td>{{obj.no}}</td>
  255 + <td>{{obj.date}}</td>
  256 + <td>{{obj.subCompany}}</td>
  257 + <td>{{obj.line}}</td>
  258 + <td>{{obj.firstOrLast}}</td>
  259 + <td>{{obj.jhfc}}</td>
  260 + <td>{{obj.sjfc}}</td>
  261 + <td> {{obj.delay}}</td>
  262 + <td>{{obj.remarks1}}</td>
  263 + </tr>
  264 + {{/each}}
  265 +</script>
0 266 \ No newline at end of file
... ...
src/main/resources/static/pages/forms/statement/firstAndLastBus_sum.html
... ... @@ -75,11 +75,11 @@
75 75 </table>
76 76 </div>
77 77 <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  78 + <input class="btn btn-default hidden" type="button" id="exportMap" value="导出明细" style="float: right;"/>
78 79 <table class="table table-bordered table-hover table-checkable" id="map">
79 80 <thead>
80 81 <tr class="hidden">
81   - <th style="display: none;"></th>
82   - <th rowspan="2">日期</th>
  82 + <th rowspan="2" align="center">日期</th>
83 83 <th rowspan="2">线路</th>
84 84 <th colspan="4">上行首发</th>
85 85 <th colspan="4">上行末发</th>
... ... @@ -87,8 +87,7 @@
87 87 <th colspan="4">下行末发</th>
88 88 </tr>
89 89 <tr class="hidden">
90   - <th style="display: none;"></th>
91   - <th>站点</th>
  90 + <th align="center">站点</th>
92 91 <th>计发</th>
93 92 <th>实发</th>
94 93 <th>快慢</th>
... ... @@ -110,12 +109,33 @@
110 109  
111 110 </tbody>
112 111 </table>
  112 +
  113 + <input class="btn btn-default hidden" type="button" id="exportSumMap" value="导出明细" style="float: right;"/>
  114 + <table class="table table-bordered table-hover table-checkable" id="sumMap">
  115 + <thead>
  116 + <tr class="hidden">
  117 + <th align="center">序号</th>
  118 + <th>日期</th>
  119 + <th>分公司</th>
  120 + <th>线路</th>
  121 + <th>首末班次</th>
  122 + <th>计发</th>
  123 + <th>实发</th>
  124 + <th>误差</th>
  125 + <th>调度路单备注</th>
  126 + </tr>
  127 + </thead>
  128 + <tbody>
  129 +
  130 + </tbody>
  131 + </table>
113 132 </div>
114 133 </div>
115 134 </div>
116 135 </div>
117 136 </div>
118 137  
  138 +<script type="text/javascript" src="js/jquery.table2excel.min.js"></script>
119 139 <script>
120 140 $(function(){
121 141 $('#export').attr('disabled', "true");
... ... @@ -124,12 +144,9 @@
124 144 if (!$('body').hasClass('page-sidebar-closed'))
125 145 $('.menu-toggler.sidebar-toggler').click();
126 146  
127   - $("#startDate,#endDate").datetimepicker({
128   - format : 'YYYY-MM-DD',
129   - locale : 'zh-cn'
130   - });
131 147  
132 148 var d = new Date();
  149 + d.setTime(d.getTime() - 1*1000*60*60*24);
133 150 var year = d.getFullYear();
134 151 var month = d.getMonth() + 1;
135 152 var day = d.getDate();
... ... @@ -137,7 +154,13 @@
137 154 month = "0" + month;
138 155 if(day < 10)
139 156 day = "0" + day;
140   - $("#startDate,#endDate").val(year + "-" + month + "-" + day);
  157 + var dateTime = year + "-" + month + "-" + day;
  158 + $("#startDate,#endDate").datetimepicker({
  159 + format : 'YYYY-MM-DD',
  160 + locale : 'zh-cn',
  161 + maxDate : dateTime
  162 + });
  163 + $("#startDate,#endDate").val(dateTime);
141 164  
142 165 var fage=false;
143 166 var xlList;
... ... @@ -218,14 +241,32 @@
218 241 var list;
219 242 $("#forms tbody").on("click","a",function(){
220 243 var index = $(this).parent().parent().index();
221   - $.each(list, function(i, g){
222   - if(index == i){
223   - var tbodyHtml = template('list_maps',{list:g.map});
224   - $('#map tbody').html(tbodyHtml);
225   - $("#map .hidden").removeClass("hidden");
226   - $("html,body").animate({scrollTop:$("#map").offset().top},1000);
227   - }
228   - });
  244 + if(index < list.length - 1){
  245 + $.each(list, function(i, g){
  246 + if(index == i){
  247 + var tbodyHtml = template('list_maps',{list:g.map});
  248 + $('#map tbody').html(tbodyHtml);
  249 + $("#sumMap tr").addClass("hidden");
  250 + $("#exportSumMap").addClass("hidden");
  251 + $("#map .hidden").removeClass("hidden");
  252 + $("#exportMap").removeClass("hidden");
  253 + $("html,body").animate({scrollTop:$("#map").offset().top},1000);
  254 + }
  255 + });
  256 + } else {
  257 + var tempList = [];
  258 + $.each(list, function(i, g){
  259 + if(index == i){
  260 + var tbodyHtml = template('list_sumMaps',{list:g.map});
  261 + $('#sumMap tbody').html(tbodyHtml);
  262 + $("#map tr").addClass("hidden");
  263 + $("#exportMap").addClass("hidden");
  264 + $("#sumMap .hidden").removeClass("hidden");
  265 + $("#exportSumMap").removeClass("hidden");
  266 + $("html,body").animate({scrollTop:$("#sumMap").offset().top},1000);
  267 + }
  268 + });
  269 + }
229 270 });
230 271  
231 272 $("#query").on("click",jsDoQuery);
... ... @@ -260,6 +301,7 @@
260 301 params['type'] = "query";
261 302 $("#forms .hidden").removeClass("hidden");
262 303 $("#map tr").addClass("hidden");
  304 + $("#sumMap tr").addClass("hidden");
263 305 $get('/pcpc/firstAndLastBus_sum', params, function(result){
264 306 // 把数据填充到模版中
265 307 var tbodyHtml = template('list_firstAndLastBus_sum',{list:result});
... ... @@ -288,6 +330,28 @@
288 330 });
289 331 });
290 332  
  333 + $("#exportMap").on("click",function(){
  334 + $("#map").table2excel({
  335 + exclue: ".noExl",
  336 + name: "Excel Document Name.xlsx",
  337 + filename: "线路首末班",
  338 + exclude_img: true,
  339 + exclude_links: true,
  340 + exclude_inputs: true
  341 + });
  342 + });
  343 +
  344 + $("#exportSumMap").on("click",function(){
  345 + $("#sumMap").table2excel({
  346 + exclue: ".noExl",
  347 + name: "Excel Document Name.xlsx",
  348 + filename: "首末班误点班次",
  349 + exclude_img: true,
  350 + exclude_links: true,
  351 + exclude_inputs: true
  352 + });
  353 + });
  354 +
291 355  
292 356 });
293 357  
... ... @@ -307,7 +371,7 @@
307 371 <td colspan='4'>{{obj.date}}</td>
308 372 <td>{{obj.jhbc}}</td>
309 373 <td>{{obj.sjbc}}</td>
310   - <td>{{obj.zdl}}</td>
  374 + <td><a id='delay'>{{obj.zdl}}</a></td>
311 375 {{/if}}
312 376 </tr>
313 377 {{/each}}
... ... @@ -368,4 +432,19 @@
368 432 {{/if}}
369 433 </tr>
370 434 {{/each}}
  435 +</script>
  436 +<script type="text/html" id="list_sumMaps">
  437 + {{each list as obj i}}
  438 + <tr>
  439 + <td>{{obj.no}}</td>
  440 + <td>{{obj.date}}</td>
  441 + <td>{{obj.subCompany}}</td>
  442 + <td>{{obj.line}}</td>
  443 + <td>{{obj.firstOrLast}}</td>
  444 + <td>{{obj.jhfc}}</td>
  445 + <td>{{obj.sjfc}}</td>
  446 + <td> {{obj.delay}}</td>
  447 + <td>{{obj.remarks1}}</td>
  448 + </tr>
  449 + {{/each}}
371 450 </script>
372 451 \ No newline at end of file
... ...
src/main/resources/static/pages/forms/statement/js/jquery.table2excel.min.js 0 → 100644
  1 +/*
  2 + * jQuery table2excel - v1.1.1
  3 + * jQuery plugin to export an .xls file in browser from an HTML table
  4 + * https://github.com/rainabba/jquery-table2excel
  5 + *
  6 + * Made by rainabba
  7 + * Under MIT License
  8 + */
  9 +!function(a,b,c,d){function e(b,c){this.element=b,this.settings=a.extend({},k,c),this._defaults=k,this._name=j,this.init()}function f(a){return a.filename?a.filename:"table2excel"}function g(a){var b=/(\s+alt\s*=\s*"([^"]*)"|\s+alt\s*=\s*'([^']*)')/i;return a.replace(/<img[^>]*>/gi,function(a){var c=b.exec(a);return null!==c&&c.length>=2?c[2]:""})}function h(a){return a.replace(/<a[^>]*>|<\/a>/gi,"")}function i(a){var b=/(\s+value\s*=\s*"([^"]*)"|\s+value\s*=\s*'([^']*)')/i;return a.replace(/<input[^>]*>|<\/input>/gi,function(a){var c=b.exec(a);return null!==c&&c.length>=2?c[2]:""})}var j="table2excel",k={exclude:".noExl",name:"Table2Excel",filename:"table2excel",fileext:".xls",exclude_img:!0,exclude_links:!0,exclude_inputs:!0};e.prototype={init:function(){var b=this;b.template={head:'<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head>\x3c!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>',sheet:{head:"<x:ExcelWorksheet><x:Name>",tail:"</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>"},mid:"</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--\x3e</head><body>",table:{head:"<table>",tail:"</table>"},foot:"</body></html>"},b.tableRows=[],a(b.element).each(function(c,d){var e="";a(d).find("tr").not(b.settings.exclude).each(function(c,d){e+="<tr>",a(d).find("td,th").not(b.settings.exclude).each(function(c,d){var f={rows:a(this).attr("rowspan"),cols:a(this).attr("colspan"),flag:a(d).find(b.settings.exclude)};f.flag.length>0?e+="<td> </td>":f.rows&f.cols?e+="<td>"+a(d).html()+"</td>":(e+="<td",f.rows>0&&(e+=" rowspan='"+f.rows+"' "),f.cols>0&&(e+=" colspan='"+f.cols+"' "),e+="/>"+a(d).html()+"</td>")}),e+="</tr>",console.log(e)}),b.settings.exclude_img&&(e=g(e)),b.settings.exclude_links&&(e=h(e)),b.settings.exclude_inputs&&(e=i(e)),b.tableRows.push(e)}),b.tableToExcel(b.tableRows,b.settings.name,b.settings.sheetName)},tableToExcel:function(d,e,g){var h,i,j,k=this,l="";if(k.format=function(a,b){return a.replace(/{(\w+)}/g,function(a,c){return b[c]})},g=void 0===g?"Sheet":g,k.ctx={worksheet:e||"Worksheet",table:d,sheetName:g},l=k.template.head,a.isArray(d))for(h in d)l+=k.template.sheet.head+g+h+k.template.sheet.tail;if(l+=k.template.mid,a.isArray(d))for(h in d)l+=k.template.table.head+"{table"+h+"}"+k.template.table.tail;l+=k.template.foot;for(h in d)k.ctx["table"+h]=d[h];if(delete k.ctx.table,!c.documentMode){var m=new Blob([k.format(l,k.ctx)],{type:"application/vnd.ms-excel"});b.URL=b.URL||b.webkitURL,i=b.URL.createObjectURL(m),j=c.createElement("a"),j.download=f(k.settings),j.href=i,c.body.appendChild(j),j.click(),c.body.removeChild(j)}else if("undefined"!=typeof Blob){l=k.format(l,k.ctx),l=[l];var n=new Blob(l,{type:"text/html"});b.navigator.msSaveBlob(n,f(k.settings))}else txtArea1.document.open("text/html","replace"),txtArea1.document.write(k.format(l,k.ctx)),txtArea1.document.close(),txtArea1.focus(),sa=txtArea1.document.execCommand("SaveAs",!0,f(k.settings));return!0}},a.fn[j]=function(b){var c=this;return c.each(function(){a.data(c,"plugin_"+j)||a.data(c,"plugin_"+j,new e(this,b))}),c}}(jQuery,window,document);
0 10 \ No newline at end of file
... ...
src/main/resources/static/pages/mforms/singledatas/jquery.table2excel.min.js 0 → 100644
  1 +/*
  2 + * jQuery table2excel - v1.1.1
  3 + * jQuery plugin to export an .xls file in browser from an HTML table
  4 + * https://github.com/rainabba/jquery-table2excel
  5 + *
  6 + * Made by rainabba
  7 + * Under MIT License
  8 + */
  9 +!function(a,b,c,d){function e(b,c){this.element=b,this.settings=a.extend({},k,c),this._defaults=k,this._name=j,this.init()}function f(a){return a.filename?a.filename:"table2excel"}function g(a){var b=/(\s+alt\s*=\s*"([^"]*)"|\s+alt\s*=\s*'([^']*)')/i;return a.replace(/<img[^>]*>/gi,function(a){var c=b.exec(a);return null!==c&&c.length>=2?c[2]:""})}function h(a){return a.replace(/<a[^>]*>|<\/a>/gi,"")}function i(a){var b=/(\s+value\s*=\s*"([^"]*)"|\s+value\s*=\s*'([^']*)')/i;return a.replace(/<input[^>]*>|<\/input>/gi,function(a){var c=b.exec(a);return null!==c&&c.length>=2?c[2]:""})}var j="table2excel",k={exclude:".noExl",name:"Table2Excel",filename:"table2excel",fileext:".xls",exclude_img:!0,exclude_links:!0,exclude_inputs:!0};e.prototype={init:function(){var b=this;b.template={head:'<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head>\x3c!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>',sheet:{head:"<x:ExcelWorksheet><x:Name>",tail:"</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>"},mid:"</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--\x3e</head><body>",table:{head:"<table>",tail:"</table>"},foot:"</body></html>"},b.tableRows=[],a(b.element).each(function(c,d){var e="";a(d).find("tr").not(b.settings.exclude).each(function(c,d){e+="<tr>",a(d).find("td,th").not(b.settings.exclude).each(function(c,d){var f={rows:a(this).attr("rowspan"),cols:a(this).attr("colspan"),flag:a(d).find(b.settings.exclude)};f.flag.length>0?e+="<td> </td>":f.rows&f.cols?e+="<td>"+a(d).html()+"</td>":(e+="<td",f.rows>0&&(e+=" rowspan='"+f.rows+"' "),f.cols>0&&(e+=" colspan='"+f.cols+"' "),e+="/>"+a(d).html()+"</td>")}),e+="</tr>",console.log(e)}),b.settings.exclude_img&&(e=g(e)),b.settings.exclude_links&&(e=h(e)),b.settings.exclude_inputs&&(e=i(e)),b.tableRows.push(e)}),b.tableToExcel(b.tableRows,b.settings.name,b.settings.sheetName)},tableToExcel:function(d,e,g){var h,i,j,k=this,l="";if(k.format=function(a,b){return a.replace(/{(\w+)}/g,function(a,c){return b[c]})},g=void 0===g?"Sheet":g,k.ctx={worksheet:e||"Worksheet",table:d,sheetName:g},l=k.template.head,a.isArray(d))for(h in d)l+=k.template.sheet.head+g+h+k.template.sheet.tail;if(l+=k.template.mid,a.isArray(d))for(h in d)l+=k.template.table.head+"{table"+h+"}"+k.template.table.tail;l+=k.template.foot;for(h in d)k.ctx["table"+h]=d[h];if(delete k.ctx.table,!c.documentMode){var m=new Blob([k.format(l,k.ctx)],{type:"application/vnd.ms-excel"});b.URL=b.URL||b.webkitURL,i=b.URL.createObjectURL(m),j=c.createElement("a"),j.download=f(k.settings),j.href=i,c.body.appendChild(j),j.click(),c.body.removeChild(j)}else if("undefined"!=typeof Blob){l=k.format(l,k.ctx),l=[l];var n=new Blob(l,{type:"text/html"});b.navigator.msSaveBlob(n,f(k.settings))}else txtArea1.document.open("text/html","replace"),txtArea1.document.write(k.format(l,k.ctx)),txtArea1.document.close(),txtArea1.focus(),sa=txtArea1.document.execCommand("SaveAs",!0,f(k.settings));return!0}},a.fn[j]=function(b){var c=this;return c.each(function(){a.data(c,"plugin_"+j)||a.data(c,"plugin_"+j,new e(this,b))}),c}}(jQuery,window,document);
0 10 \ No newline at end of file
... ...
src/main/resources/static/pages/mforms/singledatas/singledata.html
... ... @@ -192,13 +192,30 @@
192 192 var tjtype=$("#tjtype").val();
193 193 var params = {};
194 194 var i = layer.load(2);
195   - $get("/mcy_forms/singledatatj",{ gsdmSing:gsdmSing,fgsdmSing:fgsdmSing, line:line,startDate:startDate,lpName:lpName,tjtype:tjtype},function(result){
196   - layer.close(i);
197   - var singledata = template('singledata',{list:result});
198   - // 把渲染好的模版html文本追加到表格中
199   - $('#forms tbody').html(singledata);
200   -
201   - });
  195 +// if(tjtype=='jsy'){
  196 + $get("/mcy_forms/singledatatj",{ gsdmSing:gsdmSing,fgsdmSing:fgsdmSing, line:line,startDate:startDate,lpName:lpName,tjtype:tjtype},function(result){
  197 + layer.close(i);
  198 + var singledata = template('singledata',{list:result});
  199 + // 把渲染好的模版html文本追加到表格中
  200 + $('#forms tbody').html(singledata);
  201 +
  202 + });
  203 +// }else{
  204 +// $get("/mcy_forms/singledata",{ gsdmSing:gsdmSing,fgsdmSing:fgsdmSing, line:line,startDate:startDate,lpName:lpName,tjtype:tjtype},function(result){
  205 +// layer.close(i);
  206 +// var date=new Array(); //存放文本框数组
  207 +// $.each(result, function (i, obj) {
  208 +// if(obj.sgh !='' && obj.sgh!=null){
  209 +// date.push(obj);
  210 +// }
  211 +// });
  212 +// var singledata = template('singledata2',{result});
  213 +// // 把渲染好的模版html文本追加到表格中
  214 +// $('#forms tbody').html(singledata);
  215 +
  216 +// });
  217 +// }
  218 +
202 219 });
203 220  
204 221 $("#export").on("click",function(){
... ... @@ -209,9 +226,16 @@
209 226 var gsdmSing = $("#gsdmSing").val();
210 227 var fgsdmSing = $("#fgsdmSing").val();
211 228 var tjtype=$("#tjtype").val();
212   - $get('/mcy_export/singledataExportTj',{gsdmSing:gsdmSing,fgsdmSing:fgsdmSing,line:line,startDate:startDate,endDate:endDate,tjtype:tjtype,type:'export'},function(result){
213   - window.open("/downloadFile/download?fileName=路单数据"+moment(startDate).format("YYYYMMDD"));
214   - });
  229 +// if(tjtype=='jsy'){
  230 + $get('/mcy_export/singledataExportTj',{gsdmSing:gsdmSing,fgsdmSing:fgsdmSing,line:line,startDate:startDate,endDate:endDate,tjtype:tjtype,type:'export'},function(result){
  231 + window.open("/downloadFile/download?fileName=路单数据"+moment(startDate).format("YYYYMMDD"));
  232 + });
  233 +// }else{
  234 +// $get('/mcy_export/singledataExport',{gsdmSing:gsdmSing,fgsdmSing:fgsdmSing,line:line,startDate:startDate,endDate:endDate,tjtype:tjtype,type:'export'},function(result){
  235 +// window.open("/downloadFile/download?fileName=路单数据"+moment(startDate).format("YYYYMMDD"));
  236 +// });
  237 +// }
  238 +
215 239 });
216 240 });
217 241 </script>
... ... @@ -241,4 +265,29 @@
241 265 </tr>
242 266 {{/if}}
243 267 </script>
244   -</script>
245 268 \ No newline at end of file
  269 +<script type="text/html" id="singledata2">
  270 + {{each list as obj i}}
  271 + <tr>
  272 + <td>{{i+1}}</td>
  273 + <td>{{obj.rQ}}</td>
  274 + <td>{{obj.gS}}</td>
  275 + <td>{{obj.xlmc}}</td>
  276 + <td>{{obj.clzbh}}</td>
  277 + <td></td>
  278 + <td></td>
  279 + <td>{{obj.sgh}}</td>
  280 + <td>{{obj.sName}}</td>
  281 + <td>{{obj.jhlc}}</td>
  282 + <td>{{obj.emptMileage}}</td>
  283 + <td></td>
  284 + <td></td>
  285 + <td></td>
  286 + <td>{{obj.jhjl}}</td>
  287 + </tr>
  288 + {{/each}}
  289 + {{if list.length == 0}}
  290 + <tr>
  291 + <td colspan="16"><h6 class="muted">没有找到相关数据</h6></td>
  292 + </tr>
  293 + {{/if}}
  294 +</script>
... ...
src/main/resources/static/pages/oil/add.html
... ... @@ -392,24 +392,38 @@
392 392 var date=$("#date").val();
393 393 var jsy=$("#jsy").val();
394 394 var xlbm=$("#xlbm").val();
  395 + var gsdm=$("#ssgsdm").val();
395 396 var map={};
396 397 map["nbbm"]=nbbm;
397 398 map["date"]=date;
398 399 map["jsy"]=jsy;
399 400 map["xlbm"]=xlbm;
  401 + map["date"]=date;
  402 + map["rq"]=date;
  403 + map["ssgsdm_like"]=gsdm;
400 404 //检查一下用户是否存在
401   - $get('/ylb/checkJsy', map, function(fage){
402   - if(fage=="0"){
403   - layer.msg('该驾驶员当天已存在.');
  405 + var i = layer.load(2);
  406 + $get('/ylb/checkDate', map, function(fage){
  407 + if(fage=="2"){
  408 + layer.msg('只能操作三天内数据.');
  409 + layer.close(i);
404 410 }else{
405   - $post('/ylb/saveYlb', params, function(){
406   - layer.msg('添加信息成功.');
407   - loadPage('list_ph.html');
  411 + $get('/ylb/checkJsy', map, function(fage){
  412 + if(fage=="0"){
  413 + layer.msg('该驾驶员当天已存在.');
  414 + layer.close(i);
  415 + }else{
  416 + $post('/ylb/saveYlb', params, function(){
  417 + layer.msg('添加信息成功.');
  418 + layer.close(i);
  419 + loadPage('list_ph.html');
  420 + });
  421 + }
408 422 });
409 423 }
410   - });
  424 + })
411 425 }
412   - });
413 426 });
  427 + });
414 428 })();
415 429 </script>
416 430 \ No newline at end of file
... ...
src/main/resources/static/pages/oil/list_ph.html
... ... @@ -336,16 +336,24 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
336 336 var fage=false;
337 337 //var id = 15;
338 338 //$('.in_carpark_jzyl[data-id='+id+']', '#ll_oil_list')
339   -
  339 +
  340 +
340 341 $("#checkYl").on('click', function () {
341 342 //console.log("核对加注量");
342 343 if ($("#rq").val() != "") {
343   - var params=getParamsList();
344   - var i = layer.load(2);
345   - $get('/ylb/checkYl', params, function () {
346   - layer.close(i);
347   - jsDoQuery(params, true);
348   - });
  344 + var params=getParamsList();
  345 + $get('/ylb/checkDate',params,function(status){
  346 + if(status=='2'){
  347 + layer.msg('只能操作三天内数据.');
  348 + }else{
  349 + var i = layer.load(2);
  350 + $get('/ylb/checkYl', params, function () {
  351 + layer.close(i);
  352 + jsDoQuery(params, true);
  353 + });
  354 + }
  355 + })
  356 +
349 357 } else {
350 358 layer.msg('请选择日期.');
351 359 }
... ... @@ -355,12 +363,18 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
355 363 $("#outAndIn").on('click', function () {
356 364 // console.log("进场油量等于出场油量");
357 365 if ($("#rq").val() != "") {
358   - var params=getParamsList();
359   - var i = layer.load(2);
360   - $get('/ylb/outAndIn', params, function () {
361   - layer.close(i);
362   - jsDoQuery(params, true);
363   - });
  366 + var params=getParamsList();
  367 + $get('/ylb/checkDate',params,function(status){
  368 + if(status=='2'){
  369 + layer.msg('只能操作三天内数据.');
  370 + }else{
  371 + var i = layer.load(2);
  372 + $get('/ylb/outAndIn', params, function () {
  373 + layer.close(i);
  374 + jsDoQuery(params, true);
  375 + });
  376 + }
  377 + })
364 378 } else {
365 379 layer.msg('请选择日期.');
366 380 }
... ... @@ -368,164 +382,180 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
368 382  
369 383 //保存
370 384 $(".saveButton").on('click',function(){
371   - var ylArray = [];
372   - $('input.icheck').each(function(){
373   - var map = {};
374   - var id=$(this).data('id');
375   - var nbbm =$('.in_carpark_nbbm[data-id='+id+']', '#ll_oil_list').html();
376   - var jzl =$('.in_carpark_jzl[data-id='+id+']', '#ll_oil_list').html();
377   - if(jzl=="" || jzl ==null){
378   - jzl=0;
379   - }
380   - var czyl=$('.in_carpark_czyl[data-id='+id+']', '#ll_oil_list').val();
381   - if(czyl=="" || czyl==null){
382   - czyl=0;
383   - }
384   - var jzyl=$('.in_carpark_jzyl[data-id='+id+']', '#ll_oil_list').val();
385   - if(jzyl=="" || jzyl==null){
386   - jzyl=0;
387   - }
388   -
389   - var sh = $('.in_carpark_shyl[data-id='+id+']', '#ll_oil_list').val();
390   - if(sh=="" || sh==null){
391   - sh=0;
392   - }
393   -
394   - var shyy = $('.in_carpark_shyy[data-id='+id+']', '#ll_oil_list').val();
395   - var ns = $('.in_carpark_ns[data-id='+id+']', '#ll_oil_list').val();
396   - if(ns=="" || ns==null){
397   - ns=0;
  385 +
  386 + var params_=getParamsList();
  387 + $get('/ylb/checkDate',params_,function(status){
  388 + if(status=='2'){
  389 + layer.msg('只能操作三天内数据.');
  390 + }else{
  391 + var ylArray = [];
  392 + $('input.icheck').each(function(){
  393 + var map = {};
  394 + var id=$(this).data('id');
  395 + var nbbm =$('.in_carpark_nbbm[data-id='+id+']', '#ll_oil_list').html();
  396 + var jzl =$('.in_carpark_jzl[data-id='+id+']', '#ll_oil_list').html();
  397 + if(jzl=="" || jzl ==null){
  398 + jzl=0;
  399 + }
  400 + var czyl=$('.in_carpark_czyl[data-id='+id+']', '#ll_oil_list').val();
  401 + if(czyl=="" || czyl==null){
  402 + czyl=0;
  403 + }
  404 + var jzyl=$('.in_carpark_jzyl[data-id='+id+']', '#ll_oil_list').val();
  405 + if(jzyl=="" || jzyl==null){
  406 + jzyl=0;
  407 + }
  408 +
  409 + var sh = $('.in_carpark_shyl[data-id='+id+']', '#ll_oil_list').val();
  410 + if(sh=="" || sh==null){
  411 + sh=0;
  412 + }
  413 +
  414 + var shyy = $('.in_carpark_shyy[data-id='+id+']', '#ll_oil_list').val();
  415 + var ns = $('.in_carpark_ns[data-id='+id+']', '#ll_oil_list').val();
  416 + if(ns=="" || ns==null){
  417 + ns=0;
  418 + }
  419 +
  420 + var rylx= $('.in_carpark_rylx[data-id='+id+']', '#ll_oil_list').val();
  421 + var yhlx = $('.in_carpark_yhlx[data-id='+id+']', '#ll_oil_list').val();
  422 +
  423 + map['id']=id;
  424 + map['jzl']=jzl;
  425 + map['czyl']=czyl;
  426 + map['jzyl']=jzyl;
  427 + map['sh']=sh;
  428 + map['shyy']=shyy;
  429 + map['ns']=ns;
  430 + map['rylx']=rylx;
  431 + map['yhlx']=yhlx;
  432 + map['nbbm']=nbbm;
  433 + map['rq']=$("#rq").val();
  434 + ylArray.push(map);
  435 + })
  436 + var params = {};
  437 + params['ylbList']=JSON.stringify(ylArray);
  438 + var i = layer.load(2);
  439 + $post('/ylb/saveYlbList', params, function () {
  440 + layer.close(i);
  441 + var params1 =getParamsList();
  442 + jsDoQuery(params1, true);
  443 + });
398 444 }
399   -
400   - var rylx= $('.in_carpark_rylx[data-id='+id+']', '#ll_oil_list').val();
401   - var yhlx = $('.in_carpark_yhlx[data-id='+id+']', '#ll_oil_list').val();
402   -
403   - map['id']=id;
404   - map['jzl']=jzl;
405   - map['czyl']=czyl;
406   - map['jzyl']=jzyl;
407   - map['sh']=sh;
408   - map['shyy']=shyy;
409   - map['ns']=ns;
410   - map['rylx']=rylx;
411   - map['yhlx']=yhlx;
412   - map['nbbm']=nbbm;
413   - map['rq']=$("#rq").val();
414   - ylArray.push(map);
415 445 })
416   - var params = {};
417   - params['ylbList']=JSON.stringify(ylArray);
418   - var i = layer.load(2);
419   - $post('/ylb/saveYlbList', params, function () {
420   - layer.close(i);
421   - var params1 =getParamsList();
422   - jsDoQuery(params1, true);
423   - });
424 446 })
425 447 //拆分
426 448 $(".sortButton").on('click', function () {
427 449 if ($("#rq").val() != "") {
428   - //拆分前先保存全部
429   - var ylArray = [];
430   - $('input.icheck').each(function(){
431   - var map = {};
432   - var id=$(this).data('id');
433   - var nbbm =$('.in_carpark_nbbm[data-id='+id+']', '#ll_oil_list').html();
434   - var jzl =$('.in_carpark_jzl[data-id='+id+']', '#ll_oil_list').html();
435   - if(jzl=="" || jzl ==null){
436   - jzl=0;
437   - }
438   - var czyl=$('.in_carpark_czyl[data-id='+id+']', '#ll_oil_list').val();
439   - if(czyl=="" || czyl==null){
440   - czyl=0;
441   - }
442   - var jzyl=$('.in_carpark_jzyl[data-id='+id+']', '#ll_oil_list').val();
443   - if(jzyl=="" || jzyl==null){
444   - jzyl=0;
445   - }
446   -
447   - var sh = $('.in_carpark_shyl[data-id='+id+']', '#ll_oil_list').val();
448   - if(sh=="" || sh==null){
449   - sh=0;
450   - }
451   -
452   - var shyy = $('.in_carpark_shyy[data-id='+id+']', '#ll_oil_list').val();
453   - var ns = $('.in_carpark_ns[data-id='+id+']', '#ll_oil_list').val();
454   - if(ns=="" || ns==null){
455   - ns=0;
456   - }
457   -
458   - var rylx= $('.in_carpark_rylx[data-id='+id+']', '#ll_oil_list').val();
459   - var yhlx = $('.in_carpark_yhlx[data-id='+id+']', '#ll_oil_list').val();
460   -
461   - map['id']=id;
462   - map['jzl']=jzl;
463   - map['czyl']=czyl;
464   - map['jzyl']=jzyl;
465   - map['sh']=sh;
466   - map['shyy']=shyy;
467   - map['ns']=ns;
468   - map['rylx']=rylx;
469   - map['yhlx']=yhlx;
470   - map['nbbm']=nbbm;
471   - map['rq']=$("#rq").val();
472   - ylArray.push(map);
473   - })
474   - var params = {};
475   - params['ylbList']=JSON.stringify(ylArray);
476   -
477   -
478   - //拆分操作
479   - var ylArray2 = [];
480   - var nbbm="";
481   - var msg="";
482   - $('input.icheck:checked').each(function(){
483   - var map = {};
484   - var id=$(this).data('id');
485   - var clzbh =$('.in_carpark_nbbm[data-id='+id+']', '#ll_oil_list').html();
486   - if(nbbm.indexOf(clzbh)>-1){
487   - if(msg==""){
488   - msg += clzbh;
489   - }else{
490   - msg += ","+clzbh;
491   - }
492   - }else{
493   - nbbm +=clzbh;
494   - var jzyl=$('.in_carpark_jzyl[data-id='+id+']', '#ll_oil_list').val();
495   - var sh = $('.in_carpark_shyl[data-id='+id+']', '#ll_oil_list').val();
496   - var shyy = $('.in_carpark_shyy[data-id='+id+']', '#ll_oil_list').val();
497   - var ns = $('.in_carpark_ns[data-id='+id+']', '#ll_oil_list').val();
498   - var rylx= $('.in_carpark_rylx[data-id='+id+']', '#ll_oil_list').val();
499   - map['id']=id;
500   - map['jzyl']=jzyl;
501   - map['sh']=sh;
502   - map['shyy']=shyy;
503   - map['ns']=ns;
504   - map['rylx']=rylx;
505   - ylArray2.push(map);
506   - }
507   -
508   - }) ;
509   - if(msg!=""){
510   - layer.msg('内部编码为:【'+msg +'】的车辆请选择一条数据进行拆分.');
511   - }else{
512   - var params2 = {};
513   - params2['ylbList']=JSON.stringify(ylArray2);
514   - var i = layer.load(2);
515   - //保存操作
516   - $post('/ylb/saveYlbList', params, function () {
517   - //拆分操作
518   - $post('/ylb/sort', params2, function () {
519   - layer.close(i);
520   - var params1 =getParamsList();
521   - jsDoQuery(params1, true);
522   - });
523   - });
524   - }
525   -
  450 + var params_=getParamsList();
  451 + $get('/ylb/checkDate',params_,function(status){
  452 + if(status=='2'){
  453 + layer.msg('只能操作三天内数据.');
  454 + }else{
  455 + //拆分前先保存全部
  456 + var ylArray = [];
  457 + $('input.icheck').each(function(){
  458 + var map = {};
  459 + var id=$(this).data('id');
  460 + var nbbm =$('.in_carpark_nbbm[data-id='+id+']', '#ll_oil_list').html();
  461 + var jzl =$('.in_carpark_jzl[data-id='+id+']', '#ll_oil_list').html();
  462 + if(jzl=="" || jzl ==null){
  463 + jzl=0;
  464 + }
  465 + var czyl=$('.in_carpark_czyl[data-id='+id+']', '#ll_oil_list').val();
  466 + if(czyl=="" || czyl==null){
  467 + czyl=0;
  468 + }
  469 + var jzyl=$('.in_carpark_jzyl[data-id='+id+']', '#ll_oil_list').val();
  470 + if(jzyl=="" || jzyl==null){
  471 + jzyl=0;
  472 + }
  473 +
  474 + var sh = $('.in_carpark_shyl[data-id='+id+']', '#ll_oil_list').val();
  475 + if(sh=="" || sh==null){
  476 + sh=0;
  477 + }
  478 +
  479 + var shyy = $('.in_carpark_shyy[data-id='+id+']', '#ll_oil_list').val();
  480 + var ns = $('.in_carpark_ns[data-id='+id+']', '#ll_oil_list').val();
  481 + if(ns=="" || ns==null){
  482 + ns=0;
  483 + }
  484 +
  485 + var rylx= $('.in_carpark_rylx[data-id='+id+']', '#ll_oil_list').val();
  486 + var yhlx = $('.in_carpark_yhlx[data-id='+id+']', '#ll_oil_list').val();
  487 +
  488 + map['id']=id;
  489 + map['jzl']=jzl;
  490 + map['czyl']=czyl;
  491 + map['jzyl']=jzyl;
  492 + map['sh']=sh;
  493 + map['shyy']=shyy;
  494 + map['ns']=ns;
  495 + map['rylx']=rylx;
  496 + map['yhlx']=yhlx;
  497 + map['nbbm']=nbbm;
  498 + map['rq']=$("#rq").val();
  499 + ylArray.push(map);
  500 + })
  501 + var params = {};
  502 + params['ylbList']=JSON.stringify(ylArray);
  503 +
  504 +
  505 + //拆分操作
  506 + var ylArray2 = [];
  507 + var nbbm="";
  508 + var msg="";
  509 + $('input.icheck:checked').each(function(){
  510 + var map = {};
  511 + var id=$(this).data('id');
  512 + var clzbh =$('.in_carpark_nbbm[data-id='+id+']', '#ll_oil_list').html();
  513 + if(nbbm.indexOf(clzbh)>-1){
  514 + if(msg==""){
  515 + msg += clzbh;
  516 + }else{
  517 + msg += ","+clzbh;
  518 + }
  519 + }else{
  520 + nbbm +=clzbh;
  521 + var jzyl=$('.in_carpark_jzyl[data-id='+id+']', '#ll_oil_list').val();
  522 + var sh = $('.in_carpark_shyl[data-id='+id+']', '#ll_oil_list').val();
  523 + var shyy = $('.in_carpark_shyy[data-id='+id+']', '#ll_oil_list').val();
  524 + var ns = $('.in_carpark_ns[data-id='+id+']', '#ll_oil_list').val();
  525 + var rylx= $('.in_carpark_rylx[data-id='+id+']', '#ll_oil_list').val();
  526 + map['id']=id;
  527 + map['jzyl']=jzyl;
  528 + map['sh']=sh;
  529 + map['shyy']=shyy;
  530 + map['ns']=ns;
  531 + map['rylx']=rylx;
  532 + ylArray2.push(map);
  533 + }
  534 +
  535 + }) ;
  536 + if(msg!=""){
  537 + layer.msg('内部编码为:【'+msg +'】的车辆请选择一条数据进行拆分.');
  538 + }else{
  539 + var params2 = {};
  540 + params2['ylbList']=JSON.stringify(ylArray2);
  541 + var i = layer.load(2);
  542 + //保存操作
  543 + $post('/ylb/saveYlbList', params, function () {
  544 + //拆分操作
  545 + $post('/ylb/sort', params2, function () {
  546 + layer.close(i);
  547 + var params1 =getParamsList();
  548 + jsDoQuery(params1, true);
  549 + });
  550 + });
  551 + }
  552 + }
  553 + })
526 554 } else {
527 555 layer.msg('请选择日期.');
528 556 }
  557 +
  558 +
529 559 })
530 560  
531 561 /* //拆分
... ... @@ -583,13 +613,18 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
583 613 $("#obtain").on('click', function () {
584 614 //console.log("获取加存");
585 615 if ($("#rq").val() != "") {
586   - var params =getParamsList();
587   -
588   - var i = layer.load(2);
589   - $get('/ylb/obtain', params, function () {
590   - layer.close(i);
591   - jsDoQuery(params, true);
592   - });
  616 + var params=getParamsList();
  617 + $get('/ylb/checkDate',params,function(status){
  618 + if(status=='2'){
  619 + layer.msg('只能操作三天内数据.');
  620 + }else{
  621 + var i = layer.load(2);
  622 + $get('/ylb/obtain', params, function () {
  623 + layer.close(i);
  624 + jsDoQuery(params, true);
  625 + });
  626 + }
  627 + })
593 628 } else {
594 629 layer.msg('请选择日期.');
595 630 }
... ... @@ -625,33 +660,8 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
625 660 jsDoQuery(params, true);
626 661 }
627 662 });
628   -
629   - function getParamsList(){
630   - var cells = $('tr.filter')[0].cells
631   - , cells1 = $('tr.filter2')[0].cells,params = {}
632   - , name;
633   - $.each(cells, function (i, cell) {
634   - var items = $('input,select', cell);
635   - for (var j = 0, item; item = items[j++];) {
636   - name = $(item).attr('name');
637   - if (name) {
638   - params[name] = $(item).val();
639   - }
640   - }
641   - });
642   - $.each(cells1, function (i, cell) {
643   - var items = $('input,select', cell);
644   - for (var j = 0, item; item = items[j++];) {
645   - name = $(item).attr('name');
646   - if (name) {
647   - params[name] = $(item).val();
648   - }
649   - }
650   - });
651   -
652   - return params;
653   - }
654 663  
  664 +
655 665 var xlList;
656 666 var obj=[];
657 667 $.get('/report/lineList',function(result){
... ... @@ -751,14 +761,20 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
751 761  
752 762  
753 763 function jsyUpdate(){
754   - var id = $(this).data('id');
755   - var jsy=$('.in_carpark_jsy[data-id='+id+']', '#ll_oil_list').val();
756   - $get('/ylb/updateJsy',{id:id,jsy:jsy}, function(result){
757   - layer.msg('修改成功.');
758   - var params = getParamsList();
759   - page = 0;
760   - jsDoQuery(params, true);
761   - });
  764 + var params=getParamsList();
  765 + $get('/ylb/checkDate',params,function(status){
  766 + if(status=='2'){
  767 + layer.msg('只能操作三天内数据.');
  768 + }else{
  769 + var id = $(this).data('id');
  770 + var jsy=$('.in_carpark_jsy[data-id='+id+']', '#ll_oil_list').val();
  771 + $get('/ylb/updateJsy',{id:id,jsy:jsy}, function(result){
  772 + layer.msg('修改成功.');
  773 + page = 0;
  774 + jsDoQuery(params, true);
  775 + });
  776 + }
  777 + })
762 778  
763 779 }
764 780 //页面计算防止精度丢失
... ... @@ -883,32 +899,38 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
883 899  
884 900 //删除
885 901 $('.removeButton').on('click', function () {
886   - var idArray = [];
887   - var x=0;
888   - $('input.icheck:checked').each(function(){
889   - x++;
890   - var map ={};
891   - var id=$(this).data('id');
892   - map['id']=id;
893   - idArray.push(map);
894   -
  902 + var params_=getParamsList();
  903 + $get('/ylb/checkDate',params_,function(status){
  904 + if(status=='2'){
  905 + layer.msg('只能操作三天内数据.');
  906 + }else{
  907 + var idArray = [];
  908 + var x=0;
  909 + $('input.icheck:checked').each(function(){
  910 + x++;
  911 + var map ={};
  912 + var id=$(this).data('id');
  913 + map['id']=id;
  914 + idArray.push(map);
  915 +
  916 + })
  917 + var params = {};
  918 + params['ids']=JSON.stringify(idArray);
  919 + if (x==0) {
  920 + layer.msg("请选择要删除的数据");
  921 + }else{
  922 + if(confirm('确定要删除选中的数据?'))
  923 + {
  924 + var i = layer.load(2);
  925 + $post('/ylb/deleteIds', params, function (result) {
  926 + layer.close(i);
  927 + var params=getParamsList();
  928 + jsDoQuery(params, true);
  929 + });
  930 + }
  931 + }
  932 + }
895 933 })
896   - var params = {};
897   - params['ids']=JSON.stringify(idArray);
898   - console.log(idArray);
899   - if (x==0) {
900   - layer.msg("请选择要删除的数据");
901   - }else{
902   - if(confirm('确定要删除选中的数据?'))
903   - {
904   - var i = layer.load(2);
905   - $post('/ylb/deleteIds', params, function (result) {
906   - layer.close(i);
907   - var params=getParamsList();
908   - jsDoQuery(params, true);
909   - });
910   - }
911   - }
912 934 });
913 935  
914 936 $("#ylbListFgsdmId").on("change",initXl);
... ... @@ -1011,6 +1033,37 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
1011 1033 }
1012 1034 });
1013 1035  
  1036 + function checkDate(){
  1037 + var params=getParamsList();
  1038 +
  1039 + }
  1040 +
  1041 + function getParamsList(){
  1042 + var cells = $('tr.filter')[0].cells
  1043 + , cells1 = $('tr.filter2')[0].cells,params = {}
  1044 + , name;
  1045 + $.each(cells, function (i, cell) {
  1046 + var items = $('input,select', cell);
  1047 + for (var j = 0, item; item = items[j++];) {
  1048 + name = $(item).attr('name');
  1049 + if (name) {
  1050 + params[name] = $(item).val();
  1051 + }
  1052 + }
  1053 + });
  1054 + $.each(cells1, function (i, cell) {
  1055 + var items = $('input,select', cell);
  1056 + for (var j = 0, item; item = items[j++];) {
  1057 + name = $(item).attr('name');
  1058 + if (name) {
  1059 + params[name] = $(item).val();
  1060 + }
  1061 + }
  1062 + });
  1063 +
  1064 + return params;
  1065 + }
  1066 +
1014 1067 //表格滚动条
1015 1068 var modal='#ylbtable';
1016 1069 $('#datatable_ylb_body_div', modal).perfectScrollbar({suppressScrollX: true});
... ...
src/main/resources/static/pages/report/countMileage/countLine/countLineMileage.html
... ... @@ -263,7 +263,7 @@
263 263 params['xlName'] = xlName;
264 264 params['type'] = "query";
265 265 var i = layer.load(2);
266   - $get('/report/countLineMileage2',params,function(result){
  266 + $get('/report/countLineMileage',params,function(result){
267 267 $("#datetodate").html(date+"至"+date2);
268 268 layer.close(i);
269 269 // 把数据填充到模版中
... ... @@ -290,7 +290,7 @@
290 290 params['xlName'] = xlName;
291 291 params['type'] = "export";
292 292 params['by']='sj';
293   - $get('/report/countLineMileage2',params,function(result){
  293 + $get('/report/countLineMileage',params,function(result){
294 294 window.open("/downloadFile/download?fileName=线路公里统计表");
295 295 });
296 296 });
... ...
src/main/resources/static/pages/report/message/message.html
... ... @@ -217,7 +217,7 @@
217 217 line = $("#line").val();
218 218 date = $("#date").val();
219 219 var obj = $(this);
220   - $get('/realSchedule/historyMessage',{line:line,date:date,code:jName,type:"query"},function(result){
  220 + $get('/report/historyMessageList',{line:line,date:date,code:jName,type:"query"},function(result){
221 221 var list_history_msg = template('list_history_msg',{list:result});
222 222 // 把渲染好的模版html文本追加到表格中
223 223 $('#forms tbody').html(list_history_msg);
... ... @@ -237,7 +237,7 @@
237 237 });
238 238  
239 239 $("#export").on("click",function(){
240   - $get('/realSchedule/historyMessage',{line:line,date:date,code:jName,type:"export_msg"},function(result){
  240 + $get('/report/historyMessageList',{line:line,date:date,code:jName,type:"export_msg"},function(result){
241 241 window.open("/downloadFile/download?fileName=调度消息分析"+moment(date).format("YYYYMMDD"));
242 242 });
243 243 });
... ... @@ -274,12 +274,12 @@
274 274 {{each list as obj i}}
275 275 <tr>
276 276 <td>{{i+1}}</td>
277   - <td>{{obj[4]}}</td>
278   - <!--<td>{{obj[6]}}</td>-->
279 277 <td>{{obj[0]}}</td>
  278 + <!--<td>{{obj[6]}}</td>-->
280 279 <td>{{obj[1]}}</td>
281   - <td>{{obj[3]}}</td>
282 280 <td>{{obj[2]}}</td>
  281 + <td>{{obj[3]}}</td>
  282 + <td>{{obj[4]}}</td>
283 283 </tr>
284 284 {{/each}}
285 285 {{if list.length == 0}}
... ...
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
... ... @@ -745,6 +745,25 @@ angular.module(&#39;ScheduleApp&#39;).factory(
745 745 }
746 746 }
747 747 }
  748 + ),
  749 +
  750 + lineverions: $resource(
  751 + '/tic_ec/versiondesc2/:lineId/:status',
  752 + {},
  753 + {
  754 + list: {
  755 + method: 'GET',
  756 + isArray: true,
  757 + transformResponse: function(rs) {
  758 + var dst = angular.fromJson(rs);
  759 + if (dst.status == 'SUCCESS') {
  760 + return dst.data;
  761 + } else {
  762 + return dst; // 业务错误留给控制器处理
  763 + }
  764 + }
  765 + }
  766 + }
748 767 )
749 768 };
750 769  
... ...
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/form.html
... ... @@ -106,7 +106,7 @@
106 106 <label class="col-md-2 control-label">站点路由版本类型*:</label>
107 107 <div class="col-md-4">
108 108 <sa-Select5 name="zdlytype"
109   - model="ctrl.ttInfoDetailManageForForm"
  109 + model="ctrl"
110 110 cmaps="{'zdlytype': 'value'}"
111 111 dcname="zdlytype"
112 112 icname="value"
... ... @@ -117,20 +117,24 @@
117 117 searchexp="this.name"
118 118 required >
119 119 </sa-Select5>
  120 + <input type="hidden" name="lineversion" ng-model="ctrl.ttInfoDetailManageForForm.lineversion" required/>
120 121 </div>
121 122 <!-- 隐藏快,显示验证信息 -->
122 123 <div class="alert alert-danger well-sm" ng-show="myForm.zdlytype.$error.required">
123 124 请选择站点路由版本类型
124 125 </div>
  126 + <div class="alert alert-danger well-sm" ng-show="myForm.lineversion.$error.required">
  127 + 未知线路版本
  128 + </div>
125 129 </div>
126 130  
127   - <div class="form-group has-success has-feedback" ng-if="ctrl.ttInfoDetailManageForForm.zdlytype == 2">
  131 + <div class="form-group has-success has-feedback" ng-if="ctrl.zdlytype == 2">
128 132 <label class="col-md-2 control-label">最近版本列表*:</label>
129 133 <div class="col-md-4">
130   - <sa-Select5 name="zdlyversion"
  134 + <sa-Select5 name="lineversion_sel"
131 135 model="ctrl.ttInfoDetailManageForForm"
132   - cmaps="{'zdlyversion' : 'version'}"
133   - dcname="zdlyversion"
  136 + cmaps="{'lineversion' : 'version'}"
  137 + dcname="lineversion"
134 138 icname="version"
135 139 dsparams="{{ {type: 'ajax', param:{'lineid': ctrl.ttInfoDetailManageForForm.xlid}, atype:'rs_version_list' } | json }}"
136 140 iterobjname="item"
... ... @@ -139,8 +143,9 @@
139 143 searchexp="this.desc"
140 144 required >
141 145 </sa-Select5>
  146 +
142 147 </div>
143   - <div class="alert alert-danger well-sm" ng-show="myForm.zdlyversion.$error.required">
  148 + <div class="alert alert-danger well-sm" ng-show="myForm.lineversion_sel.$error.required">
144 149 必须选择版本列表
145 150 </div>
146 151 </div>
... ... @@ -168,8 +173,7 @@
168 173 'sheetname': ctrl.ttInfoDetailManageForForm.sheetname,
169 174 'lineid' : ctrl.ttInfoDetailManageForForm.xlid,
170 175 'linename' : ctrl.ttInfoDetailManageForForm.xlname,
171   - 'zdlytype': ctrl.ttInfoDetailManageForForm.zdlytype,
172   - 'zdlyversion' : ctrl.ttInfoDetailManageForForm.zdlyversion
  176 + 'lineversion' : ctrl.ttInfoDetailManageForForm.lineversion
173 177 } | json}}"/>
174 178 </div>
175 179 <!-- 隐藏块,显示验证信息 -->
... ...
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/module.js
... ... @@ -3,7 +3,8 @@ angular.module(&#39;ScheduleApp&#39;).factory(
3 3 'TtInfoDetailManageService',
4 4 [
5 5 'TimeTableDetailManageService_g',
6   - function(service) {
  6 + 'TTInfoManageService_g',
  7 + function(service, service2) {
7 8 // TODO:
8 9  
9 10 return {
... ... @@ -17,6 +18,16 @@ angular.module(&#39;ScheduleApp&#39;).factory(
17 18 getEditInfo: function(xlid, ttid) {
18 19 var params = {xlid : xlid, ttid : ttid};
19 20 return service.edit.list(params).$promise;
  21 + },
  22 + /**
  23 + * 获取当前线路版本。
  24 + * @param xlid
  25 + * @returns {*|Function|promise|n}
  26 + */
  27 + getCurrentLineVersion: function(xlid) {
  28 + var params = {'lineId': xlid, 'status': 1};
  29 + return service2.lineverions.list(params).$promise;
  30 +
20 31 }
21 32 };
22 33 }
... ... @@ -31,7 +42,8 @@ angular.module(&#39;ScheduleApp&#39;).controller(
31 42 'FileUploader',
32 43 '$stateParams',
33 44 '$state',
34   - function(service, FileUploader, $stateParams, $state) {
  45 + '$scope',
  46 + function(service, FileUploader, $stateParams, $state, $scope) {
35 47 var self = this;
36 48 var xlid = $stateParams.xlid;
37 49 var ttid = $stateParams.ttid;
... ... @@ -40,10 +52,35 @@ angular.module(&#39;ScheduleApp&#39;).controller(
40 52  
41 53 self.title = xlname + '(' + ttname + ')' + '时刻表明细信息excel数据导入';
42 54  
  55 + // 站点路由选择类型
  56 + self.zdlytype = 1;
  57 +
  58 + $scope.$watch(
  59 + function() {
  60 + return self.zdlytype;
  61 + },
  62 + function(n, o) {
  63 + if (n == 1) {
  64 + // 初始获取线路当前版本
  65 + service.getCurrentLineVersion(xlid).then(
  66 + function(result) {
  67 + if (result.length == 0) {
  68 + alert("没有线路当前版本");
  69 + } else if (result.length > 1) {
  70 + alert("有多个线路当前版本");
  71 + } else {
  72 + self.ttInfoDetailManageForForm.lineversion = result[0].version;
  73 + }
  74 + }
  75 + );
  76 + }
  77 + },
  78 + true
  79 + );
  80 +
43 81 // 欲保存的表单信息,双向绑定
44 82 self.ttInfoDetailManageForForm = {
45   - zdlytype: 1, // 站点路由类型
46   - zdlyversion: -1, // 站点路由版本
  83 + lineversion: undefined, // 线路版本
47 84 xlid: xlid, // 线路id
48 85 ttid: ttid, // 时刻表id
49 86 xlname: xlname, // 线路名称
... ...
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/service.js
... ... @@ -71,6 +71,25 @@ angular.module(&#39;ScheduleApp&#39;).factory(
71 71 }
72 72 }
73 73 }
  74 + ),
  75 +
  76 + lineverions: $resource(
  77 + '/tic_ec/versiondesc2/:lineId/:status',
  78 + {},
  79 + {
  80 + list: {
  81 + method: 'GET',
  82 + isArray: true,
  83 + transformResponse: function(rs) {
  84 + var dst = angular.fromJson(rs);
  85 + if (dst.status == 'SUCCESS') {
  86 + return dst.data;
  87 + } else {
  88 + return dst; // 业务错误留给控制器处理
  89 + }
  90 + }
  91 + }
  92 + }
74 93 )
75 94 };
76 95  
... ...