Commit b97157412a93773769a8fba2b965ccc5dcacab2f

Authored by 王通
2 parents 186db5a3 cf3d5953

Merge branch 'pudong' of http://192.168.168.201:8888/panzhaov5/bsth_control.git into pudong

Showing 29 changed files with 2528 additions and 1622 deletions

Too many changes to show.

To preserve performance only 29 of 79 files are displayed.

src/main/java/com/bsth/controller/LineVersionsController.java
1 1 package com.bsth.controller;
2 2  
3   -import java.util.List;
4   -import java.util.Map;
5   -
  3 +import com.bsth.entity.LineVersions;
  4 +import com.bsth.repository.LineRepository;
  5 +import com.bsth.service.LineVersionsService;
6 6 import org.springframework.beans.factory.annotation.Autowired;
7 7 import org.springframework.web.bind.annotation.RequestMapping;
8 8 import org.springframework.web.bind.annotation.RequestMethod;
9 9 import org.springframework.web.bind.annotation.RequestParam;
10 10 import org.springframework.web.bind.annotation.RestController;
11 11  
12   -import com.bsth.entity.LineVersions;
13   -import com.bsth.repository.LineRepository;
14   -import com.bsth.service.LineVersionsService;
  12 +import java.util.List;
  13 +import java.util.Map;
15 14  
16 15 /**
17 16 *
... ... @@ -75,7 +74,11 @@ public class LineVersionsController extends BaseController<LineVersions, Integer
75 74 public Map<String, Object> add(@RequestParam Map<String, Object> map) {
76 75 return service.add(map);
77 76 }
78   -
  77 + @RequestMapping(value = "delete", method = RequestMethod.POST)
  78 + public Map<String, Object> delete(@RequestParam (defaultValue = "id") int id) {
  79 + return service.delete(id);
  80 + }
  81 +
79 82 /**
80 83 * 根据线路id获取当前版本号
81 84 *
... ...
src/main/java/com/bsth/controller/calc/CalcExportController.java 0 → 100644
  1 +package com.bsth.controller.calc;
  2 +
  3 +import java.text.SimpleDateFormat;
  4 +import java.util.ArrayList;
  5 +import java.util.HashMap;
  6 +import java.util.Iterator;
  7 +import java.util.List;
  8 +import java.util.Map;
  9 +
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.web.bind.annotation.RequestMapping;
  12 +import org.springframework.web.bind.annotation.RequestMethod;
  13 +import org.springframework.web.bind.annotation.RequestParam;
  14 +import org.springframework.web.bind.annotation.RestController;
  15 +
  16 +import com.bsth.common.ResponseCode;
  17 +import com.bsth.entity.calc.CalcWaybill;
  18 +import com.bsth.entity.mcy_forms.Waybillday;
  19 +import com.bsth.service.calc.CalcMixService;
  20 +import com.bsth.service.calc.CalcWaybillService;
  21 +import com.bsth.util.ReportUtils;
  22 +
  23 +@RestController
  24 +@RequestMapping("calc_export")
  25 +public class CalcExportController {
  26 +
  27 + @Autowired
  28 + CalcWaybillService service;
  29 +
  30 + @Autowired
  31 + CalcMixService clacMixService;
  32 +
  33 + @RequestMapping(value = "/waybilldayExport", method = RequestMethod.GET)
  34 + public Map<String, Object> calcjsyspyExport(@RequestParam Map<String, Object> map) {
  35 +
  36 + String line="";
  37 + if(map.get("line")!=null){
  38 + line=map.get("line").toString().trim();
  39 + }
  40 + String lineName="";
  41 + if(map.get("lineName")!=null){
  42 + lineName=map.get("lineName").toString().trim();
  43 + }
  44 + String startDate="";
  45 + if(map.get("startDate")!=null){
  46 + startDate=map.get("startDate").toString().trim();
  47 + }
  48 + String endDate="";
  49 + if(map.get("endDate")!=null){
  50 + endDate=map.get("endDate").toString().trim();
  51 + }
  52 + String cont="";
  53 + if(map.get("cont")!=null){
  54 + cont=map.get("cont").toString().trim();
  55 + }
  56 + String empnames="";
  57 + if(map.get("empnames")!=null){
  58 + empnames=map.get("empnames").toString().trim();
  59 + }
  60 + String gsdmManth="";
  61 + if(map.get("gsdmManth")!=null){
  62 + gsdmManth=map.get("gsdmManth").toString().trim();
  63 + }
  64 + String fgsdmManth="";
  65 + if(map.get("fgsdmManth")!=null){
  66 + fgsdmManth=map.get("fgsdmManth").toString().trim();
  67 + }
  68 +
  69 + Map<String, Object> resMap = new HashMap<String, Object>();
  70 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  71 + List<Map<String, Object>> list = clacMixService.calcjsyspy(line, startDate, endDate, empnames, cont, gsdmManth, fgsdmManth);
  72 +
  73 + Map<String, Object> temp = new HashMap<String, Object>();
  74 + temp.put("i", "序号");
  75 + temp.put("jName", empnames);
  76 + temp.put("jhyybc", "计划营运班次");
  77 + temp.put("jhfyybc", "计划空驶班次");
  78 + temp.put("sjyybc", "实际营运班次");
  79 + temp.put("sjfyybc", "实际空驶班次");
  80 + temp.put("lbbc", "烂班班次");
  81 + temp.put("ljbc", "临加班次");
  82 + temp.put("jhzlc", "计划总里程");
  83 + temp.put("jhyylc", "计划营运里程");
  84 + temp.put("jhfyylc", "计划空驶里程");
  85 + temp.put("sjzlc", "实际总里程");
  86 + temp.put("sjyylc", "实际营运里程");
  87 + temp.put("sjfyylc", "实际空驶里程");
  88 + temp.put("lblc", "烂班里程");
  89 + temp.put("ljyylc", "临加营运里程");
  90 + temp.put("ljfyylc", "临加空驶里程");
  91 + resList.add(temp);
  92 + for(int i = 0; i < list.size(); i++){
  93 + temp = list.get(i);
  94 + temp.put("i", i+1);
  95 + resList.add(temp);
  96 + }
  97 +
  98 + String date = startDate.replaceAll("-", "");
  99 + if(!startDate.equals(endDate)){
  100 + date = startDate.replaceAll("-", "") + "-" + endDate.replaceAll("-", "");
  101 + }
  102 +
  103 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  104 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  105 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  106 + Map<String,Object> mm = new HashMap<String, Object>();
  107 + ReportUtils ee = new ReportUtils();
  108 +
  109 + try {
  110 + listI.add(resList.iterator());
  111 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  112 + ee.excelReplace(listI, new Object[] { mm }, path+"mould/calcjsyspy.xls",
  113 + path+"export/"+date+"-"+lineName+"-人车班次公里统计.xls");
  114 + resMap.put("status", ResponseCode.SUCCESS);
  115 + } catch (Exception e) {
  116 + e.printStackTrace();
  117 + resMap.put("status", ResponseCode.ERROR);
  118 + }
  119 + return resMap;
  120 + }
  121 +
  122 + @RequestMapping(value = "/singledataExportTj", method = RequestMethod.GET)
  123 + public Map<String, Object> singledataExportTj(@RequestParam Map<String, Object> map) {
  124 +
  125 + String line="";
  126 + if(map.get("line")!=null){
  127 + line=map.get("line").toString().trim();
  128 + }
  129 + String lineName="";
  130 + if(map.get("lineName")!=null){
  131 + lineName=map.get("lineName").toString().trim();
  132 + }
  133 + String startDate="";
  134 + if(map.get("startDate")!=null){
  135 + startDate=map.get("startDate").toString().trim();
  136 + }
  137 + String endDate="";
  138 + if(map.get("endDate")!=null){
  139 + endDate=map.get("endDate").toString().trim();
  140 + }
  141 + String tjtype="";
  142 + if(map.get("tjtype")!=null){
  143 + tjtype=map.get("tjtype").toString().trim();
  144 + }
  145 + String cont="";
  146 + if(map.get("cont")!=null){
  147 + cont=map.get("cont").toString().trim();
  148 + }
  149 + String gsdmSing="";
  150 + if(map.get("gsdmSing")!=null){
  151 + gsdmSing=map.get("gsdmSing").toString().trim();
  152 + }
  153 + String fgsdmSing="";
  154 + if(map.get("fgsdmSing")!=null){
  155 + fgsdmSing=map.get("fgsdmSing").toString().trim();
  156 + }
  157 +
  158 + Map<String, Object> resMap = new HashMap<String, Object>();
  159 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  160 + List<Map<String, Object>> list = clacMixService.singledatatj(line, startDate, endDate, tjtype, cont, gsdmSing, fgsdmSing);
  161 +
  162 + Map<String, Object> temp = new HashMap<String, Object>();
  163 + temp.put("i", "序号");
  164 + temp.put("gS", "所属公司");
  165 + temp.put("xlName", "线路");
  166 + temp.put("jName", tjtype);
  167 + temp.put("jhzlc", "计划公里");
  168 + temp.put("sjzlc", "行驶里程(包括空放)");
  169 + temp.put("sjfyylc", "空驶里程");
  170 + temp.put("hyl", "耗油量");
  171 + temp.put("jzl", "加注量");
  172 + temp.put("sh", "非营业用油");
  173 +
  174 + resList.add(temp);
  175 + for(int i = 0; i < list.size(); i++){
  176 + temp = list.get(i);
  177 + temp.put("i", i+1);
  178 + if(temp.get("xlName") == null){
  179 + temp.put("xlName", "");
  180 + }
  181 + resList.add(temp);
  182 + }
  183 +
  184 + String date = startDate.replaceAll("-", "");
  185 + if(!startDate.equals(endDate)){
  186 + date = startDate.replaceAll("-", "") + "-" + endDate.replaceAll("-", "");
  187 + }
  188 +
  189 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  190 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  191 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  192 + Map<String,Object> mm = new HashMap<String, Object>();
  193 + ReportUtils ee = new ReportUtils();
  194 +
  195 + try {
  196 + listI.add(resList.iterator());
  197 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  198 + ee.excelReplace(listI, new Object[] { mm }, path+"mould/calcsingledata.xls",
  199 + path+"export/"+date+"-"+lineName+"-路单数据(统计).xls");
  200 + resMap.put("status", ResponseCode.SUCCESS);
  201 + } catch (Exception e) {
  202 + e.printStackTrace();
  203 + resMap.put("status", ResponseCode.ERROR);
  204 + }
  205 + return resMap;
  206 + }
  207 +
  208 +}
... ...
src/main/java/com/bsth/controller/calc/CalcMixController.java 0 → 100644
  1 +package com.bsth.controller.calc;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.web.bind.annotation.RequestMapping;
  8 +import org.springframework.web.bind.annotation.RequestMethod;
  9 +import org.springframework.web.bind.annotation.RequestParam;
  10 +import org.springframework.web.bind.annotation.RestController;
  11 +
  12 +import com.bsth.service.calc.CalcMixService;
  13 +
  14 +@RestController
  15 +@RequestMapping("calc_mix")
  16 +public class CalcMixController {
  17 +
  18 + @Autowired
  19 + CalcMixService service;
  20 +
  21 + @RequestMapping(value="/calcjsyspy")
  22 + public List<Map<String, Object>> calcjsyspy(@RequestParam Map<String, Object> map){
  23 + String line="";
  24 + if(map.get("line")!=null){
  25 + line=map.get("line").toString().trim();
  26 + }
  27 + String startDate="";
  28 + if(map.get("startDate")!=null){
  29 + startDate=map.get("startDate").toString().trim();
  30 + }
  31 + String endDate="";
  32 + if(map.get("endDate")!=null){
  33 + endDate=map.get("endDate").toString().trim();
  34 + }
  35 + String empnames="";
  36 + if(map.get("empnames")!=null){
  37 + empnames=map.get("empnames").toString().trim();
  38 + }
  39 + String cont="";
  40 + if(map.get("cont")!=null){
  41 + cont=map.get("cont").toString().trim();
  42 + }
  43 + String gsdmManth="";
  44 + if(map.get("gsdmManth")!=null){
  45 + gsdmManth=map.get("gsdmManth").toString().trim();
  46 + }
  47 + String fgsdmManth="";
  48 + if(map.get("fgsdmManth")!=null){
  49 + fgsdmManth=map.get("fgsdmManth").toString().trim();
  50 + }
  51 + return service.calcjsyspy(line, startDate, endDate, empnames, cont, gsdmManth, fgsdmManth);
  52 + }
  53 +
  54 + @RequestMapping(value = "/singledatatj", method = RequestMethod.GET)
  55 + public List<Map<String, Object>> singledatatj(@RequestParam Map<String, Object> map) {
  56 + String line="";
  57 + if(map.get("line")!=null){
  58 + line=map.get("line").toString().trim();
  59 + }
  60 + String startDate="";
  61 + if(map.get("startDate")!=null){
  62 + startDate=map.get("startDate").toString().trim();
  63 + }
  64 + String endDate="";
  65 + if(map.get("endDate")!=null){
  66 + endDate=map.get("endDate").toString().trim();
  67 + }
  68 + String tjtype="";
  69 + if(map.get("tjtype")!=null){
  70 + tjtype=map.get("tjtype").toString().trim();
  71 + }
  72 + String cont="";
  73 + if(map.get("cont")!=null){
  74 + cont=map.get("cont").toString().trim();
  75 + }
  76 + String gsdmSing="";
  77 + if(map.get("gsdmSing")!=null){
  78 + gsdmSing=map.get("gsdmSing").toString().trim();
  79 + }
  80 + String fgsdmSing="";
  81 + if(map.get("fgsdmSing")!=null){
  82 + fgsdmSing=map.get("fgsdmSing").toString().trim();
  83 + }
  84 + return service.singledatatj(line, startDate, endDate, tjtype, cont, gsdmSing, fgsdmSing);
  85 + }
  86 +
  87 +}
... ...
src/main/java/com/bsth/controller/report/CalcSheetController.java
... ... @@ -42,4 +42,11 @@ public class CalcSheetController extends BaseController&lt;CalcSheet, Integer&gt;{
42 42 List<Map<String, Object>> list=calcSheetService.calcTurnoutrate(map);
43 43 return list;
44 44 }
  45 +
  46 +
  47 + @RequestMapping(value = "/calcTurnoutrateZgf",method = RequestMethod.GET)
  48 + public List<Map<String, Object>> calcTurnoutrateZgf(@RequestParam Map<String, Object> map){
  49 + List<Map<String, Object>> list=calcSheetService.calcTurnoutrateZgf(map);
  50 + return list;
  51 + }
45 52 }
... ...
src/main/java/com/bsth/data/schedule/thread/CalcOilThread.java
... ... @@ -44,7 +44,7 @@ public class CalcOilThread extends Thread{
44 44 dlbService.obtainDsq();
45 45 logger.info("计算路单里程加注量结束!");
46 46 logger.info("开始计算班次准点率....");
47   - sheetService.saveSheetList("");
  47 + //sheetService.saveSheetList("");
48 48 logger.info("计算班次准点率结束!");
49 49  
50 50 logger.info("开始保存重新统计数据....");
... ...
src/main/java/com/bsth/entity/sheet/CalcSheet.java
... ... @@ -49,6 +49,8 @@ public class CalcSheet {
49 49 private String sjbcs;
50 50 /*临加班次数*/
51 51 private String ljbcs;
  52 + /*计划发车早高峰*/
  53 + private String jhcczgf;
52 54 /*公司名字*/
53 55 @Transient
54 56 private String gsname;
... ... @@ -173,6 +175,12 @@ public class CalcSheet {
173 175 }
174 176  
175 177  
  178 + public String getJhcczgf() {
  179 + return jhcczgf;
  180 + }
  181 + public void setJhcczgf(String jhcczgf) {
  182 + this.jhcczgf = jhcczgf;
  183 + }
176 184 public String getFgsname() {
177 185 return BasicData.businessFgsCodeNameMap.get(this.fgsdm+"_"+this.gsdm);
178 186 }
... ...
src/main/java/com/bsth/repository/calc/CalcWaybillRepository.java
... ... @@ -58,4 +58,15 @@ public interface CalcWaybillRepository extends BaseRepository&lt;CalcWaybill, Integ
58 58 @Query("select DISTINCT s from ScheduleRealInfo s where s.scheduleDateStr=?1")
59 59 List<ScheduleRealInfo> findAllScheduleByDate(String schDate);
60 60  
  61 +
  62 + //按照时间段统计,公司下线路 (驾驶员)
  63 + @Query(value="select DISTINCT c from CalcWaybill c where c.xl like %?1% and c.rqStr between ?2 and ?3 and c.gsdm like %?4% and c.fgsdm like %?5% and CONCAT(jGh,'/',jName) like %?6% order by c.xl")
  64 + List<CalcWaybill> scheduleByJsy(String line,String date,String date2,String gsdm,String fgsdm,String jsy);
  65 + //按照时间段统计,公司下线路 (售票员)
  66 + @Query(value="select DISTINCT c from CalcWaybill c where c.xl like %?1% and c.rqStr between ?2 and ?3 and c.gsdm like %?4% and c.fgsdm like %?5% and CONCAT(sGh,'/',sName) like %?6% order by c.xl")
  67 + List<CalcWaybill> scheduleBySpy(String line,String date,String date2,String gsdm,String fgsdm,String spy);
  68 + //按照时间段统计,公司下线路 (车辆自编号)
  69 + @Query(value="select DISTINCT c from CalcWaybill c where c.xl like %?1% and c.rqStr between ?2 and ?3 and c.gsdm like %?4% and c.fgsdm like %?5% and cl like %?6% order by c.xl")
  70 + List<CalcWaybill> scheduleByZbh(String line,String date,String date2,String gsdm,String fgsdm,String zbh);
  71 +
61 72 }
... ...
src/main/java/com/bsth/repository/oil/DlbRepository.java
1 1 package com.bsth.repository.oil;
2 2  
  3 +import java.util.Date;
3 4 import java.util.List;
4 5  
5 6 import org.springframework.data.jpa.repository.Modifying;
... ... @@ -41,6 +42,14 @@ public interface DlbRepository extends BaseRepository&lt;Dlb, Integer&gt;{
41 42 + " and s.nbbm in ?5 order by nbbm,jcsx")
42 43 List<Dlb> listDlb(String rq, String gsbm,String fgsbm,String xlbm,List<String> listNbbm);
43 44  
  45 + @Query(value="select s from Dlb s "
  46 + + " where s.rq=?1 "
  47 + + " and s.ssgsdm like %?2% "
  48 + + " and s.fgsdm like %?3%"
  49 + + " and s.xlbm like %?4% "
  50 + + " and s.nbbm in ?5 order by nbbm,jcsx")
  51 + List<Dlb> listDlb_s(Date rq, String gsbm,String fgsbm,String xlbm,List<String> listNbbm);
  52 +
44 53  
45 54 /**
46 55 *
... ... @@ -73,6 +82,15 @@ public interface DlbRepository extends BaseRepository&lt;Dlb, Integer&gt;{
73 82 + " and s.nbbm in ?5 ")
74 83 List<Object[]> sumDlb(String rq, String gsbm,String fgsbm,String xlbm,List<String> listNbbm);
75 84  
  85 + @Query(value="select cdl,hd,sh from Dlb s "
  86 + + " where s.rq=?1"
  87 + + " and s.ssgsdm like %?2% "
  88 + + " and s.fgsdm like %?3%"
  89 + + " and s.xlbm like %?4% "
  90 + + " and s.nbbm in ?5 ")
  91 + List<Object[]> sumDlb_s(Date rq, String gsbm,String fgsbm,String xlbm,List<String> listNbbm);
  92 +
  93 +
76 94 @Query(value="select ifnull(cdl,0),ifnull(hd,0),ifnull(sh,0) from bsth_c_dlb "
77 95 + " where rq=?1 "
78 96 + " and ssgsdm like %?2% "
... ...
src/main/java/com/bsth/repository/oil/YlbRepository.java
... ... @@ -133,6 +133,15 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{
133 133 + " and s.nbbm in ?5 ")
134 134 List<Object[]> sumYlb(String rq, String gsbm,String fgsbm,String xlbm,List<String> listNbbm);
135 135  
  136 + @Query(value="select jzl,yh,sh from Ylb s "
  137 + + " where s.rq=?1 "
  138 + + " and s.ssgsdm like %?2% "
  139 + + " and s.fgsdm like %?3%"
  140 + + " and s.xlbm like %?4% "
  141 + + " and s.nbbm in ?5 ")
  142 + List<Object[]> sumYlb_s(Date rq, String gsbm,String fgsbm,String xlbm,List<String> listNbbm);
  143 +
  144 +
136 145 @Query(value="select ifnull(jzl,0),ifnull(yh,0),ifnull(sh,0) from bsth_c_ylb "
137 146 + " where rq=?1 "
138 147 + " and ssgsdm like %?2% "
... ... @@ -151,6 +160,14 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{
151 160 + " and s.nbbm in ?5 order by nbbm,jcsx")
152 161 List<Ylb> listYlb(String rq, String gsbm,String fgsbm,String xlbm,List<String> listNbbm);
153 162  
  163 + @Query(value="select s from Ylb s "
  164 + + " where s.rq=?1 "
  165 + + " and s.ssgsdm =?2 "
  166 + + " and s.fgsdm =?3 "
  167 + + " and s.xlbm like %?4% "
  168 + + " and s.nbbm in ?5 order by nbbm,jcsx")
  169 + List<Ylb> listYlb_s(Date rq, String gsbm,String fgsbm,String xlbm,List<String> listNbbm);
  170 +
154 171  
155 172 @Transactional
156 173 @Modifying
... ...
src/main/java/com/bsth/service/calc/CalcMixService.java 0 → 100644
  1 +package com.bsth.service.calc;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +/**
  7 + * Created by 19/02/28.
  8 + */
  9 +public interface CalcMixService {
  10 +
  11 + List<Map<String, Object>> calcjsyspy(String line, String startDate, String endDate, String cont, String empnames, String gsdmManth, String fgsdmManth);
  12 +
  13 + List<Map<String, Object>> singledatatj(String line, String startDate, String endDate, String tjtype, String cont, String gsdmSing, String fgsdmSing);
  14 +
  15 +}
... ...
src/main/java/com/bsth/service/calc/impl/CalcMixServiceImpl.java 0 → 100644
  1 +package com.bsth.service.calc.impl;
  2 +
  3 +import java.sql.ResultSet;
  4 +import java.sql.SQLException;
  5 +import java.util.ArrayList;
  6 +import java.util.HashMap;
  7 +import java.util.List;
  8 +import java.util.Map;
  9 +
  10 +import com.bsth.data.BasicData;
  11 +import com.bsth.entity.calc.CalcWaybill;
  12 +import com.bsth.entity.mcy_forms.Singledata;
  13 +import com.bsth.repository.calc.CalcWaybillRepository;
  14 +import com.bsth.service.calc.CalcMixService;
  15 +import com.bsth.util.Arith;
  16 +
  17 +import org.slf4j.Logger;
  18 +import org.slf4j.LoggerFactory;
  19 +import org.springframework.beans.factory.annotation.Autowired;
  20 +import org.springframework.jdbc.core.JdbcTemplate;
  21 +import org.springframework.jdbc.core.RowMapper;
  22 +import org.springframework.stereotype.Service;
  23 +
  24 +/**
  25 + * Created by 19/02/28.
  26 + */
  27 +@Service
  28 +public class CalcMixServiceImpl implements CalcMixService {
  29 +
  30 + @Autowired
  31 + private CalcWaybillRepository calcRepository;
  32 +
  33 + @Autowired
  34 + JdbcTemplate jdbcTemplate;
  35 +
  36 +
  37 + Logger logger = LoggerFactory.getLogger(this.getClass());
  38 +
  39 +
  40 + @Override
  41 + public List<Map<String, Object>> calcjsyspy(String line, String date, String date2,
  42 + String empnames, String cont, String gsdm, String fgsdm) {
  43 +
  44 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  45 + List<CalcWaybill> list = null;
  46 +
  47 + int flag = 0;
  48 + if("驾驶员".equals(empnames)){
  49 + flag = 1;
  50 + list = calcRepository.scheduleByJsy(line, date, date2, gsdm, fgsdm, cont);
  51 + } else if("售票员".equals(empnames)){
  52 + flag = 2;
  53 + list = calcRepository.scheduleBySpy(line, date, date2, gsdm, fgsdm, cont);
  54 + } else if("车辆自编号".equals(empnames)){
  55 + flag = 3;
  56 + list = calcRepository.scheduleByZbh(line, date, date2, gsdm, fgsdm, cont);
  57 + }
  58 +
  59 + List<CalcWaybill> calcList = new ArrayList<CalcWaybill>();
  60 + Map<String, CalcWaybill> calcMap = new HashMap<String, CalcWaybill>();
  61 +
  62 + CalcWaybill zjCalc = this.initCalcWaybill();
  63 + zjCalc.setjName("合计");
  64 + for(CalcWaybill c : list){
  65 + String key = "";
  66 + if(flag == 1){
  67 + if(c.getjGh() != null && c.getjName() != null)
  68 + key = c.getjGh() + "/" + c.getjName();
  69 + } else if(flag == 2){
  70 + if(c.getsGh() != null && c.getsName() != null)
  71 + key = c.getsGh() + "/" + c.getsName();
  72 + } else if(flag == 3){
  73 + if(c.getCl() != null)
  74 + key = c.getCl();
  75 + }
  76 +
  77 + if(key.trim().length() == 0 || "/".equals(key))
  78 + continue;
  79 +
  80 + CalcWaybill calc = null;
  81 + if(calcMap.containsKey(key)){
  82 + calc = calcMap.get(key);
  83 + } else {
  84 + calc = this.initCalcWaybill();
  85 + calc.setjName(key);
  86 + calcList.add(calc);
  87 + calcMap.put(key, calc);
  88 + }
  89 +
  90 + this.summation(calc, c);
  91 +
  92 + this.summation(zjCalc, c);
  93 +
  94 + }
  95 + calcList.add(zjCalc);
  96 + calcMap.put("合计", zjCalc);
  97 +
  98 + for(CalcWaybill c : calcList){
  99 + Map<String, Object> m = new HashMap<String, Object>();
  100 + m.put("jName", c.getjName());
  101 + m.put("jhyybc", c.getJhyybc());
  102 + m.put("jhfyybc", c.getJhfyybc());
  103 + m.put("sjyybc", c.getSjyybc());
  104 + m.put("sjfyybc", c.getSjfyybc());
  105 + m.put("lbbc", c.getLbbc());
  106 + m.put("ljbc", c.getLjbc());
  107 + m.put("jhzlc", Arith.add(c.getJhyylc(), c.getJhfyylc()));
  108 + m.put("jhyylc", c.getJhyylc());
  109 + m.put("jhfyylc", c.getJhfyylc());
  110 + m.put("sjzlc", Arith.add(c.getSjyylc(), c.getSjfyylc()));
  111 + m.put("sjyylc", c.getSjyylc());
  112 + m.put("sjfyylc", c.getSjfyylc());
  113 + m.put("lblc", c.getLblc());
  114 + m.put("ljyylc", c.getLjyylc());
  115 + m.put("ljfyylc", c.getLjfyylc());
  116 + resList.add(m);
  117 + }
  118 +
  119 + return resList;
  120 + }
  121 +
  122 + public CalcWaybill initCalcWaybill(){
  123 + CalcWaybill calc = new CalcWaybill();
  124 + calc.setJhyybc(0);
  125 + calc.setJhyylc(0d);
  126 + calc.setJhfyybc(0);
  127 + calc.setJhfyylc(0d);
  128 + calc.setSjyybc(0);
  129 + calc.setSjyylc(0d);
  130 + calc.setSjfyybc(0);
  131 + calc.setSjfyylc(0d);
  132 + calc.setLbbc(0);
  133 + calc.setLblc(0d);
  134 + calc.setLjbc(0);
  135 + calc.setLjyylc(0d);
  136 + calc.setLjfyylc(0d);
  137 + return calc;
  138 + }
  139 +
  140 + public CalcWaybill summation(CalcWaybill c1, CalcWaybill c2){
  141 + c1.setJhyybc(c1.getJhyybc() + c2.getJhyybc());
  142 + c1.setJhyylc(Arith.add(c1.getJhyylc(), c2.getJhyylc()));
  143 + c1.setJhfyybc(c1.getJhfyybc() + c2.getJhfyybc());
  144 + c1.setJhfyylc(Arith.add(c1.getJhfyylc(), c2.getJhfyylc()));
  145 + c1.setSjyybc(c1.getSjyybc() + c2.getSjyybc());
  146 + c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getSjyylc()));
  147 + c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getLjyylc()));
  148 + c1.setSjfyybc(c1.getSjfyybc() + c2.getSjfyybc());
  149 + c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getSjfyylc()));
  150 + c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getLjfyylc()));
  151 + c1.setLbbc(c1.getLbbc() + c2.getLbbc());
  152 + c1.setLblc(Arith.add(c1.getLblc(), c2.getLblc()));
  153 + c1.setLjbc(c1.getLjbc() + c2.getLjbc());
  154 + c1.setLjyylc(Arith.add(c1.getLjyylc(), c2.getLjyylc()));
  155 + c1.setLjfyylc(Arith.add(c1.getLjfyylc(), c2.getLjfyylc()));
  156 + return c1;
  157 + }
  158 +
  159 + @Override
  160 + public List<Map<String, Object>> singledatatj(String line,
  161 + String date, String date2,
  162 + String tjtype, String cont,
  163 + String gsdm, String fgsdm) {
  164 +
  165 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  166 + List<CalcWaybill> list = null;
  167 +
  168 + int flag = 0;
  169 + if("驾驶员".equals(tjtype)){
  170 + flag = 1;
  171 + list = calcRepository.scheduleByJsy(line, date, date2, gsdm, fgsdm, cont);
  172 + } else if("售票员".equals(tjtype)){
  173 + flag = 2;
  174 + list = calcRepository.scheduleBySpy(line, date, date2, gsdm, fgsdm, cont);
  175 + } else if("车辆自编号".equals(tjtype)){
  176 + flag = 3;
  177 + list = calcRepository.scheduleByZbh(line, date, date2, gsdm, fgsdm, cont);
  178 + }
  179 +
  180 + List<CalcWaybill> calcList = new ArrayList<CalcWaybill>();
  181 + Map<String, CalcWaybill> calcMap = new HashMap<String, CalcWaybill>();
  182 +
  183 + CalcWaybill zjCalc = this.initCalcWaybill();
  184 + zjCalc.setjName("合计");
  185 + for(CalcWaybill c : list){
  186 + String key = "";
  187 + if(flag == 1){
  188 + if(c.getjGh() != null && c.getjName() != null)
  189 + key += c.getjGh() + "/" + c.getjName();
  190 + } else if(flag == 2){
  191 + if(c.getsGh() != null && c.getsName() != null)
  192 + key += c.getsGh() + "/" + c.getsName();
  193 + } else if(flag == 3){
  194 + if(c.getCl() != null)
  195 + key += c.getCl();
  196 + }
  197 +
  198 + if(key.trim().length() == 0 || "/".equals(key))
  199 + continue;
  200 +
  201 + String jName = key;
  202 + key = c.getXl() + "/" + key;
  203 +
  204 + CalcWaybill calc = null;
  205 + if(calcMap.containsKey(key)){
  206 + calc = calcMap.get(key);
  207 + } else {
  208 + calc = this.initCalcWaybill();
  209 + calc.setXlName(c.getXlName());
  210 + calc.setXl(c.getXl());
  211 + calc.setjName(jName);
  212 + calcList.add(calc);
  213 + calcMap.put(key, calc);
  214 + }
  215 +
  216 + this.summation(calc, c);
  217 +
  218 + this.summation(zjCalc, c);
  219 +
  220 + }
  221 + calcList.add(zjCalc);
  222 + calcMap.put("合计", zjCalc);
  223 +
  224 + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
  225 + for(CalcWaybill c : calcList){
  226 + Map<String, Object> m = new HashMap<String, Object>();
  227 + m.put("gS", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  228 + m.put("xl", c.getXl());
  229 + m.put("xlName", c.getXlName());
  230 + m.put("jName", c.getjName());
  231 + m.put("jhyybc", c.getJhyybc());
  232 + m.put("jhfyybc", c.getJhfyybc());
  233 + m.put("sjyybc", c.getSjyybc());
  234 + m.put("sjfyybc", c.getSjfyybc());
  235 + m.put("lbbc", c.getLbbc());
  236 + m.put("ljbc", c.getLjbc());
  237 + m.put("jhzlc", Arith.add(c.getJhyylc(), c.getJhfyylc()));
  238 + m.put("jhyylc", c.getJhyylc());
  239 + m.put("jhfyylc", c.getJhfyylc());
  240 + m.put("sjzlc", Arith.add(c.getSjyylc(), c.getSjfyylc()));
  241 + m.put("sjyylc", c.getSjyylc());
  242 + m.put("sjfyylc", c.getSjfyylc());
  243 + m.put("lblc", c.getLblc());
  244 + m.put("ljyylc", c.getLjyylc());
  245 + m.put("ljfyylc", c.getLjfyylc());
  246 + if(flag != 2){
  247 + m.put("hyl", 0);
  248 + m.put("jzl", 0);
  249 + m.put("sh", 0);
  250 + }
  251 + resList.add(m);
  252 + keyMap.put(c.getXl() + "/" + c.getjName(), m);
  253 + }
  254 +
  255 + String linesql="";
  256 + if(!line.equals("")){
  257 + linesql +=" and xlbm ='"+line+"' ";
  258 + }
  259 + if(!gsdm.equals("")){
  260 + linesql +=" and ssgsdm ='"+gsdm+"' ";
  261 + }
  262 + if(!fgsdm.equals("")){
  263 + linesql +=" and fgsdm ='"+fgsdm+"' ";
  264 + }
  265 + String nysql="SELECT id,xlbm,nbbm,jsy,jzl as jzl,yh as yh,sh as sh,fgsdm FROM bsth_c_ylb"
  266 + + " WHERE rq >= '"+date+"' and rq <= '"+date2+"'"
  267 + + linesql
  268 + + " union"
  269 + + " SELECT id,xlbm,nbbm,jsy,cdl as jzl,hd as yh,sh as sh,fgsdm FROM bsth_c_dlb"
  270 + + " WHERE rq >= '"+date2+"' and rq <= '"+date2+"'"
  271 + + linesql;
  272 + List<Singledata> listNy = jdbcTemplate.query(nysql, new RowMapper<Singledata>() {
  273 + @Override
  274 + public Singledata mapRow(ResultSet arg0, int arg1) throws SQLException {
  275 + Singledata sin = new Singledata();
  276 + sin.setxL(arg0.getString("xlbm"));
  277 + sin.setJsy(arg0.getString("jsy"));
  278 + sin.setClzbh(arg0.getString("nbbm"));
  279 + sin.setJzl(arg0.getString("jzl"));
  280 + sin.setHyl(arg0.getString("yh"));
  281 + sin.setUnyyyl(arg0.getString("sh"));
  282 + sin.setgS(arg0.getString("fgsdm"));
  283 + return sin;
  284 + }
  285 + });
  286 +
  287 + if(flag != 2){
  288 + Map<String, Object> last = resList.get(resList.size()-1);
  289 + last.put("hyl", 0);
  290 + last.put("jzl", 0);
  291 + last.put("sh", 0);
  292 +
  293 + //统计油,电表中手动添加的或者有加注没里程的数据
  294 + for (int i = 0; i < listNy.size(); i++) {
  295 + Singledata sin_=listNy.get(i);
  296 + String xl=sin_.getxL();
  297 + String str = "";
  298 + if(flag == 1){
  299 + str = sin_.getJsy() + "/" + BasicData.allPerson.get(gsdm+"-"+sin_.getJsy());
  300 + } else {
  301 + str = sin_.getClzbh();
  302 + }
  303 +// boolean fages=true;
  304 + if(keyMap.containsKey(xl + "/" + str)){
  305 + Map<String, Object> m = keyMap.get(xl + "/" + str);
  306 + m.put("hyl", Arith.add(m.get("hyl"), sin_.getHyl()!=null?sin_.getHyl():0));
  307 + m.put("jzl", Arith.add(m.get("jzl"), sin_.getJzl()!=null?sin_.getJzl():0));
  308 + m.put("sh", Arith.add(m.get("sh"), sin_.getUnyyyl()!=null?sin_.getUnyyyl():0));
  309 + last.put("hyl", Arith.add(last.get("hyl"), m.get("hyl")));
  310 + last.put("jzl", Arith.add(last.get("jzl"), m.get("jzl")));
  311 + last.put("sh", Arith.add(last.get("sh"), m.get("sh")));
  312 + } else {
  313 + Map<String, Object> m = new HashMap<String, Object>();
  314 + m.put("gS", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  315 + m.put("xl", xl);
  316 + m.put("xlName", BasicData.lineCodeAllNameMap.get(xl));
  317 + m.put("jName", str);
  318 + m.put("jhzlc", 0);
  319 + m.put("sjzlc", 0);
  320 + m.put("sjfyylc", 0);
  321 + m.put("hyl", sin_.getHyl()!=null?sin_.getHyl():0);
  322 + m.put("jzl", sin_.getJzl()!=null?sin_.getJzl():0);
  323 + m.put("sh", sin_.getUnyyyl()!=null?sin_.getUnyyyl():0);
  324 + last.put("hyl", Arith.add(last.get("hyl"), m.get("hyl")));
  325 + last.put("jzl", Arith.add(last.get("jzl"), m.get("jzl")));
  326 + last.put("sh", Arith.add(last.get("sh"), m.get("sh")));
  327 +
  328 + keyMap.put(xl + "/" + str, m);
  329 + }
  330 + }
  331 + resList.remove(last);
  332 + resList.add(last);
  333 + }
  334 +
  335 + return resList;
  336 + }
  337 +
  338 +}
... ...
src/main/java/com/bsth/service/geo_data/impl/GeoDataServiceImpl.java
... ... @@ -376,7 +376,7 @@ public class GeoDataServiceImpl implements GeoDataService {
376 376 lVersion.setLineCode(lineCode);
377 377  
378 378 //如果有待启用的版本,设置为历史版本
379   - jdbcTemplate.update("update bsth_c_line_versions set `status`=0, start_date=null,end_date=null where line_code='"+lineCode+"' and `status`=2");
  379 + jdbcTemplate.update("update bsth_c_line_versions set `status`=2, start_date=null,end_date=null where line_code='"+lineCode+"' and `status`=0");
380 380  
381 381 //入库线路版本
382 382 jdbcTemplate.update("insert into bsth_c_line_versions(name, line, line_code, versions, start_date, create_date, update_date, remark,status, isupdate) " +
... ...
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
... ... @@ -505,7 +505,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
505 505 }
506 506  
507 507 String key = schedule.getXlBm() + "/" + schedule.getXlName() + "/" + schedule.getQdzName()
508   - + "/" + schedule.getFgsName() + "/" + schedule.getFgsBm();
  508 + + "/" + schedule.getFgsBm();
509 509 if(!keyMap.containsKey(key))
510 510 keyMap.put(key, new ArrayList<ScheduleRealInfo>());
511 511 keyMap.get(key).add(schedule);
... ... @@ -618,8 +618,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
618 618 tempMap.put("line", split[1]);
619 619 tempMap.put("qdz", split[2]);
620 620 tempMap.put("company", companyName);
621   - tempMap.put("subCompany", split[3]);
622   - tempMap.put("fgsbm", split[4]);
  621 + tempMap.put("subCompany", subCompanyName);
  622 + tempMap.put("fgsbm", split[3]);
623 623 long jhInterval = 0l;
624 624 long sjInterval = 0l;
625 625 for(Long i : fcsjs)
... ... @@ -677,7 +677,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
677 677 }else if(statu.equals("0")){
678 678 List<Long> longList = new ArrayList<Long>();
679 679 for(String key : keyList){
680   - long xlBm = Long.valueOf(key.split("/")[4]) * 1000000l + Long.valueOf(key.split("/")[0]);
  680 + long xlBm = Long.valueOf(key.split("/")[3]) * 1000000l + Long.valueOf(key.split("/")[0]);
681 681 if(!longList.contains(xlBm))
682 682 longList.add(xlBm);
683 683 Collections.sort(longList);
... ... @@ -685,7 +685,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
685 685 for(long xlBm : longList){
686 686 for(String key : keyList){
687 687 String[] split = key.split("/");
688   - long kl = Long.valueOf(split[4]) * 1000000l + Long.valueOf(split[0]);
  688 + long kl = Long.valueOf(split[3]) * 1000000l + Long.valueOf(split[0]);
689 689 if(kl == xlBm){
690 690 Map<String, Object> tempMap = new HashMap<String, Object>();
691 691 List<Long> fcsjs = new ArrayList<Long>();
... ... @@ -712,8 +712,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
712 712 tempMap.put("line", split[1]);
713 713 tempMap.put("qdz", split[2]);
714 714 tempMap.put("company", companyName);
715   - tempMap.put("subCompany", split[3]);
716   - tempMap.put("fgsbm", split[4]);
  715 + tempMap.put("subCompany", subCompanyName);
  716 + tempMap.put("fgsbm", split[3]);
717 717 tempMap.put("jhInterval", fcsjs.size()>0?df.format((double)fcsj/fcsjs.size()):"/");
718 718 tempMap.put("sjInterval", fcsjAs.size()>0?df.format((double)fcsjA/fcsjAs.size()):"/");
719 719 tempMap.put("MaxInterval", fcsjAs.size()>0?fcsjAs.get(fcsjAs.size() - 1):"/");
... ...
src/main/java/com/bsth/service/impl/LineVersionsServiceImpl.java
1 1 package com.bsth.service.impl;
2 2  
3   -import java.sql.PreparedStatement;
4   -import java.sql.SQLException;
5   -import java.text.ParseException;
6   -import java.text.SimpleDateFormat;
7   -import java.util.Date;
8   -import java.util.HashMap;
9   -import java.util.List;
10   -import java.util.Map;
11   -
12   -import org.springframework.beans.factory.annotation.Autowired;
13   -import org.springframework.jdbc.core.BatchPreparedStatementSetter;
14   -import org.springframework.jdbc.core.JdbcTemplate;
15   -import org.springframework.stereotype.Service;
16   -import org.springframework.transaction.annotation.Transactional;
17   -
18 3 import com.alibaba.fastjson.JSON;
19 4 import com.alibaba.fastjson.JSONArray;
20 5 import com.bsth.common.ResponseCode;
... ... @@ -31,6 +16,20 @@ import com.bsth.repository.LsStationRouteRepository;
31 16 import com.bsth.service.LineVersionsService;
32 17 import com.bsth.service.SectionRouteService;
33 18 import com.bsth.service.StationRouteService;
  19 +import org.springframework.beans.factory.annotation.Autowired;
  20 +import org.springframework.jdbc.core.BatchPreparedStatementSetter;
  21 +import org.springframework.jdbc.core.JdbcTemplate;
  22 +import org.springframework.stereotype.Service;
  23 +import org.springframework.transaction.annotation.Transactional;
  24 +
  25 +import java.sql.PreparedStatement;
  26 +import java.sql.SQLException;
  27 +import java.text.ParseException;
  28 +import java.text.SimpleDateFormat;
  29 +import java.util.Date;
  30 +import java.util.HashMap;
  31 +import java.util.List;
  32 +import java.util.Map;
34 33  
35 34 /**
36 35 *
... ... @@ -97,8 +96,10 @@ public class LineVersionsServiceImpl extends BaseServiceImpl&lt;LineVersions, Integ
97 96 int statu = repository.update(id,line,lineCode,new java.sql.Date(startDate.getTime()),
98 97 new java.sql.Date(endDate.getTime()),versions,status,remark);
99 98 LineVersions upLineVersions = repository.findBylineIdAndVersions(line.getId(),versions);
100   - upLineVersions.setEndDate(new java.sql.Date(startDate.getTime()));
101   - repository.save(upLineVersions);
  99 + if(upLineVersions != null){
  100 + upLineVersions.setEndDate(new java.sql.Date(startDate.getTime()));
  101 + repository.save(upLineVersions);
  102 + }
102 103 if (statu==1) {
103 104 resultMap.put("status", ResponseCode.SUCCESS);
104 105 } else {
... ...
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
1 1 package com.bsth.service.impl;
2 2  
3 3 import com.bsth.common.ResponseCode;
4   -import com.bsth.entity.*;
  4 +import com.bsth.entity.Line;
  5 +import com.bsth.entity.LsStationRoute;
  6 +import com.bsth.entity.Station;
  7 +import com.bsth.entity.StationRoute;
  8 +import com.bsth.entity.StationRouteCache;
5 9 import com.bsth.entity.search.CustomerSpecs;
6   -import com.bsth.repository.*;
  10 +import com.bsth.repository.LineRepository;
  11 +import com.bsth.repository.LsStationRouteRepository;
  12 +import com.bsth.repository.SectionRouteRepository;
  13 +import com.bsth.repository.StationRepository;
  14 +import com.bsth.repository.StationRouteCacheRepository;
  15 +import com.bsth.repository.StationRouteRepository;
7 16 import com.bsth.service.StationRouteService;
8 17 import com.bsth.util.ExcelUtil;
9 18 import com.bsth.util.FTPClientUtils;
10   -import com.bsth.util.PackTarGZUtils;
11 19 import com.bsth.util.Geo.GeoUtils;
12 20 import com.bsth.util.Geo.Point;
  21 +import com.bsth.util.PackTarGZUtils;
13 22 import com.bsth.util.db.DBUtils_MS;
14 23 import com.google.common.base.Splitter;
15 24 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -18,13 +27,17 @@ import org.springframework.data.domain.Sort.Direction;
18 27 import org.springframework.stereotype.Service;
19 28 import org.springframework.transaction.annotation.Transactional;
20 29  
  30 +import javax.servlet.http.HttpServletResponse;
21 31 import java.io.ByteArrayInputStream;
22 32 import java.io.File;
23 33 import java.io.InputStream;
24 34 import java.text.DecimalFormat;
25   -import java.util.*;
26   -
27   -import javax.servlet.http.HttpServletResponse;
  35 +import java.util.ArrayList;
  36 +import java.util.HashMap;
  37 +import java.util.Iterator;
  38 +import java.util.List;
  39 +import java.util.Map;
  40 +import java.util.Properties;
28 41  
29 42 /**
30 43 *
... ... @@ -93,7 +106,7 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
93 106 public Map<String, Object> getSectionRouteExport(Integer id, HttpServletResponse resp) {
94 107 Map<String, Object> resultMap = new HashMap<String, Object>();
95 108 try {
96   - // List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
  109 + // List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
97 110 Map<String,Object> resultExcel = new HashMap<String,Object>();//导出参数的对象
98 111 /* 添加表头*/
99 112 List<String> title = new ArrayList<String>();
... ... @@ -113,10 +126,10 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
113 126 if(strtionList == null){
114 127 logger.info("没有数据导,出用户信息失败!");
115 128 } else {
116   -
  129 +
117 130 for (int i = 0; i < strtionList.size(); i++) {
118 131 StationRoute station = strtionList.get(i);
119   -
  132 +
120 133 List<String> varList = new ArrayList<String>();
121 134 varList.add(station.getLine().getId().toString());
122 135 varList.add(station.getDirections().toString());
... ...
src/main/java/com/bsth/service/impl/StationServiceImpl.java
... ... @@ -1372,8 +1372,11 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1372 1372 // 匹配到了用数据库中的点替换
1373 1373 if (GeoUtils.isPointInCircle(point, circle)) {
1374 1374 map.put("name", s.getStationName().toString());
1375   - map.put("potion_lng", points[0]);
1376   - map.put("potion_lat", points[1]);
  1375 + // 匹配到站点后用这个站点的名字,但是使用gps点作为中心点
  1376 +// map.put("potion_lng", points[0]);
  1377 +// map.put("potion_lat", points[1]);
  1378 + map.put("potion_lng", lon);
  1379 + map.put("potion_lat", lat);
1377 1380 map.put("isHave", "true");
1378 1381 map.put("id", s.getId());
1379 1382 isMatch = true;
... ...
src/main/java/com/bsth/service/oil/impl/DlbServiceImpl.java
... ... @@ -662,82 +662,97 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
662 662 @Override
663 663 public List<Dlb> listDlb(Map<String, Object> map) {
664 664 // TODO Auto-generated method stub
665   - List<Dlb> listDlb=new ArrayList<Dlb>();
666   - List<String> stringList=new ArrayList<String>();
667   - String rq=map.get("rq").toString();
668   - String gsbm=map.get("ssgsdm_like").toString();
669   - String fgsbm=map.get("fgsdm_like").toString();
670   - String xlbm=map.get("xlbm_like").toString().trim();
671   - String nbbm=map.get("nbbm_eq").toString();
672   - String sxtj=map.get("sxtj").toString();
673   -
674   - if(nbbm.trim()!=""){
675   - stringList.add(nbbm);
676   - listDlb=repository.listDlb(rq, gsbm, fgsbm, xlbm, stringList);
677   - }else{
678   - //全部
679   - if(sxtj.equals("0")){
680   - List<Object[]> objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm);
681   - for (int i = 0; i < objectLists.size(); i++) {
682   - String clbm=objectLists.get(i)[0].toString();
683   - stringList.add(clbm);
684   - }
685   - if(stringList.size()>0){
686   - listDlb=repository.listDlb(rq, gsbm, fgsbm, xlbm, stringList);
687   - }
688   - }else{
689   - List<Object[]> objectLists;
690   - if(sxtj.equals("3")){
691   - //有加油没里程
692   - objectLists=repository.checkNbmmDl(rq, gsbm, fgsbm, xlbm, nbbm);
  665 + List<Dlb> listDlb = new ArrayList<Dlb>();
  666 + List<String> stringList = new ArrayList<String>();
  667 + String rq = map.get("rq").toString();
  668 + String gsbm = map.get("ssgsdm_like").toString();
  669 + String fgsbm = map.get("fgsdm_like").toString();
  670 + String xlbm = map.get("xlbm_like").toString().trim();
  671 + String nbbm = map.get("nbbm_eq").toString();
  672 + String sxtj = map.get("sxtj").toString();
  673 + String type = map.get("type").toString();
  674 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  675 + try {
  676 + if (nbbm.trim() != "") {
  677 + stringList.add(nbbm);
  678 + if (type.equals("1"))
  679 + listDlb = repository.listDlb(rq, gsbm, fgsbm, xlbm, stringList);
  680 + else
  681 + listDlb = repository.listDlb_s(sdf.parse(rq + " 00:00:00"), gsbm, fgsbm, xlbm, stringList);
  682 +
  683 + } else {
  684 + // 全部
  685 + if (sxtj.equals("0")) {
  686 + List<Object[]> objectLists = repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm, nbbm);
693 687 for (int i = 0; i < objectLists.size(); i++) {
694   - String clbm=objectLists.get(i)[0].toString();
695   - double jzl=Double.parseDouble(objectLists.get(i)[1].toString());
696   - double zlc=Double.parseDouble(objectLists.get(i)[2].toString());
697   - if(jzl>0 && zlc<=0){
698   - stringList.add(clbm);
699   - }
700   -
  688 + String clbm = objectLists.get(i)[0].toString();
  689 + stringList.add(clbm);
701 690 }
702   -
703   - }else if(sxtj.equals("4")){
704   - //有里程没加油
705   - objectLists=repository.checkNbmmDl(rq, gsbm, fgsbm, xlbm, nbbm);
706   - for (int i = 0; i < objectLists.size(); i++) {
707   - String clbm=objectLists.get(i)[0].toString();
708   - double jzl=Double.parseDouble(objectLists.get(i)[1].toString());
709   - double zlc=Double.parseDouble(objectLists.get(i)[2].toString());
710   - if(zlc>0 && jzl<=0){
711   - stringList.add(clbm);
712   - }
713   -
  691 + if (stringList.size() > 0) {
  692 + if (type.equals("1"))
  693 + listDlb = repository.listDlb(rq, gsbm, fgsbm, xlbm, stringList);
  694 + else
  695 + listDlb = repository.listDlb_s(sdf.parse(rq + " 00:00:00"), gsbm, fgsbm, xlbm, stringList);
714 696 }
715   - }else{
716   - objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm);
717   - for (int i = 0; i < objectLists.size(); i++) {
718   - String clbm=objectLists.get(i)[0].toString();
719   - int cs=Integer.parseInt(objectLists.get(i)[1].toString());
720   - //一车一单
721   - if(sxtj.equals("1")){
722   - if(cs==1){
  697 + } else {
  698 + List<Object[]> objectLists;
  699 + if (sxtj.equals("3")) {
  700 + // 有加油没里程
  701 + objectLists = repository.checkNbmmDl(rq, gsbm, fgsbm, xlbm, nbbm);
  702 + for (int i = 0; i < objectLists.size(); i++) {
  703 + String clbm = objectLists.get(i)[0].toString();
  704 + double jzl = Double.parseDouble(objectLists.get(i)[1].toString());
  705 + double zlc = Double.parseDouble(objectLists.get(i)[2].toString());
  706 + if (jzl > 0 && zlc <= 0) {
723 707 stringList.add(clbm);
724 708 }
725   - }
726   - //一车多单
727   - if(sxtj.equals("2")){
728   - if(cs>1){
  709 +
  710 + }
  711 +
  712 + } else if (sxtj.equals("4")) {
  713 + // 有里程没加油
  714 + objectLists = repository.checkNbmmDl(rq, gsbm, fgsbm, xlbm, nbbm);
  715 + for (int i = 0; i < objectLists.size(); i++) {
  716 + String clbm = objectLists.get(i)[0].toString();
  717 + double jzl = Double.parseDouble(objectLists.get(i)[1].toString());
  718 + double zlc = Double.parseDouble(objectLists.get(i)[2].toString());
  719 + if (zlc > 0 && jzl <= 0) {
729 720 stringList.add(clbm);
730 721 }
  722 +
  723 + }
  724 + } else {
  725 + objectLists = repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm, nbbm);
  726 + for (int i = 0; i < objectLists.size(); i++) {
  727 + String clbm = objectLists.get(i)[0].toString();
  728 + int cs = Integer.parseInt(objectLists.get(i)[1].toString());
  729 + // 一车一单
  730 + if (sxtj.equals("1")) {
  731 + if (cs == 1) {
  732 + stringList.add(clbm);
  733 + }
  734 + }
  735 + // 一车多单
  736 + if (sxtj.equals("2")) {
  737 + if (cs > 1) {
  738 + stringList.add(clbm);
  739 + }
  740 + }
731 741 }
732 742 }
733   - }
734   -
735   - if(stringList.size()>0){
736   - listDlb=repository.listDlb(rq, gsbm, fgsbm, xlbm, stringList);
  743 +
  744 + if (stringList.size() > 0) {
  745 + if (type.equals("1"))
  746 + listDlb = repository.listDlb(rq, gsbm, fgsbm, xlbm, stringList);
  747 + else
  748 + listDlb = repository.listDlb_s(sdf.parse(rq + " 00:00:00"), gsbm, fgsbm, xlbm, stringList);
  749 + }
737 750 }
738 751 }
  752 + } catch (ParseException e) {
  753 + // TODO Auto-generated catch block
  754 + e.printStackTrace();
739 755 }
740   -
741 756 return listDlb;
742 757 }
743 758  
... ... @@ -751,86 +766,97 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
751 766 String xlbm = map.get("xlbm_like").toString().trim();
752 767 String nbbm = map.get("nbbm_eq").toString();
753 768 String sxtj = map.get("sxtj").toString();
754   - if (nbbm.trim() != "") {
755   - stringList.add(nbbm);
756   - } else {
757   - if (!sxtj.equals("0")) {
758   - List<Object[]> objectLists;
759   - if (sxtj.equals("3")) {
760   - // 有加油没里程
761   - objectLists = repository.checkNbmmDl(rq, gsbm, fgsbm, xlbm, nbbm);
762   - for (int i = 0; i < objectLists.size(); i++) {
763   - String clbm = objectLists.get(i)[0].toString();
764   - double jzl = Double.parseDouble(objectLists.get(i)[1].toString());
765   - double zlc = Double.parseDouble(objectLists.get(i)[2].toString());
766   - if (jzl > 0 && zlc <= 0) {
767   - stringList.add(clbm);
768   - }
769   -
770   - }
  769 + String type = map.get("type").toString();
  770 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  771 + List<Object[]> sumYlbList = new ArrayList<Object[]>();
  772 + try {
  773 + if (nbbm.trim() != "") {
  774 + stringList.add(nbbm);
  775 + } else {
  776 + if (!sxtj.equals("0")) {
  777 + List<Object[]> objectLists;
  778 + if (sxtj.equals("3")) {
  779 + // 有加油没里程
  780 + objectLists = repository.checkNbmmDl(rq, gsbm, fgsbm, xlbm, nbbm);
  781 + for (int i = 0; i < objectLists.size(); i++) {
  782 + String clbm = objectLists.get(i)[0].toString();
  783 + double jzl = Double.parseDouble(objectLists.get(i)[1].toString());
  784 + double zlc = Double.parseDouble(objectLists.get(i)[2].toString());
  785 + if (jzl > 0 && zlc <= 0) {
  786 + stringList.add(clbm);
  787 + }
771 788  
772   - } else if (sxtj.equals("4")) {
773   - // 有里程没加油
774   - objectLists = repository.checkNbmmDl(rq, gsbm, fgsbm, xlbm, nbbm);
775   - for (int i = 0; i < objectLists.size(); i++) {
776   - String clbm = objectLists.get(i)[0].toString();
777   - double jzl = Double.parseDouble(objectLists.get(i)[1].toString());
778   - double zlc = Double.parseDouble(objectLists.get(i)[2].toString());
779   - if (zlc > 0 && jzl <= 0) {
780   - stringList.add(clbm);
781 789 }
782 790  
783   - }
784   - } else {
785   - objectLists = repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm, nbbm);
786   - for (int i = 0; i < objectLists.size(); i++) {
787   - String clbm = objectLists.get(i)[0].toString();
788   - int cs = Integer.parseInt(objectLists.get(i)[1].toString());
789   - // 一车一单
790   -
791   - if (sxtj.equals("1")) {
792   - if (cs == 1) {
  791 + } else if (sxtj.equals("4")) {
  792 + // 有里程没加油
  793 + objectLists = repository.checkNbmmDl(rq, gsbm, fgsbm, xlbm, nbbm);
  794 + for (int i = 0; i < objectLists.size(); i++) {
  795 + String clbm = objectLists.get(i)[0].toString();
  796 + double jzl = Double.parseDouble(objectLists.get(i)[1].toString());
  797 + double zlc = Double.parseDouble(objectLists.get(i)[2].toString());
  798 + if (zlc > 0 && jzl <= 0) {
793 799 stringList.add(clbm);
794 800 }
  801 +
795 802 }
796   - // 一车多单
797   - if (sxtj.equals("2")) {
798   - if (cs > 1) {
799   - stringList.add(clbm);
  803 + } else {
  804 + objectLists = repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm, nbbm);
  805 + for (int i = 0; i < objectLists.size(); i++) {
  806 + String clbm = objectLists.get(i)[0].toString();
  807 + int cs = Integer.parseInt(objectLists.get(i)[1].toString());
  808 + // 一车一单
  809 +
  810 + if (sxtj.equals("1")) {
  811 + if (cs == 1) {
  812 + stringList.add(clbm);
  813 + }
  814 + }
  815 + // 一车多单
  816 + if (sxtj.equals("2")) {
  817 + if (cs > 1) {
  818 + stringList.add(clbm);
  819 + }
800 820 }
801 821 }
802 822 }
803 823 }
804 824 }
805   - }
806   - List<Object[]> sumYlbList = new ArrayList<Object[]>();
807 825 if (sxtj.equals("0")) {
808 826 sumYlbList = repository.sumDlb2(rq, gsbm, fgsbm, xlbm, nbbm);
809 827 } else {
810 828 if (stringList.size() > 0) {
811   -
  829 +
812 830 // String strings[]=new String[stringList.size()];
813 831 // for(int i=0;i<stringList.size();i++){
814 832 // strings[i]=stringList.get(i);
815 833 // }
816   - sumYlbList = repository.sumDlb(rq, gsbm, fgsbm, xlbm, stringList);
817   - }
818   -// else {
819   -// sumYlbList = repository.sumDlb2(rq, gsbm, fgsbm, xlbm, nbbm);
820   -// }
821   - }
822   - Double jzl = 0.0, yh = 0.0, sh = 0.0;
823   - for (int i = 0; i < sumYlbList.size(); i++) {
824   - jzl = Arith.add(jzl, Double.valueOf(sumYlbList.get(i)[0].toString()));
825   - yh = Arith.add(yh, Double.valueOf(sumYlbList.get(i)[1].toString()));
826   - sh = Arith.add(sh, Double.valueOf(sumYlbList.get(i)[2].toString()));
  834 + if (type.equals("1"))
  835 + sumYlbList = repository.sumDlb(rq, gsbm, fgsbm, xlbm, stringList);
  836 + else
  837 + sumYlbList = repository.sumDlb_s(sdf.parse(rq + " 00:00:00"), gsbm, fgsbm, xlbm, stringList);
  838 +
  839 + }
  840 + // else {
  841 + // sumYlbList = repository.sumDlb2(rq, gsbm, fgsbm, xlbm, nbbm);
  842 + // }
827 843 }
828   -
829   - Map<String, Object> sumMap = new HashMap<String, Object>();
830   - sumMap.put("jzl", jzl);
831   - sumMap.put("yh", yh);
832   - sumMap.put("sh", sh);
833   - return sumMap;
  844 + } catch (ParseException e) {
  845 + // TODO Auto-generated catch block
  846 + e.printStackTrace();
  847 + }
  848 + Double jzl = 0.0, yh = 0.0, sh = 0.0;
  849 + for (int i = 0; i < sumYlbList.size(); i++) {
  850 + jzl = Arith.add(jzl, Double.valueOf(sumYlbList.get(i)[0].toString()));
  851 + yh = Arith.add(yh, Double.valueOf(sumYlbList.get(i)[1].toString()));
  852 + sh = Arith.add(sh, Double.valueOf(sumYlbList.get(i)[2].toString()));
  853 + }
  854 +
  855 + Map<String, Object> sumMap = new HashMap<String, Object>();
  856 + sumMap.put("jzl", jzl);
  857 + sumMap.put("yh", yh);
  858 + sumMap.put("sh", sh);
  859 + return sumMap;
834 860 }
835 861  
836 862  
... ...
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
... ... @@ -1108,6 +1108,10 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1108 1108 String xlbm=map.get("xlbm_like").toString().trim();
1109 1109 String nbbm=map.get("nbbm_eq").toString();
1110 1110 String sxtj=map.get("sxtj").toString();
  1111 + String type=map.get("type").toString();
  1112 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1113 + List<Object[]> sumYlbList=new ArrayList<Object[]>();
  1114 + try {
1111 1115 if(nbbm.trim()!=""){
1112 1116 stringList.add(nbbm);
1113 1117 }else{
... ... @@ -1160,7 +1164,6 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1160 1164 }
1161 1165 }
1162 1166 }
1163   - List<Object[]> sumYlbList=new ArrayList<Object[]>();
1164 1167 if(sxtj.equals("0")){
1165 1168 sumYlbList=repository.sumYlb2(rq, gsbm, fgsbm, xlbm,nbbm);
1166 1169 }else{
... ... @@ -1170,14 +1173,20 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1170 1173 // for(int i=0;i<stringList.size();i++){
1171 1174 // strings[i]=stringList.get(i);
1172 1175 // }
1173   - sumYlbList=repository.sumYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1176 + if (type.equals("1"))
  1177 + sumYlbList=repository.sumYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1178 + else
  1179 + sumYlbList=repository.sumYlb_s(sdf.parse(rq+" 00:00:00"), gsbm, fgsbm, xlbm, stringList);
1174 1180 }
1175 1181 // else{
1176 1182 // sumYlbList=repository.sumYlb2(rq, gsbm, fgsbm, xlbm, nbbm);
1177 1183 // }
1178 1184  
1179 1185 }
1180   -
  1186 + } catch (ParseException e) {
  1187 + // TODO Auto-generated catch block
  1188 + e.printStackTrace();
  1189 + }
1181 1190 Double jzl=0.0,yh=0.0,sh=0.0;
1182 1191 for (int i = 0; i < sumYlbList.size(); i++) {
1183 1192 jzl = Arith.add(jzl, Double.valueOf(sumYlbList.get(i)[0].toString()));
... ... @@ -1189,6 +1198,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1189 1198 sumMap.put("jzl", jzl);
1190 1199 sumMap.put("yh", yh);
1191 1200 sumMap.put("sh", sh);
  1201 +
1192 1202 // String sql="select sum(jzl),sum(yh),sum(sh) from bsth_c_ylb "
1193 1203 // + " where to_days('"+map.get("rq").toString()+"')=to_days(rq) "
1194 1204 // + " and ssgsdm like '%"+map.get("ssgsdm_like").toString()+"%' "
... ... @@ -1206,96 +1216,118 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1206 1216 @Override
1207 1217 public List<Ylb> listYlb(Map<String, Object> map) {
1208 1218 // TODO Auto-generated method stub
1209   - List<Ylb> listYlb=new ArrayList<Ylb>();
1210   - List<String> stringList=new ArrayList<String>();
1211   - String rq=map.get("rq").toString();
1212   - String gsbm=map.get("ssgsdm_like").toString();
1213   - String fgsbm=map.get("fgsdm_like").toString();
1214   - String xlbm=map.get("xlbm_like").toString().trim();
1215   - String nbbm=map.get("nbbm_eq").toString();
1216   - String sxtj=map.get("sxtj").toString();
1217   - if(nbbm.trim()!=""){
1218   - stringList.add(nbbm);
1219   - List<Object[]> objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm);
1220   - if(objectLists.size()>0){
1221   - int cs=Integer.parseInt(objectLists.get(0)[1].toString());
1222   - if(sxtj.equals("1")){
1223   - if(cs==1){
1224   - listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
1225   - }
1226   - }else if(sxtj.equals("2")){
1227   - if(cs>1){
1228   - listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1219 + List<Ylb> listYlb = new ArrayList<Ylb>();
  1220 + try {
  1221 + List<String> stringList = new ArrayList<String>();
  1222 + String rq = map.get("rq").toString();
  1223 + String gsbm = map.get("ssgsdm_like").toString();
  1224 + String fgsbm = map.get("fgsdm_like").toString();
  1225 + String xlbm = map.get("xlbm_like").toString().trim();
  1226 + String nbbm = map.get("nbbm_eq").toString();
  1227 + String sxtj = map.get("sxtj").toString();
  1228 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1229 + String type = map.get("type").toString();
  1230 + if (nbbm.trim() != "") {
  1231 + stringList.add(nbbm);
  1232 + List<Object[]> objectLists = repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm, nbbm);
  1233 + if (objectLists.size() > 0) {
  1234 + int cs = Integer.parseInt(objectLists.get(0)[1].toString());
  1235 + if (sxtj.equals("1")) {
  1236 + if (cs == 1) {
  1237 + if (type.equals("1"))
  1238 + listYlb = repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1239 + else
  1240 + listYlb = repository.listYlb_s(sdf.parse(rq+" 00:00:00"), gsbm, fgsbm, xlbm, stringList);
  1241 +
  1242 + }
  1243 + } else if (sxtj.equals("2")) {
  1244 + if (cs > 1) {
  1245 + if (type.equals("1"))
  1246 + listYlb = repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1247 + else
  1248 + listYlb = repository.listYlb_s(sdf.parse(rq+" 00:00:00"), gsbm, fgsbm, xlbm, stringList);
  1249 + }
  1250 + } else {
  1251 + if (type.equals("1"))
  1252 + listYlb = repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1253 + else
  1254 + listYlb = repository.listYlb_s(sdf.parse(rq+" 00:00:00"), gsbm, fgsbm, xlbm, stringList);
1229 1255 }
1230   - }else{
1231   - listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
1232   - }
1233   - }
1234   -
1235   - }else{
1236   - //全部
1237   - if(sxtj.equals("0")){
1238   - List<Object[]> objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm);
1239   - for (int i = 0; i < objectLists.size(); i++) {
1240   - String clbm=objectLists.get(i)[0].toString();
1241   - stringList.add(clbm);
1242   - }
1243   - if(stringList.size()>0){
1244   - listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
1245 1256 }
1246   - }else{
1247   - List<Object[]> objectLists;
1248   - if(sxtj.equals("3")){
1249   - //有加油没里程
1250   - objectLists=repository.checkNbmmYl(rq, gsbm, fgsbm, xlbm, nbbm);
  1257 +
  1258 + } else {
  1259 + // 全部
  1260 + if (sxtj.equals("0")) {
  1261 + List<Object[]> objectLists = repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm, nbbm);
1251 1262 for (int i = 0; i < objectLists.size(); i++) {
1252   - String clbm=objectLists.get(i)[0].toString();
1253   - double jzl=Double.parseDouble(objectLists.get(i)[1].toString());
1254   - double zlc=Double.parseDouble(objectLists.get(i)[2].toString());
1255   - if(jzl>0 && zlc<=0){
1256   - stringList.add(clbm);
1257   - }
1258   -
  1263 + String clbm = objectLists.get(i)[0].toString();
  1264 + stringList.add(clbm);
1259 1265 }
1260   -
1261   - }else if(sxtj.equals("4")){
1262   - //有里程没加油
1263   - objectLists=repository.checkNbmmYl(rq, gsbm, fgsbm, xlbm, nbbm);
1264   - for (int i = 0; i < objectLists.size(); i++) {
1265   - String clbm=objectLists.get(i)[0].toString();
1266   - double jzl=Double.parseDouble(objectLists.get(i)[1].toString());
1267   - double zlc=Double.parseDouble(objectLists.get(i)[2].toString());
1268   - if(zlc>0 && jzl<=0){
1269   - stringList.add(clbm);
1270   - }
1271   -
  1266 + if (stringList.size() > 0) {
  1267 + if (type.equals("1"))
  1268 + listYlb = repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1269 + else
  1270 + listYlb = repository.listYlb_s(sdf.parse(rq+" 00:00:00"), gsbm, fgsbm, xlbm, stringList);
1272 1271 }
1273   - }else{
1274   - objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm);
1275   - for (int i = 0; i < objectLists.size(); i++) {
1276   - String clbm=objectLists.get(i)[0].toString();
1277   - int cs=Integer.parseInt(objectLists.get(i)[1].toString());
1278   - //一车一单
1279   - if(sxtj.equals("1")){
1280   - if(cs==1){
  1272 + } else {
  1273 + List<Object[]> objectLists;
  1274 + if (sxtj.equals("3")) {
  1275 + // 有加油没里程
  1276 + objectLists = repository.checkNbmmYl(rq, gsbm, fgsbm, xlbm, nbbm);
  1277 + for (int i = 0; i < objectLists.size(); i++) {
  1278 + String clbm = objectLists.get(i)[0].toString();
  1279 + double jzl = Double.parseDouble(objectLists.get(i)[1].toString());
  1280 + double zlc = Double.parseDouble(objectLists.get(i)[2].toString());
  1281 + if (jzl > 0 && zlc <= 0) {
1281 1282 stringList.add(clbm);
1282 1283 }
1283   - }
1284   - //一车多单
1285   - if(sxtj.equals("2")){
1286   - if(cs>1){
  1284 +
  1285 + }
  1286 +
  1287 + } else if (sxtj.equals("4")) {
  1288 + // 有里程没加油
  1289 + objectLists = repository.checkNbmmYl(rq, gsbm, fgsbm, xlbm, nbbm);
  1290 + for (int i = 0; i < objectLists.size(); i++) {
  1291 + String clbm = objectLists.get(i)[0].toString();
  1292 + double jzl = Double.parseDouble(objectLists.get(i)[1].toString());
  1293 + double zlc = Double.parseDouble(objectLists.get(i)[2].toString());
  1294 + if (zlc > 0 && jzl <= 0) {
1287 1295 stringList.add(clbm);
1288 1296 }
  1297 +
  1298 + }
  1299 + } else {
  1300 + objectLists = repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm, nbbm);
  1301 + for (int i = 0; i < objectLists.size(); i++) {
  1302 + String clbm = objectLists.get(i)[0].toString();
  1303 + int cs = Integer.parseInt(objectLists.get(i)[1].toString());
  1304 + // 一车一单
  1305 + if (sxtj.equals("1")) {
  1306 + if (cs == 1) {
  1307 + stringList.add(clbm);
  1308 + }
  1309 + }
  1310 + // 一车多单
  1311 + if (sxtj.equals("2")) {
  1312 + if (cs > 1) {
  1313 + stringList.add(clbm);
  1314 + }
  1315 + }
1289 1316 }
1290 1317 }
1291   - }
1292   -
1293   - if(stringList.size()>0){
1294   - listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1318 +
  1319 + if (stringList.size() > 0) {
  1320 + if (type.equals("1"))
  1321 + listYlb = repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1322 + else
  1323 + listYlb = repository.listYlb_s(sdf.parse(rq+" 00:00:00"), gsbm, fgsbm, xlbm, stringList);
  1324 + }
1295 1325 }
1296 1326 }
  1327 + } catch (ParseException e) {
  1328 + // TODO Auto-generated catch block
  1329 + e.printStackTrace();
1297 1330 }
1298   -
1299 1331 return listYlb;
1300 1332 }
1301 1333  
... ...
src/main/java/com/bsth/service/report/CalcSheetService.java
... ... @@ -12,4 +12,5 @@ public interface CalcSheetService extends BaseService&lt;CalcSheet, Integer&gt;{
12 12 public List<CalcSheet> calcListSheet(Map<String, Object> map);
13 13 public List<Sheet> calcSheet(Map<String, Object> map);
14 14 public List<Map<String, Object>> calcTurnoutrate(Map<String, Object> map);
  15 + public List<Map<String, Object>> calcTurnoutrateZgf(Map<String, Object> map);
15 16 }
... ...
src/main/java/com/bsth/service/report/impl/CalcSheetServiceImpl.java
... ... @@ -774,6 +774,91 @@ public class CalcSheetServiceImpl extends BaseServiceImpl&lt;CalcSheet, Integer&gt; im
774 774 }
775 775 return fage;
776 776 }
  777 +
  778 + @Override
  779 + public List<Map<String,Object>> calcTurnoutrateZgf(Map<String, Object> map){
  780 + final DecimalFormat df = new DecimalFormat("0.00");
  781 + String line="";
  782 + if(map.get("line")!=null){
  783 + line =map.get("line").toString().trim();
  784 + }
  785 + String gs="";
  786 + if(map.get("gsdmTurn")!=null){
  787 + gs=map.get("gsdmTurn").toString().trim();
  788 + }
  789 + String fgs="";
  790 + if(map.get("fgsdmTurn")!=null){
  791 + fgs=map.get("fgsdmTurn").toString().trim();
  792 + }
  793 +// String nature="0";
  794 +// if(map.get("nature")!=null){
  795 +// nature=map.get("nature").toString();
  796 +// }
  797 +// Map<String, Boolean> lineMap=lineService.lineNature();
  798 +
  799 + String startDate=map.get("startDate").toString();
  800 + String endDate=map.get("endDate").toString();
  801 + String date=startDate+"-"+endDate;
  802 + if(startDate.equals(endDate)){
  803 + date=startDate;
  804 + }else{
  805 + date=startDate+"-"+endDate;
  806 + }
  807 + String type=map.get("type").toString();
  808 + final String dates=date;
  809 + String sql_="";
  810 + if(line.equals("")){
  811 + sql_= " and gsdm ='"+gs+"' and fgsdm like '%"+fgs+"%'";
  812 + }else{
  813 + sql_=" and xl='"+line+"'";
  814 + }
  815 + String sql=" select gsdm,fgsdm,xl,xl_name,sum(jhcc) as jhcc,sum(sjcc) as sjcc,"
  816 + + " sum(jhcczgf) as jhcczgf, sum(sjcczgf) as sjcczgf "
  817 + + " from bsth_c_calc_sheet where date >='"+startDate+"' and date <='"+endDate+"'"
  818 + + sql_
  819 + + " group by gsdm,fgsdm,xl,xl_name";
  820 + List<Map<String, Object>> lists=jdbcTemplate.query(sql,
  821 + new RowMapper<Map<String, Object>>(){
  822 + @Override
  823 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  824 + Map<String, Object> s=new HashMap<String,Object>();
  825 + s.put("rq",dates);
  826 + s.put("gsdm", rs.getString("gsdm"));
  827 + s.put("fgsdm", rs.getString("fgsdm"));
  828 + s.put("gsName", BasicData.businessCodeNameMap.get(rs.getString("gsdm")));
  829 + s.put("fgsName", BasicData.businessFgsCodeNameMap.get(rs.getString("fgsdm")+"_"+rs.getString("gsdm")));
  830 + s.put("xl", rs.getString("xl"));
  831 + s.put("xlName", rs.getString("xl_name"));
  832 + s.put("jhcc", rs.getInt("jhcc"));
  833 + s.put("sjcc", rs.getInt("sjcc"));
  834 + s.put("sjcczgf", rs.getInt("sjcczgf"));
  835 + s.put("jhcczgf", rs.getInt("jhcczgf"));
  836 + if(rs.getInt("jhcc")>0){
  837 + s.put("ccl",df.format((float)rs.getInt("sjcc")/rs.getInt("jhcc")*100)+"%");
  838 + }else{
  839 + s.put("ccl", "0.00%");
  840 + }
  841 + if(rs.getInt("jhcczgf")>0){
  842 + s.put("cclzgf", df.format((float)rs.getInt("sjcczgf")/rs.getInt("jhcczgf")*100)+"%");
  843 + }else{
  844 + s.put("cclzgf","0.00%");
  845 + }
  846 + s.put("sm", "");
  847 + return s;
  848 + }
  849 + });
  850 + if (type.equals("export")) {
  851 + String lineName=map.get("lineName").toString();
  852 + ReportUtils ee = new ReportUtils();
  853 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  854 + listI.add(lists.iterator());
  855 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  856 + ee.excelReplace(listI, new Object[] { map }, path + "mould/calcTurnoutrateZgf.xls", path + "export/"
  857 + + dates + "-" + lineName + "-营运线路出车率统计表.xls");
  858 + }
  859 + return lists;
  860 + }
  861 +
777 862 @Override
778 863 public List<Map<String, Object>> calcTurnoutrate(Map<String, Object> map) {
779 864 final DecimalFormat df = new DecimalFormat("0.00");
... ...
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
... ... @@ -1647,22 +1647,47 @@ public class CulateMileageServiceImpl implements CulateMileageService{
1647 1647 }
1648 1648 }else{
1649 1649 Set<ChildTaskPlan> childTaskPlans = t.getcTasks();
1650   - if(!childTaskPlans.isEmpty()){
1651   - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
1652   - while (it.hasNext()) {
1653   - ChildTaskPlan childTaskPlan = it.next();
1654   - if(childTaskPlan.getCcId()==null){
1655   - if("empty".equals(childTaskPlan.getMileageType())&&"临加".equals(childTaskPlan.getType1())){
1656   - if (!childTaskPlan.isDestroy()) {
1657   - Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
1658   - ljks=Arith.add(ljks,jhgl);
1659   - }
  1650 + if(isInOut(t)){
  1651 + if(childTaskPlans.isEmpty()){
  1652 + double jhlc=t.getJhlc()==null?0:t.getJhlc();
  1653 + double jhlcOrig=t.getJhlcOrig()==null?0:t.getJhlcOrig();
  1654 + double zjlc=Arith.sub(jhlc, jhlcOrig);
  1655 + if(zjlc>0){
  1656 + ljks=Arith.add(zjlc, ljks);
  1657 + }
  1658 + }else{
  1659 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  1660 + while (it.hasNext()) {
  1661 + ChildTaskPlan childTaskPlan = it.next();
  1662 + if(childTaskPlan.getCcId()==null){
  1663 + if("empty".equals(childTaskPlan.getMileageType())&&"临加".equals(childTaskPlan.getType1())){
  1664 + if (!childTaskPlan.isDestroy()) {
  1665 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  1666 + ljks=Arith.add(ljks,jhgl);
  1667 + }
  1668 + }
1660 1669 }
1661   - }
1662   - }
  1670 + }
  1671 + }
  1672 +
  1673 + }else{
  1674 + if(!childTaskPlans.isEmpty()){
  1675 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  1676 + while (it.hasNext()) {
  1677 + ChildTaskPlan childTaskPlan = it.next();
  1678 + if(childTaskPlan.getCcId()==null){
  1679 + if("empty".equals(childTaskPlan.getMileageType())&&"临加".equals(childTaskPlan.getType1())){
  1680 + if (!childTaskPlan.isDestroy()) {
  1681 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  1682 + ljks=Arith.add(ljks,jhgl);
  1683 + }
  1684 + }
  1685 + }
  1686 + }
  1687 + }
1663 1688 }
1664   -
1665 1689 }
  1690 +
1666 1691 }
1667 1692 return ljks;
1668 1693 }
... ...
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
... ... @@ -385,9 +385,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
385 385 // zgfEnd = sdf.parse(date + "08:30").getTime();
386 386 // wgfBegin = sdf.parse(date + "16:00").getTime();
387 387 // wgfEnd = sdf.parse(date + "18:00").getTime();
388   - zgfBegin = 6l * 60l + 30l;
  388 + zgfBegin = 6l * 60l + 31l;
389 389 zgfEnd = 8l * 60l + 30l;
390   - wgfBegin = 16l * 60l + 0l;
  390 + wgfBegin = 16l * 60l + 1l;
391 391 wgfEnd = 18l * 60l + 0l;
392 392 } catch (Exception e) {
393 393 // TODO Auto-generated catch block
... ... @@ -414,15 +414,23 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
414 414 subCompanyName = schedule.getFgsName();
415 415  
416 416 //早晚高峰时段执行率
417   - if(schedule.getFcsjT() >= zgfBegin && schedule.getFcsjT() <= zgfEnd){
418   - jhzgf++;
419   - if(schedule.getFcsjActual() != null)
  417 + if(!schedule.getBcType().equals("in") && !schedule.getBcType().equals("out") && !schedule.getBcType().equals("ldks")){
  418 + if(schedule.getFcsjT() >= zgfBegin && schedule.getFcsjT() <= zgfEnd){
  419 + jhzgf++;
  420 + }
  421 + if(schedule.getFcsjActual() != null && !schedule.isDestroy()
  422 + && schedule.getFcsjActualTime() >= zgfBegin
  423 + && schedule.getFcsjActualTime() <= zgfEnd){
420 424 sjzgf++;
421   - }
422   - if(schedule.getFcsjT() >= wgfBegin && schedule.getFcsjT() <= wgfEnd){
423   - jhwgf++;
424   - if(schedule.getFcsjActual() != null)
  425 + }
  426 + if(schedule.getFcsjT() >= wgfBegin && schedule.getFcsjT() <= wgfEnd){
  427 + jhwgf++;
  428 + }
  429 + if(schedule.getFcsjActual() != null && !schedule.isDestroy()
  430 + && schedule.getFcsjActualTime() >= wgfBegin
  431 + && schedule.getFcsjActualTime() <= wgfEnd){
425 432 sjwgf++;
  433 + }
426 434 }
427 435  
428 436 //班次数和出场数
... ...
src/main/java/com/bsth/service/schedule/impl/plan/kBase3/validate/rule/CalcuParam.java
1   -package com.bsth.service.schedule.impl.plan.kBase3.validate.rule;
2   -
3   -import org.joda.time.DateTime;
4   -
5   -/**
6   - * 计算用参数。
7   - */
8   -public class CalcuParam {
9   - /** 线路Id */
10   - private Integer xlId;
11   -
12   - /** 计划开始计算日期 */
13   - private DateTime fromDate;
14   - /** 计划结束计算日期 */
15   - private DateTime toDate;
16   -
17   - public Integer getXlId() {
18   - return xlId;
19   - }
20   -
21   - public void setXlId(Integer xlId) {
22   - this.xlId = xlId;
23   - }
24   -
25   - public DateTime getFromDate() {
26   - return fromDate;
27   - }
28   -
29   - public void setFromDate(DateTime fromDate) {
30   - this.fromDate = fromDate;
31   - }
32   -
33   - public DateTime getToDate() {
34   - return toDate;
35   - }
36   -
37   - public void setToDate(DateTime toDate) {
38   - this.toDate = toDate;
39   - }
40   -}
  1 +package com.bsth.service.schedule.impl.plan.kBase3.validate.rule;
  2 +
  3 +import org.joda.time.DateTime;
  4 +
  5 +/**
  6 + * 计算用参数。
  7 + */
  8 +public class CalcuParam {
  9 + /** 线路Id */
  10 + private Integer xlId;
  11 +
  12 + /** 计划开始计算日期 */
  13 + private DateTime fromDate;
  14 + /** 计划结束计算日期 */
  15 + private DateTime toDate;
  16 +
  17 + public Integer getXlId() {
  18 + return xlId;
  19 + }
  20 +
  21 + public void setXlId(Integer xlId) {
  22 + this.xlId = xlId;
  23 + }
  24 +
  25 + public DateTime getFromDate() {
  26 + return fromDate;
  27 + }
  28 +
  29 + public void setFromDate(DateTime fromDate) {
  30 + this.fromDate = fromDate;
  31 + }
  32 +
  33 + public DateTime getToDate() {
  34 + return toDate;
  35 + }
  36 +
  37 + public void setToDate(DateTime toDate) {
  38 + this.toDate = toDate;
  39 + }
  40 +}
... ...
src/main/java/com/bsth/service/schedule/impl/plan/kBase3/validate/rule/ErrorInfoFunction.java
1   -package com.bsth.service.schedule.impl.plan.kBase3.validate.rule;
2   -
3   -
4   -import com.bsth.entity.schedule.EmployeeConfigInfo;
5   -import com.bsth.entity.schedule.GuideboardInfo;
6   -import org.apache.commons.lang3.StringUtils;
7   -import org.apache.commons.lang3.math.NumberUtils;
8   -import org.kie.api.runtime.rule.AccumulateFunction;
9   -
10   -import java.io.*;
11   -import java.util.HashMap;
12   -import java.util.Map;
13   -
14   -/**
15   - * 查找错误函数。
16   - */
17   -public class ErrorInfoFunction implements AccumulateFunction {
18   - @Override
19   - public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
20   -
21   - }
22   -
23   - @Override
24   - public void writeExternal(ObjectOutput out) throws IOException {
25   -
26   - }
27   -
28   - protected static class ErrorInfoContext implements Externalizable {
29   - /** 错误数量 */
30   - public Integer errorCount = 0;
31   - /** 错误Map,Map<规则id,errorInfo> */
32   - public Map<Long, ValidateRuleResult.ErrorInfo> errorInfoMap = new HashMap<>();
33   -
34   - public ErrorInfoContext() {
35   -
36   - }
37   -
38   - @Override
39   - public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
40   - errorCount = in.readInt();
41   - errorInfoMap = (Map<Long, ValidateRuleResult.ErrorInfo>) in.readObject();
42   -
43   - }
44   -
45   - @Override
46   - public void writeExternal(ObjectOutput out) throws IOException {
47   - out.writeInt(errorCount);
48   - out.writeObject(errorInfoMap);
49   - }
50   -
51   - }
52   -
53   - @Override
54   - public Serializable createContext() {
55   - return new ErrorInfoContext();
56   - }
57   -
58   - @Override
59   - public void init(Serializable serializable) throws Exception {
60   - ErrorInfoContext errorInfoContext = (ErrorInfoContext) serializable;
61   - errorInfoContext.errorCount = 0;
62   - errorInfoContext.errorInfoMap = new HashMap<>();
63   - }
64   -
65   - @Override
66   - public void accumulate(Serializable serializable, Object o) {
67   - ErrorInfoContext errorInfoContext = (ErrorInfoContext) serializable;
68   - WrapInput wrapInput = (WrapInput) o;
69   -
70   - ValidateRuleResult.ErrorInfo errorInfo = new ValidateRuleResult.ErrorInfo();
71   - errorInfo.setRuleId(wrapInput.getRuleId());
72   - errorInfo.setClZbh(wrapInput.getClZbh());
73   - errorInfo.setQyrq(wrapInput.getQyrq());
74   -
75   - // 1、车辆配置验证
76   - if (StringUtils.isNotEmpty(wrapInput.getClZbh())) { // 自编号不能为空
77   - if (wrapInput.getCcInfos().get(wrapInput.getClZbh()) == null) { // 车辆配置不在当前线路上
78   - errorInfo.getErrorDescList().add("车辆配置不在当前线路,请重新编辑保存!");
79   - }
80   - } else {
81   - errorInfo.getErrorDescList().add("自编号不能为空,请重新编辑保存!");
82   - }
83   -
84   - // 2、路牌id,路牌名字,路牌起始索引验证
85   - if (StringUtils.isNotEmpty(wrapInput.getLpIds()) &&
86   - StringUtils.isNotEmpty(wrapInput.getLpNames())) { // 冗余的路牌id和路牌名字都不能为空
87   - String[] lpIds = wrapInput.getLpIds().split(",");
88   - String[] lpNames = wrapInput.getLpNames().split(",");
89   - if (lpIds.length == lpNames.length) { // 路牌id和路牌名字个数一致
90   - for (int i = 0; i < lpIds.length; i++) {
91   - if (!NumberUtils.isDigits(lpIds[i])) { // 冗余路牌id必须是数字
92   - errorInfo.getErrorDescList().add("冗余路牌id必须是数字,请重新编辑保存!");
93   - break;
94   - }
95   -
96   - GuideboardInfo lpInfo = wrapInput.getLpInfos().get(NumberUtils.toLong(lpIds[i]));
97   - if (lpInfo == null) { // 路牌不在当前线路上
98   - errorInfo.getErrorDescList().add("路牌不在当前线路上,请重新编辑保存!");
99   - } else {
100   - if (StringUtils.isEmpty(lpNames[i]) ||
101   - !(lpNames[i].equals(lpInfo.getLpName()))) { // 路牌id和路牌名字不对应
102   - errorInfo.getErrorDescList().add("路牌id和路牌名字不对应,请重新编辑保存!");
103   - break;
104   - }
105   - }
106   - }
107   -
108   - if (wrapInput.getLpStartIndex() < 1 ||
109   - wrapInput.getLpStartIndex() > lpIds.length) { // 路牌起始索引溢出
110   - errorInfo.getErrorDescList().add("路牌起始索引溢出,请重新编辑保存!");
111   - }
112   - } else {
113   - errorInfo.getErrorDescList().add("路牌id和路牌名字个数不一致,请重新编辑保存!");
114   - }
115   - } else {
116   - errorInfo.getErrorDescList().add("冗余的路牌id和路牌名字都不能为空,请重新编辑保存!");
117   - }
118   -
119   - // 3、人员配置,搭班编码,人员起始索引验证
120   - if (StringUtils.isNotEmpty(wrapInput.getEcIds()) &&
121   - StringUtils.isNotEmpty(wrapInput.getEcDbbms())) { // 冗余的人员配置id和人员搭班编码都不能为空
122   - String[] ecIds = wrapInput.getEcIds().split(",");
123   - String[] ecDbbms = wrapInput.getEcDbbms().split(",");
124   - if (ecIds.length == ecDbbms.length) { // 人员配置id和搭班编码个数一致
125   - for (int i = 0; i < ecIds.length; i++) {
126   - if (ecIds[i].contains("-")) { // 分班标识
127   - String[] fb_ecIds = ecIds[i].split("-");
128   - String[] fb_ecDbbms = ecDbbms[i].split("-");
129   - if (fb_ecIds.length != 2 || fb_ecDbbms.length != 2) { // 只能早晚分班
130   - errorInfo.getErrorDescList().add("只能早晚分班,请重新编辑保存!");
131   - break;
132   - } else {
133   - EmployeeConfigInfo fb_ecInfo1 = wrapInput.getEcInfos().get(NumberUtils.toLong(fb_ecIds[0]));
134   - EmployeeConfigInfo fb_ecInfo2 = wrapInput.getEcInfos().get(NumberUtils.toLong(fb_ecIds[1]));
135   - if (fb_ecInfo1 == null || fb_ecInfo2 == null) { // 分班的人员配置不在当前线路
136   - errorInfo.getErrorDescList().add("分班的人员配置不在当前线路,请重新编辑保存!");
137   - break;
138   - } else {
139   - if (StringUtils.isEmpty(fb_ecDbbms[0]) ||
140   - StringUtils.isEmpty(fb_ecDbbms[1]) ||
141   - !(fb_ecDbbms[0].equals(fb_ecInfo1.getDbbm())) ||
142   - !(fb_ecDbbms[1].equals(fb_ecInfo2.getDbbm()))) { // 分班人员配置id和搭班编码不对应
143   - errorInfo.getErrorDescList().add("分班人员配置id和搭班编码不对应,请重新编辑保存!");
144   - break;
145   - }
146   - }
147   - }
148   -
149   - } else {
150   - if (!NumberUtils.isDigits(ecIds[i])) { // 冗余的人员配置id必须是数字
151   - errorInfo.getErrorDescList().add("冗余的人员配置id必须是数字,请重新编辑保存!");
152   - break;
153   - }
154   -
155   - EmployeeConfigInfo ecInfo = wrapInput.getEcInfos().get(NumberUtils.toLong(ecIds[i]));
156   - if (ecInfo == null) { // 人员配置不在当前线路
157   - errorInfo.getErrorDescList().add("人员配置不在当前线路,请重新编辑保存!");
158   - break;
159   - } else {
160   - if (StringUtils.isEmpty(ecDbbms[i]) ||
161   - !(ecDbbms[i].equals(ecInfo.getDbbm()))) { // 人员配置id和搭班编码不对应
162   - errorInfo.getErrorDescList().add("人员配置id和搭班编码不对应,请重新编辑保存!");
163   - break;
164   - }
165   - }
166   - }
167   - }
168   -
169   - if (wrapInput.getEcStartIndex() < 1 ||
170   - wrapInput.getEcStartIndex() > ecIds.length) { // 人员起始索引溢出
171   - errorInfo.getErrorDescList().add("人员起始索引溢出,请重新编辑保存!");
172   - }
173   - } else {
174   - errorInfo.getErrorDescList().add("人员配置id和搭班编码个数不一致,请重新编辑保存!");
175   - }
176   - }
177   -
178   - if (errorInfo.getErrorDescList().size() > 0) {
179   - errorInfoContext.errorCount ++;
180   - errorInfoContext.errorInfoMap.put(wrapInput.getRuleId(), errorInfo);
181   - }
182   -
183   - }
184   -
185   - @Override
186   - public void reverse(Serializable serializable, Object o) throws Exception {
187   - ErrorInfoContext errorInfoContext = (ErrorInfoContext) serializable;
188   - WrapInput wrapInput = (WrapInput) o;
189   -
190   - if (errorInfoContext.errorInfoMap.get(wrapInput.getRuleId()) != null) {
191   - errorInfoContext.errorInfoMap.remove(wrapInput.getRuleId());
192   - errorInfoContext.errorCount --;
193   - }
194   - }
195   -
196   - @Override
197   - public Object getResult(Serializable serializable) throws Exception {
198   - ErrorInfoContext errorInfoContext = (ErrorInfoContext) serializable;
199   - return errorInfoContext.errorInfoMap;
200   - }
201   -
202   - @Override
203   - public boolean supportsReverse() {
204   - return true;
205   - }
206   -
207   - @Override
208   - public Class<?> getResultType() {
209   - return Map.class;
210   - }
211   -
212   -}
  1 +package com.bsth.service.schedule.impl.plan.kBase3.validate.rule;
  2 +
  3 +
  4 +import com.bsth.entity.schedule.EmployeeConfigInfo;
  5 +import com.bsth.entity.schedule.GuideboardInfo;
  6 +import org.apache.commons.lang3.StringUtils;
  7 +import org.apache.commons.lang3.math.NumberUtils;
  8 +import org.kie.api.runtime.rule.AccumulateFunction;
  9 +
  10 +import java.io.*;
  11 +import java.util.HashMap;
  12 +import java.util.Map;
  13 +
  14 +/**
  15 + * 查找错误函数。
  16 + */
  17 +public class ErrorInfoFunction implements AccumulateFunction {
  18 + @Override
  19 + public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
  20 +
  21 + }
  22 +
  23 + @Override
  24 + public void writeExternal(ObjectOutput out) throws IOException {
  25 +
  26 + }
  27 +
  28 + protected static class ErrorInfoContext implements Externalizable {
  29 + /** 错误数量 */
  30 + public Integer errorCount = 0;
  31 + /** 错误Map,Map<规则id,errorInfo> */
  32 + public Map<Long, ValidateRuleResult.ErrorInfo> errorInfoMap = new HashMap<>();
  33 +
  34 + public ErrorInfoContext() {
  35 +
  36 + }
  37 +
  38 + @Override
  39 + public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
  40 + errorCount = in.readInt();
  41 + errorInfoMap = (Map<Long, ValidateRuleResult.ErrorInfo>) in.readObject();
  42 +
  43 + }
  44 +
  45 + @Override
  46 + public void writeExternal(ObjectOutput out) throws IOException {
  47 + out.writeInt(errorCount);
  48 + out.writeObject(errorInfoMap);
  49 + }
  50 +
  51 + }
  52 +
  53 + @Override
  54 + public Serializable createContext() {
  55 + return new ErrorInfoContext();
  56 + }
  57 +
  58 + @Override
  59 + public void init(Serializable serializable) throws Exception {
  60 + ErrorInfoContext errorInfoContext = (ErrorInfoContext) serializable;
  61 + errorInfoContext.errorCount = 0;
  62 + errorInfoContext.errorInfoMap = new HashMap<>();
  63 + }
  64 +
  65 + @Override
  66 + public void accumulate(Serializable serializable, Object o) {
  67 + ErrorInfoContext errorInfoContext = (ErrorInfoContext) serializable;
  68 + WrapInput wrapInput = (WrapInput) o;
  69 +
  70 + ValidateRuleResult.ErrorInfo errorInfo = new ValidateRuleResult.ErrorInfo();
  71 + errorInfo.setRuleId(wrapInput.getRuleId());
  72 + errorInfo.setClZbh(wrapInput.getClZbh());
  73 + errorInfo.setQyrq(wrapInput.getQyrq());
  74 +
  75 + // 1、车辆配置验证
  76 + if (StringUtils.isNotEmpty(wrapInput.getClZbh())) { // 自编号不能为空
  77 + if (wrapInput.getCcInfos().get(wrapInput.getClZbh()) == null) { // 车辆配置不在当前线路上
  78 + errorInfo.getErrorDescList().add("车辆配置不在当前线路,请重新编辑保存!");
  79 + }
  80 + } else {
  81 + errorInfo.getErrorDescList().add("自编号不能为空,请重新编辑保存!");
  82 + }
  83 +
  84 + // 2、路牌id,路牌名字,路牌起始索引验证
  85 + if (StringUtils.isNotEmpty(wrapInput.getLpIds()) &&
  86 + StringUtils.isNotEmpty(wrapInput.getLpNames())) { // 冗余的路牌id和路牌名字都不能为空
  87 + String[] lpIds = wrapInput.getLpIds().split(",");
  88 + String[] lpNames = wrapInput.getLpNames().split(",");
  89 + if (lpIds.length == lpNames.length) { // 路牌id和路牌名字个数一致
  90 + for (int i = 0; i < lpIds.length; i++) {
  91 + if (!NumberUtils.isDigits(lpIds[i])) { // 冗余路牌id必须是数字
  92 + errorInfo.getErrorDescList().add("冗余路牌id必须是数字,请重新编辑保存!");
  93 + break;
  94 + }
  95 +
  96 + GuideboardInfo lpInfo = wrapInput.getLpInfos().get(NumberUtils.toLong(lpIds[i]));
  97 + if (lpInfo == null) { // 路牌不在当前线路上
  98 + errorInfo.getErrorDescList().add("路牌不在当前线路上,请重新编辑保存!");
  99 + } else {
  100 + if (StringUtils.isEmpty(lpNames[i]) ||
  101 + !(lpNames[i].equals(lpInfo.getLpName()))) { // 路牌id和路牌名字不对应
  102 + errorInfo.getErrorDescList().add("路牌id和路牌名字不对应,请重新编辑保存!");
  103 + break;
  104 + }
  105 + }
  106 + }
  107 +
  108 + if (wrapInput.getLpStartIndex() < 1 ||
  109 + wrapInput.getLpStartIndex() > lpIds.length) { // 路牌起始索引溢出
  110 + errorInfo.getErrorDescList().add("路牌起始索引溢出,请重新编辑保存!");
  111 + }
  112 + } else {
  113 + errorInfo.getErrorDescList().add("路牌id和路牌名字个数不一致,请重新编辑保存!");
  114 + }
  115 + } else {
  116 + errorInfo.getErrorDescList().add("冗余的路牌id和路牌名字都不能为空,请重新编辑保存!");
  117 + }
  118 +
  119 + // 3、人员配置,搭班编码,人员起始索引验证
  120 + if (StringUtils.isNotEmpty(wrapInput.getEcIds()) &&
  121 + StringUtils.isNotEmpty(wrapInput.getEcDbbms())) { // 冗余的人员配置id和人员搭班编码都不能为空
  122 + String[] ecIds = wrapInput.getEcIds().split(",");
  123 + String[] ecDbbms = wrapInput.getEcDbbms().split(",");
  124 + if (ecIds.length == ecDbbms.length) { // 人员配置id和搭班编码个数一致
  125 + for (int i = 0; i < ecIds.length; i++) {
  126 + if (ecIds[i].contains("-")) { // 分班标识
  127 + String[] fb_ecIds = ecIds[i].split("-");
  128 + String[] fb_ecDbbms = ecDbbms[i].split("-");
  129 + if (fb_ecIds.length != 2 || fb_ecDbbms.length != 2) { // 只能早晚分班
  130 + errorInfo.getErrorDescList().add("只能早晚分班,请重新编辑保存!");
  131 + break;
  132 + } else {
  133 + EmployeeConfigInfo fb_ecInfo1 = wrapInput.getEcInfos().get(NumberUtils.toLong(fb_ecIds[0]));
  134 + EmployeeConfigInfo fb_ecInfo2 = wrapInput.getEcInfos().get(NumberUtils.toLong(fb_ecIds[1]));
  135 + if (fb_ecInfo1 == null || fb_ecInfo2 == null) { // 分班的人员配置不在当前线路
  136 + errorInfo.getErrorDescList().add("分班的人员配置不在当前线路,请重新编辑保存!");
  137 + break;
  138 + } else {
  139 + if (StringUtils.isEmpty(fb_ecDbbms[0]) ||
  140 + StringUtils.isEmpty(fb_ecDbbms[1]) ||
  141 + !(fb_ecDbbms[0].equals(fb_ecInfo1.getDbbm())) ||
  142 + !(fb_ecDbbms[1].equals(fb_ecInfo2.getDbbm()))) { // 分班人员配置id和搭班编码不对应
  143 + errorInfo.getErrorDescList().add("分班人员配置id和搭班编码不对应,请重新编辑保存!");
  144 + break;
  145 + }
  146 + }
  147 + }
  148 +
  149 + } else {
  150 + if (!NumberUtils.isDigits(ecIds[i])) { // 冗余的人员配置id必须是数字
  151 + errorInfo.getErrorDescList().add("冗余的人员配置id必须是数字,请重新编辑保存!");
  152 + break;
  153 + }
  154 +
  155 + EmployeeConfigInfo ecInfo = wrapInput.getEcInfos().get(NumberUtils.toLong(ecIds[i]));
  156 + if (ecInfo == null) { // 人员配置不在当前线路
  157 + errorInfo.getErrorDescList().add("人员配置不在当前线路,请重新编辑保存!");
  158 + break;
  159 + } else {
  160 + if (StringUtils.isEmpty(ecDbbms[i]) ||
  161 + !(ecDbbms[i].equals(ecInfo.getDbbm()))) { // 人员配置id和搭班编码不对应
  162 + errorInfo.getErrorDescList().add("人员配置id和搭班编码不对应,请重新编辑保存!");
  163 + break;
  164 + }
  165 + }
  166 + }
  167 + }
  168 +
  169 + if (wrapInput.getEcStartIndex() < 1 ||
  170 + wrapInput.getEcStartIndex() > ecIds.length) { // 人员起始索引溢出
  171 + errorInfo.getErrorDescList().add("人员起始索引溢出,请重新编辑保存!");
  172 + }
  173 + } else {
  174 + errorInfo.getErrorDescList().add("人员配置id和搭班编码个数不一致,请重新编辑保存!");
  175 + }
  176 + }
  177 +
  178 + if (errorInfo.getErrorDescList().size() > 0) {
  179 + errorInfoContext.errorCount ++;
  180 + errorInfoContext.errorInfoMap.put(wrapInput.getRuleId(), errorInfo);
  181 + }
  182 +
  183 + }
  184 +
  185 + @Override
  186 + public void reverse(Serializable serializable, Object o) throws Exception {
  187 + ErrorInfoContext errorInfoContext = (ErrorInfoContext) serializable;
  188 + WrapInput wrapInput = (WrapInput) o;
  189 +
  190 + if (errorInfoContext.errorInfoMap.get(wrapInput.getRuleId()) != null) {
  191 + errorInfoContext.errorInfoMap.remove(wrapInput.getRuleId());
  192 + errorInfoContext.errorCount --;
  193 + }
  194 + }
  195 +
  196 + @Override
  197 + public Object getResult(Serializable serializable) throws Exception {
  198 + ErrorInfoContext errorInfoContext = (ErrorInfoContext) serializable;
  199 + return errorInfoContext.errorInfoMap;
  200 + }
  201 +
  202 + @Override
  203 + public boolean supportsReverse() {
  204 + return true;
  205 + }
  206 +
  207 + @Override
  208 + public Class<?> getResultType() {
  209 + return Map.class;
  210 + }
  211 +
  212 +}
... ...
src/main/java/com/bsth/service/schedule/impl/plan/kBase3/validate/rule/ValidateRuleResult.java
1   -package com.bsth.service.schedule.impl.plan.kBase3.validate.rule;
2   -
3   -import java.util.ArrayList;
4   -import java.util.Date;
5   -import java.util.List;
6   -
7   -/**
8   - * 输出结果值。
9   - */
10   -public class ValidateRuleResult {
11   - /** 线路id */
12   - private Integer xlId;
13   - /** 规则总数量 */
14   - private Integer count;
15   - /** 启用的规则数量 */
16   - private Integer qyCount;
17   - /** 启用规则中的错误数量 */
18   - private Integer qyErrorCount;
19   - /** 错误列表 */
20   - private List<ErrorInfo> errorInfos = new ArrayList<>();
21   -
22   - public Integer getXlId() {
23   - return xlId;
24   - }
25   -
26   - public void setXlId(Integer xlId) {
27   - this.xlId = xlId;
28   - }
29   -
30   - public Integer getCount() {
31   - return count;
32   - }
33   -
34   - public void setCount(Integer count) {
35   - this.count = count;
36   - }
37   -
38   - public Integer getQyCount() {
39   - return qyCount;
40   - }
41   -
42   - public void setQyCount(Integer qyCount) {
43   - this.qyCount = qyCount;
44   - }
45   -
46   - public Integer getQyErrorCount() {
47   - return qyErrorCount;
48   - }
49   -
50   - public void setQyErrorCount(Integer qyErrorCount) {
51   - this.qyErrorCount = qyErrorCount;
52   - }
53   -
54   - public List<ErrorInfo> getErrorInfos() {
55   - return errorInfos;
56   - }
57   -
58   - public void setErrorInfos(List<ErrorInfo> errorInfos) {
59   - this.errorInfos = errorInfos;
60   - }
61   -
62   - public static class ErrorInfo {
63   - /** 规则id */
64   - private Long ruleId;
65   - /** 车辆自编号 */
66   - private String clZbh;
67   - /** 启用日期 */
68   - private Date qyrq;
69   - /** 错误描述 */
70   - private List<String> errorDescList = new ArrayList<>();
71   -
72   - public Long getRuleId() {
73   - return ruleId;
74   - }
75   -
76   - public void setRuleId(Long ruleId) {
77   - this.ruleId = ruleId;
78   - }
79   -
80   - public String getClZbh() {
81   - return clZbh;
82   - }
83   -
84   - public void setClZbh(String clZbh) {
85   - this.clZbh = clZbh;
86   - }
87   -
88   - public Date getQyrq() {
89   - return qyrq;
90   - }
91   -
92   - public void setQyrq(Date qyrq) {
93   - this.qyrq = qyrq;
94   - }
95   -
96   - public List<String> getErrorDescList() {
97   - return errorDescList;
98   - }
99   -
100   - public void setErrorDescList(List<String> errorDescList) {
101   - this.errorDescList = errorDescList;
102   - }
103   - }
104   -}
  1 +package com.bsth.service.schedule.impl.plan.kBase3.validate.rule;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.Date;
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * 输出结果值。
  9 + */
  10 +public class ValidateRuleResult {
  11 + /** 线路id */
  12 + private Integer xlId;
  13 + /** 规则总数量 */
  14 + private Integer count;
  15 + /** 启用的规则数量 */
  16 + private Integer qyCount;
  17 + /** 启用规则中的错误数量 */
  18 + private Integer qyErrorCount;
  19 + /** 错误列表 */
  20 + private List<ErrorInfo> errorInfos = new ArrayList<>();
  21 +
  22 + public Integer getXlId() {
  23 + return xlId;
  24 + }
  25 +
  26 + public void setXlId(Integer xlId) {
  27 + this.xlId = xlId;
  28 + }
  29 +
  30 + public Integer getCount() {
  31 + return count;
  32 + }
  33 +
  34 + public void setCount(Integer count) {
  35 + this.count = count;
  36 + }
  37 +
  38 + public Integer getQyCount() {
  39 + return qyCount;
  40 + }
  41 +
  42 + public void setQyCount(Integer qyCount) {
  43 + this.qyCount = qyCount;
  44 + }
  45 +
  46 + public Integer getQyErrorCount() {
  47 + return qyErrorCount;
  48 + }
  49 +
  50 + public void setQyErrorCount(Integer qyErrorCount) {
  51 + this.qyErrorCount = qyErrorCount;
  52 + }
  53 +
  54 + public List<ErrorInfo> getErrorInfos() {
  55 + return errorInfos;
  56 + }
  57 +
  58 + public void setErrorInfos(List<ErrorInfo> errorInfos) {
  59 + this.errorInfos = errorInfos;
  60 + }
  61 +
  62 + public static class ErrorInfo {
  63 + /** 规则id */
  64 + private Long ruleId;
  65 + /** 车辆自编号 */
  66 + private String clZbh;
  67 + /** 启用日期 */
  68 + private Date qyrq;
  69 + /** 错误描述 */
  70 + private List<String> errorDescList = new ArrayList<>();
  71 +
  72 + public Long getRuleId() {
  73 + return ruleId;
  74 + }
  75 +
  76 + public void setRuleId(Long ruleId) {
  77 + this.ruleId = ruleId;
  78 + }
  79 +
  80 + public String getClZbh() {
  81 + return clZbh;
  82 + }
  83 +
  84 + public void setClZbh(String clZbh) {
  85 + this.clZbh = clZbh;
  86 + }
  87 +
  88 + public Date getQyrq() {
  89 + return qyrq;
  90 + }
  91 +
  92 + public void setQyrq(Date qyrq) {
  93 + this.qyrq = qyrq;
  94 + }
  95 +
  96 + public List<String> getErrorDescList() {
  97 + return errorDescList;
  98 + }
  99 +
  100 + public void setErrorDescList(List<String> errorDescList) {
  101 + this.errorDescList = errorDescList;
  102 + }
  103 + }
  104 +}
... ...
src/main/java/com/bsth/service/schedule/impl/plan/kBase3/validate/rule/WrapInput.java
1   -package com.bsth.service.schedule.impl.plan.kBase3.validate.rule;
2   -
3   -import com.bsth.entity.schedule.CarConfigInfo;
4   -import com.bsth.entity.schedule.EmployeeConfigInfo;
5   -import com.bsth.entity.schedule.GuideboardInfo;
6   -import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
7   -import org.springframework.util.CollectionUtils;
8   -
9   -import java.util.*;
10   -
11   -/**
12   - * 聚合输入的待判定数据。
13   - */
14   -public class WrapInput {
15   - /** 线路Id */
16   - private Integer xlId;
17   - /** 车辆自编号 */
18   - private String clZbh;
19   - /** 路牌id列表 */
20   - private String lpIds;
21   - /** 路牌名字列表 */
22   - private String lpNames;
23   - /** 人员配置列表 */
24   - private String ecIds;
25   - /** 人员搭班编码列表 */
26   - private String ecDbbms;
27   - /** 路牌循环起始索引 */
28   - private Integer lpStartIndex;
29   - /** 人员循环起始索引 */
30   - private Integer ecStartIndex;
31   - /** 规则id */
32   - private Long ruleId;
33   - /** 启用日期 */
34   - private Date qyrq;
35   -
36   - private Map<String, CarConfigInfo> ccInfos = new HashMap<>();
37   - private Map<Long, GuideboardInfo> lpInfos = new HashMap<>();
38   - private Map<Long, EmployeeConfigInfo> ecInfos = new HashMap<>();
39   -
40   - public WrapInput(ScheduleRule1Flat r,
41   - Map<String, CarConfigInfo> cc,
42   - Map<Long, GuideboardInfo> lp,
43   - Map<Long, EmployeeConfigInfo> ec) {
44   - this.xlId = r.getXl().getId();
45   - this.clZbh = r.getCarConfigInfo().getCl().getInsideCode();
46   - this.lpIds = r.getLpIds();
47   - this.lpNames = r.getLpNames();
48   - this.ecIds = r.getRyConfigIds();
49   - this.ecDbbms = r.getRyDbbms();
50   - this.lpStartIndex = r.getLpStart();
51   - this.ecStartIndex = r.getRyStart();
52   - this.ruleId = r.getId();
53   - this.qyrq = r.getQyrq();
54   -
55   - if (!CollectionUtils.isEmpty(cc)) {
56   - this.ccInfos.putAll(cc);
57   - }
58   - if (!CollectionUtils.isEmpty(lp)) {
59   - this.lpInfos.putAll(lp);
60   - }
61   - if (!CollectionUtils.isEmpty(ec)) {
62   - this.ecInfos.putAll(ec);
63   - }
64   -
65   - }
66   -
67   - public Integer getXlId() {
68   - return xlId;
69   - }
70   -
71   - public void setXlId(Integer xlId) {
72   - this.xlId = xlId;
73   - }
74   -
75   - public String getClZbh() {
76   - return clZbh;
77   - }
78   -
79   - public void setClZbh(String clZbh) {
80   - this.clZbh = clZbh;
81   - }
82   -
83   - public String getLpIds() {
84   - return lpIds;
85   - }
86   -
87   - public void setLpIds(String lpIds) {
88   - this.lpIds = lpIds;
89   - }
90   -
91   - public String getLpNames() {
92   - return lpNames;
93   - }
94   -
95   - public void setLpNames(String lpNames) {
96   - this.lpNames = lpNames;
97   - }
98   -
99   - public String getEcIds() {
100   - return ecIds;
101   - }
102   -
103   - public void setEcIds(String ecIds) {
104   - this.ecIds = ecIds;
105   - }
106   -
107   - public String getEcDbbms() {
108   - return ecDbbms;
109   - }
110   -
111   - public void setEcDbbms(String ecDbbms) {
112   - this.ecDbbms = ecDbbms;
113   - }
114   -
115   - public Integer getLpStartIndex() {
116   - return lpStartIndex;
117   - }
118   -
119   - public void setLpStartIndex(Integer lpStartIndex) {
120   - this.lpStartIndex = lpStartIndex;
121   - }
122   -
123   - public Integer getEcStartIndex() {
124   - return ecStartIndex;
125   - }
126   -
127   - public void setEcStartIndex(Integer ecStartIndex) {
128   - this.ecStartIndex = ecStartIndex;
129   - }
130   -
131   - public Long getRuleId() {
132   - return ruleId;
133   - }
134   -
135   - public void setRuleId(Long ruleId) {
136   - this.ruleId = ruleId;
137   - }
138   -
139   - public Date getQyrq() {
140   - return qyrq;
141   - }
142   -
143   - public void setQyrq(Date qyrq) {
144   - this.qyrq = qyrq;
145   - }
146   -
147   - public Map<String, CarConfigInfo> getCcInfos() {
148   - return ccInfos;
149   - }
150   -
151   - public void setCcInfos(Map<String, CarConfigInfo> ccInfos) {
152   - this.ccInfos = ccInfos;
153   - }
154   -
155   - public Map<Long, GuideboardInfo> getLpInfos() {
156   - return lpInfos;
157   - }
158   -
159   - public void setLpInfos(Map<Long, GuideboardInfo> lpInfos) {
160   - this.lpInfos = lpInfos;
161   - }
162   -
163   - public Map<Long, EmployeeConfigInfo> getEcInfos() {
164   - return ecInfos;
165   - }
166   -
167   - public void setEcInfos(Map<Long, EmployeeConfigInfo> ecInfos) {
168   - this.ecInfos = ecInfos;
169   - }
170   -}
  1 +package com.bsth.service.schedule.impl.plan.kBase3.validate.rule;
  2 +
  3 +import com.bsth.entity.schedule.CarConfigInfo;
  4 +import com.bsth.entity.schedule.EmployeeConfigInfo;
  5 +import com.bsth.entity.schedule.GuideboardInfo;
  6 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  7 +import org.springframework.util.CollectionUtils;
  8 +
  9 +import java.util.*;
  10 +
  11 +/**
  12 + * 聚合输入的待判定数据。
  13 + */
  14 +public class WrapInput {
  15 + /** 线路Id */
  16 + private Integer xlId;
  17 + /** 车辆自编号 */
  18 + private String clZbh;
  19 + /** 路牌id列表 */
  20 + private String lpIds;
  21 + /** 路牌名字列表 */
  22 + private String lpNames;
  23 + /** 人员配置列表 */
  24 + private String ecIds;
  25 + /** 人员搭班编码列表 */
  26 + private String ecDbbms;
  27 + /** 路牌循环起始索引 */
  28 + private Integer lpStartIndex;
  29 + /** 人员循环起始索引 */
  30 + private Integer ecStartIndex;
  31 + /** 规则id */
  32 + private Long ruleId;
  33 + /** 启用日期 */
  34 + private Date qyrq;
  35 +
  36 + private Map<String, CarConfigInfo> ccInfos = new HashMap<>();
  37 + private Map<Long, GuideboardInfo> lpInfos = new HashMap<>();
  38 + private Map<Long, EmployeeConfigInfo> ecInfos = new HashMap<>();
  39 +
  40 + public WrapInput(ScheduleRule1Flat r,
  41 + Map<String, CarConfigInfo> cc,
  42 + Map<Long, GuideboardInfo> lp,
  43 + Map<Long, EmployeeConfigInfo> ec) {
  44 + this.xlId = r.getXl().getId();
  45 + this.clZbh = r.getCarConfigInfo().getCl().getInsideCode();
  46 + this.lpIds = r.getLpIds();
  47 + this.lpNames = r.getLpNames();
  48 + this.ecIds = r.getRyConfigIds();
  49 + this.ecDbbms = r.getRyDbbms();
  50 + this.lpStartIndex = r.getLpStart();
  51 + this.ecStartIndex = r.getRyStart();
  52 + this.ruleId = r.getId();
  53 + this.qyrq = r.getQyrq();
  54 +
  55 + if (!CollectionUtils.isEmpty(cc)) {
  56 + this.ccInfos.putAll(cc);
  57 + }
  58 + if (!CollectionUtils.isEmpty(lp)) {
  59 + this.lpInfos.putAll(lp);
  60 + }
  61 + if (!CollectionUtils.isEmpty(ec)) {
  62 + this.ecInfos.putAll(ec);
  63 + }
  64 +
  65 + }
  66 +
  67 + public Integer getXlId() {
  68 + return xlId;
  69 + }
  70 +
  71 + public void setXlId(Integer xlId) {
  72 + this.xlId = xlId;
  73 + }
  74 +
  75 + public String getClZbh() {
  76 + return clZbh;
  77 + }
  78 +
  79 + public void setClZbh(String clZbh) {
  80 + this.clZbh = clZbh;
  81 + }
  82 +
  83 + public String getLpIds() {
  84 + return lpIds;
  85 + }
  86 +
  87 + public void setLpIds(String lpIds) {
  88 + this.lpIds = lpIds;
  89 + }
  90 +
  91 + public String getLpNames() {
  92 + return lpNames;
  93 + }
  94 +
  95 + public void setLpNames(String lpNames) {
  96 + this.lpNames = lpNames;
  97 + }
  98 +
  99 + public String getEcIds() {
  100 + return ecIds;
  101 + }
  102 +
  103 + public void setEcIds(String ecIds) {
  104 + this.ecIds = ecIds;
  105 + }
  106 +
  107 + public String getEcDbbms() {
  108 + return ecDbbms;
  109 + }
  110 +
  111 + public void setEcDbbms(String ecDbbms) {
  112 + this.ecDbbms = ecDbbms;
  113 + }
  114 +
  115 + public Integer getLpStartIndex() {
  116 + return lpStartIndex;
  117 + }
  118 +
  119 + public void setLpStartIndex(Integer lpStartIndex) {
  120 + this.lpStartIndex = lpStartIndex;
  121 + }
  122 +
  123 + public Integer getEcStartIndex() {
  124 + return ecStartIndex;
  125 + }
  126 +
  127 + public void setEcStartIndex(Integer ecStartIndex) {
  128 + this.ecStartIndex = ecStartIndex;
  129 + }
  130 +
  131 + public Long getRuleId() {
  132 + return ruleId;
  133 + }
  134 +
  135 + public void setRuleId(Long ruleId) {
  136 + this.ruleId = ruleId;
  137 + }
  138 +
  139 + public Date getQyrq() {
  140 + return qyrq;
  141 + }
  142 +
  143 + public void setQyrq(Date qyrq) {
  144 + this.qyrq = qyrq;
  145 + }
  146 +
  147 + public Map<String, CarConfigInfo> getCcInfos() {
  148 + return ccInfos;
  149 + }
  150 +
  151 + public void setCcInfos(Map<String, CarConfigInfo> ccInfos) {
  152 + this.ccInfos = ccInfos;
  153 + }
  154 +
  155 + public Map<Long, GuideboardInfo> getLpInfos() {
  156 + return lpInfos;
  157 + }
  158 +
  159 + public void setLpInfos(Map<Long, GuideboardInfo> lpInfos) {
  160 + this.lpInfos = lpInfos;
  161 + }
  162 +
  163 + public Map<Long, EmployeeConfigInfo> getEcInfos() {
  164 + return ecInfos;
  165 + }
  166 +
  167 + public void setEcInfos(Map<Long, EmployeeConfigInfo> ecInfos) {
  168 + this.ecInfos = ecInfos;
  169 + }
  170 +}
... ...
src/main/resources/application-dev.properties
... ... @@ -31,4 +31,4 @@ http.gps.real.cache.url= http://10.10.150.24:12580/realGps/all
31 31 ## gateway real data
32 32 http.gps.real.url= http://114.80.178.12:18080/transport_server/rtgps/
33 33 ## gateway send directive
34   -http.send.directive = http://192.168.168.201:9090/transport_server/message/
  34 +http.send.directive = http://192.168.168.201:9090/transport_server/message/
35 35 \ No newline at end of file
... ...
src/main/resources/datatools/ktrs/carsDataOutput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x51fa;</name>
5   - <description>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x51fa;</description>
6   - <extended_description>&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;</extended_description>
7   - <trans_version/>
8   - <trans_type>Normal</trans_type>
9   - <trans_status>0</trans_status>
10   - <directory>&#x2f;</directory>
11   - <parameters>
12   - <parameter>
13   - <name>QUERY</name>
14   - <default_value/>
15   - <description>&#x67e5;&#x8be2;</description>
16   - </parameter>
17   - <parameter>
18   - <name>cgsbm_in</name>
19   - <default_value/>
20   - <description>&#x5206;&#x516c;&#x53f8;&#x7f16;&#x7801;</description>
21   - </parameter>
22   - <parameter>
23   - <name>filepath</name>
24   - <default_value>1&#x3d;1</default_value>
25   - <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
26   - </parameter>
27   - </parameters>
28   - <log>
29   -<trans-log-table><connection/>
30   -<schema/>
31   -<table/>
32   -<size_limit_lines/>
33   -<interval/>
34   -<timeout_days/>
35   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
36   -<perf-log-table><connection/>
37   -<schema/>
38   -<table/>
39   -<interval/>
40   -<timeout_days/>
41   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
42   -<channel-log-table><connection/>
43   -<schema/>
44   -<table/>
45   -<timeout_days/>
46   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
47   -<step-log-table><connection/>
48   -<schema/>
49   -<table/>
50   -<timeout_days/>
51   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
52   -<metrics-log-table><connection/>
53   -<schema/>
54   -<table/>
55   -<timeout_days/>
56   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
57   - </log>
58   - <maxdate>
59   - <connection/>
60   - <table/>
61   - <field/>
62   - <offset>0.0</offset>
63   - <maxdiff>0.0</maxdiff>
64   - </maxdate>
65   - <size_rowset>10000</size_rowset>
66   - <sleep_time_empty>50</sleep_time_empty>
67   - <sleep_time_full>50</sleep_time_full>
68   - <unique_connections>N</unique_connections>
69   - <feedback_shown>Y</feedback_shown>
70   - <feedback_size>50000</feedback_size>
71   - <using_thread_priorities>Y</using_thread_priorities>
72   - <shared_objects_file/>
73   - <capture_step_performance>N</capture_step_performance>
74   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
75   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
76   - <dependencies>
77   - </dependencies>
78   - <partitionschemas>
79   - </partitionschemas>
80   - <slaveservers>
81   - </slaveservers>
82   - <clusterschemas>
83   - </clusterschemas>
84   - <created_user>-</created_user>
85   - <created_date>2016&#x2f;08&#x2f;05 16&#x3a;42&#x3a;22.753</created_date>
86   - <modified_user>-</modified_user>
87   - <modified_date>2016&#x2f;08&#x2f;05 16&#x3a;42&#x3a;22.753</modified_date>
88   - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
89   - <is_key_private>N</is_key_private>
90   - </info>
91   - <notepads>
92   - </notepads>
93   - <connection>
94   - <name>192.168.168.1_jwgl_dw</name>
95   - <server>192.168.168.1</server>
96   - <type>ORACLE</type>
97   - <access>Native</access>
98   - <database>orcl</database>
99   - <port>1521</port>
100   - <username>jwgl_dw</username>
101   - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
102   - <servername/>
103   - <data_tablespace/>
104   - <index_tablespace/>
105   - <attributes>
106   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
107   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
108   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
109   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
110   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
111   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
112   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
113   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
114   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
115   - </attributes>
116   - </connection>
117   - <connection>
118   - <name>bus_control_variable</name>
119   - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
120   - <type>MYSQL</type>
121   - <access>Native</access>
122   - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
123   - <port>3306</port>
124   - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
125   - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
126   - <servername/>
127   - <data_tablespace/>
128   - <index_tablespace/>
129   - <attributes>
130   - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
131   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
132   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
133   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
134   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
135   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
136   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
137   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
138   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
139   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
140   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
141   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
142   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
143   - </attributes>
144   - </connection>
145   - <connection>
146   - <name>bus_control_&#x516c;&#x53f8;_201</name>
147   - <server>localhost</server>
148   - <type>MYSQL</type>
149   - <access>Native</access>
150   - <database>control</database>
151   - <port>3306</port>
152   - <username>root</username>
153   - <password>Encrypted </password>
154   - <servername/>
155   - <data_tablespace/>
156   - <index_tablespace/>
157   - <attributes>
158   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
159   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
160   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
161   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
162   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
163   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
164   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
165   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
166   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
167   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
168   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
169   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
170   - </attributes>
171   - </connection>
172   - <connection>
173   - <name>bus_control_&#x672c;&#x673a;</name>
174   - <server>localhost</server>
175   - <type>MYSQL</type>
176   - <access>Native</access>
177   - <database>control</database>
178   - <port>3306</port>
179   - <username>root</username>
180   - <password>Encrypted </password>
181   - <servername/>
182   - <data_tablespace/>
183   - <index_tablespace/>
184   - <attributes>
185   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
186   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
187   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
188   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
189   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
190   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
191   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
192   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
193   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
194   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
195   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
196   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
197   - </attributes>
198   - </connection>
199   - <connection>
200   - <name>JGJW_VM</name>
201   - <server>192.168.198.240</server>
202   - <type>ORACLE</type>
203   - <access>Native</access>
204   - <database>orcl</database>
205   - <port>1521</port>
206   - <username>jwgl</username>
207   - <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password>
208   - <servername/>
209   - <data_tablespace/>
210   - <index_tablespace/>
211   - <attributes>
212   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
213   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
214   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
215   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
216   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
217   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
218   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
219   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
220   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
221   - </attributes>
222   - </connection>
223   - <connection>
224   - <name>NHJW_VM</name>
225   - <server>192.168.198.240</server>
226   - <type>ORACLE</type>
227   - <access>Native</access>
228   - <database>orcl</database>
229   - <port>1521</port>
230   - <username>nhjw</username>
231   - <password>Encrypted 2be98afc86aa7f2e4cb79ce10d09aa5cd</password>
232   - <servername/>
233   - <data_tablespace/>
234   - <index_tablespace/>
235   - <attributes>
236   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
237   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
238   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
239   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
240   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
241   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
242   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
243   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
244   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
245   - </attributes>
246   - </connection>
247   - <connection>
248   - <name>PDGJ_VM</name>
249   - <server>192.168.198.240</server>
250   - <type>ORACLE</type>
251   - <access>Native</access>
252   - <database>orcl</database>
253   - <port>1521</port>
254   - <username>pdgj</username>
255   - <password>Encrypted 2be98afc86aa7f2e4cb79ce10ce96a8d0</password>
256   - <servername/>
257   - <data_tablespace/>
258   - <index_tablespace/>
259   - <attributes>
260   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
261   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
262   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
263   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
264   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
265   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
266   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
267   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
268   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
269   - </attributes>
270   - </connection>
271   - <connection>
272   - <name>SNJW_VM</name>
273   - <server>192.168.198.240</server>
274   - <type>ORACLE</type>
275   - <access>Native</access>
276   - <database>orcl</database>
277   - <port>1521</port>
278   - <username>snjw</username>
279   - <password>Encrypted 2be98afc86aa7f2e4cb79ce10cd9ca5cd</password>
280   - <servername/>
281   - <data_tablespace/>
282   - <index_tablespace/>
283   - <attributes>
284   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
285   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
286   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
287   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
288   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
289   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
290   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
291   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
292   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
293   - </attributes>
294   - </connection>
295   - <connection>
296   - <name>xlab_mysql_youle</name>
297   - <server>101.231.124.8</server>
298   - <type>MYSQL</type>
299   - <access>Native</access>
300   - <database>xlab_youle</database>
301   - <port>45687</port>
302   - <username>xlab-youle</username>
303   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
304   - <servername/>
305   - <data_tablespace/>
306   - <index_tablespace/>
307   - <attributes>
308   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
309   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
310   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
311   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
312   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
313   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
314   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
315   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
316   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
317   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
318   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
319   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
320   - </attributes>
321   - </connection>
322   - <connection>
323   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
324   - <server>localhost</server>
325   - <type>MYSQL</type>
326   - <access>Native</access>
327   - <database>xlab_youle</database>
328   - <port>3306</port>
329   - <username>root</username>
330   - <password>Encrypted </password>
331   - <servername/>
332   - <data_tablespace/>
333   - <index_tablespace/>
334   - <attributes>
335   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
336   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
337   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
338   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
339   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
340   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
341   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
342   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
343   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
344   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
345   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
346   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
347   - </attributes>
348   - </connection>
349   - <connection>
350   - <name>xlab_youle</name>
351   - <server/>
352   - <type>MYSQL</type>
353   - <access>JNDI</access>
354   - <database>xlab_youle</database>
355   - <port>1521</port>
356   - <username/>
357   - <password>Encrypted </password>
358   - <servername/>
359   - <data_tablespace/>
360   - <index_tablespace/>
361   - <attributes>
362   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
363   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
364   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
365   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
366   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
367   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
368   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
369   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
370   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
371   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
372   - </attributes>
373   - </connection>
374   - <connection>
375   - <name>YGJW_VM</name>
376   - <server>192.168.198.240</server>
377   - <type>ORACLE</type>
378   - <access>Native</access>
379   - <database>orcl</database>
380   - <port>1521</port>
381   - <username>ygjw</username>
382   - <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password>
383   - <servername/>
384   - <data_tablespace/>
385   - <index_tablespace/>
386   - <attributes>
387   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
388   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
389   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
390   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
391   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
392   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
393   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
394   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
395   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
396   - </attributes>
397   - </connection>
398   - <connection>
399   - <name>&#x516c;&#x53f8;jgjw</name>
400   - <server>192.168.168.1</server>
401   - <type>ORACLE</type>
402   - <access>Native</access>
403   - <database>orcl</database>
404   - <port>1521</port>
405   - <username>jwgl</username>
406   - <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password>
407   - <servername/>
408   - <data_tablespace/>
409   - <index_tablespace/>
410   - <attributes>
411   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
412   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
413   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
414   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
415   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
416   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
417   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
418   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
419   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
420   - </attributes>
421   - </connection>
422   - <connection>
423   - <name>&#x516c;&#x53f8;snjw</name>
424   - <server>192.168.168.1</server>
425   - <type>ORACLE</type>
426   - <access>Native</access>
427   - <database>orcl</database>
428   - <port>1521</port>
429   - <username>snjw</username>
430   - <password>Encrypted 2be98afc86aa7f2e4cb79ce10cd9ca5cd</password>
431   - <servername/>
432   - <data_tablespace/>
433   - <index_tablespace/>
434   - <attributes>
435   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
436   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
437   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
438   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
439   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
440   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
441   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
442   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
443   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
444   - </attributes>
445   - </connection>
446   - <connection>
447   - <name>&#x516c;&#x53f8;ygjw</name>
448   - <server>192.168.168.1</server>
449   - <type>ORACLE</type>
450   - <access>Native</access>
451   - <database>orcl</database>
452   - <port>1521</port>
453   - <username>ygjw</username>
454   - <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password>
455   - <servername/>
456   - <data_tablespace/>
457   - <index_tablespace/>
458   - <attributes>
459   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
460   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
461   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
462   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
463   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
464   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
465   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
466   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
467   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
468   - </attributes>
469   - </connection>
470   - <order>
471   - <hop> <from>&#x516c;&#x53f8;&#x67e5;&#x8be2;</from><to>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
472   - <hop> <from>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
473   - <hop> <from>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</from><to>&#x516c;&#x53f8;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
474   - <hop> <from>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x8868;&#x8f93;&#x5165;</from><to>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</to><enabled>Y</enabled> </hop>
475   - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x662f;&#x5426;&#x7535;&#x8f66;</to><enabled>Y</enabled> </hop>
476   - <hop> <from>&#x662f;&#x5426;&#x7535;&#x8f66;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
477   - </order>
478   - <step>
479   - <name>Excel&#x8f93;&#x51fa;</name>
480   - <type>ExcelOutput</type>
481   - <description/>
482   - <distribute>Y</distribute>
483   - <custom_distribution/>
484   - <copies>1</copies>
485   - <partitioning>
486   - <method>none</method>
487   - <schema_name/>
488   - </partitioning>
489   - <header>Y</header>
490   - <footer>N</footer>
491   - <encoding/>
492   - <append>N</append>
493   - <add_to_result_filenames>Y</add_to_result_filenames>
494   - <file>
495   - <name>&#x24;&#x7b;filepath&#x7d;</name>
496   - <extention>xls</extention>
497   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
498   - <create_parent_folder>N</create_parent_folder>
499   - <split>N</split>
500   - <add_date>N</add_date>
501   - <add_time>N</add_time>
502   - <SpecifyFormat>N</SpecifyFormat>
503   - <date_time_format>yyyyMMddHHmmss</date_time_format>
504   - <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
505   - <autosizecolums>N</autosizecolums>
506   - <nullisblank>N</nullisblank>
507   - <protect_sheet>N</protect_sheet>
508   - <password>Encrypted </password>
509   - <splitevery>0</splitevery>
510   - <usetempfiles>N</usetempfiles>
511   - <tempdirectory/>
512   - </file>
513   - <template>
514   - <enabled>N</enabled>
515   - <append>N</append>
516   - <filename>template.xls</filename>
517   - </template>
518   - <fields>
519   - <field>
520   - <name>&#x8f66;&#x724c;&#x53f7;</name>
521   - <type>String</type>
522   - <format/>
523   - </field>
524   - <field>
525   - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
526   - <type>String</type>
527   - <format/>
528   - </field>
529   - <field>
530   - <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
531   - <type>String</type>
532   - <format/>
533   - </field>
534   - <field>
535   - <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
536   - <type>String</type>
537   - <format/>
538   - </field>
539   - <field>
540   - <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
541   - <type>String</type>
542   - <format/>
543   - </field>
544   - <field>
545   - <name>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</name>
546   - <type>String</type>
547   - <format/>
548   - </field>
549   - <field>
550   - <name>&#x662f;&#x5426;&#x7535;&#x8f66;</name>
551   - <type>String</type>
552   - <format/>
553   - </field>
554   - </fields>
555   - <custom>
556   - <header_font_name>arial</header_font_name>
557   - <header_font_size>10</header_font_size>
558   - <header_font_bold>N</header_font_bold>
559   - <header_font_italic>N</header_font_italic>
560   - <header_font_underline>no</header_font_underline>
561   - <header_font_orientation>horizontal</header_font_orientation>
562   - <header_font_color>black</header_font_color>
563   - <header_background_color>none</header_background_color>
564   - <header_row_height>255</header_row_height>
565   - <header_alignment>left</header_alignment>
566   - <header_image/>
567   - <row_font_name>arial</row_font_name>
568   - <row_font_size>10</row_font_size>
569   - <row_font_color>black</row_font_color>
570   - <row_background_color>none</row_background_color>
571   - </custom>
572   - <cluster_schema/>
573   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
574   - <xloc>498</xloc>
575   - <yloc>348</yloc>
576   - <draw>Y</draw>
577   - </GUI>
578   - </step>
579   -
580   - <step>
581   - <name>&#x516c;&#x53f8;&#x67e5;&#x8be2;</name>
582   - <type>DBLookup</type>
583   - <description/>
584   - <distribute>Y</distribute>
585   - <custom_distribution/>
586   - <copies>1</copies>
587   - <partitioning>
588   - <method>none</method>
589   - <schema_name/>
590   - </partitioning>
591   - <connection>bus_control_variable</connection>
592   - <cache>N</cache>
593   - <cache_load_all>N</cache_load_all>
594   - <cache_size>0</cache_size>
595   - <lookup>
596   - <schema/>
597   - <table>bsth_c_business</table>
598   - <orderby/>
599   - <fail_on_multiple>N</fail_on_multiple>
600   - <eat_row_on_failure>N</eat_row_on_failure>
601   - <key>
602   - <name>up_code</name>
603   - <field>up_code</field>
604   - <condition>&#x3d;</condition>
605   - <name2/>
606   - </key>
607   - <key>
608   - <name>business_code</name>
609   - <field>business_code</field>
610   - <condition>&#x3d;</condition>
611   - <name2/>
612   - </key>
613   - <value>
614   - <name>business_name</name>
615   - <rename>gs</rename>
616   - <default/>
617   - <type>String</type>
618   - </value>
619   - </lookup>
620   - <cluster_schema/>
621   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
622   - <xloc>364</xloc>
623   - <yloc>60</yloc>
624   - <draw>Y</draw>
625   - </GUI>
626   - </step>
627   -
628   - <step>
629   - <name>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</name>
630   - <type>DBLookup</type>
631   - <description/>
632   - <distribute>Y</distribute>
633   - <custom_distribution/>
634   - <copies>1</copies>
635   - <partitioning>
636   - <method>none</method>
637   - <schema_name/>
638   - </partitioning>
639   - <connection>bus_control_variable</connection>
640   - <cache>N</cache>
641   - <cache_load_all>N</cache_load_all>
642   - <cache_size>0</cache_size>
643   - <lookup>
644   - <schema/>
645   - <table>bsth_c_business</table>
646   - <orderby/>
647   - <fail_on_multiple>N</fail_on_multiple>
648   - <eat_row_on_failure>N</eat_row_on_failure>
649   - <key>
650   - <name>business_code</name>
651   - <field>up_code</field>
652   - <condition>&#x3d;</condition>
653   - <name2/>
654   - </key>
655   - <key>
656   - <name>branche_company_code</name>
657   - <field>business_code</field>
658   - <condition>&#x3d;</condition>
659   - <name2/>
660   - </key>
661   - <value>
662   - <name>business_name</name>
663   - <rename>fgs</rename>
664   - <default/>
665   - <type>String</type>
666   - </value>
667   - </lookup>
668   - <cluster_schema/>
669   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
670   - <xloc>491</xloc>
671   - <yloc>60</yloc>
672   - <draw>Y</draw>
673   - </GUI>
674   - </step>
675   -
676   - <step>
677   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
678   - <type>SelectValues</type>
679   - <description/>
680   - <distribute>N</distribute>
681   - <custom_distribution/>
682   - <copies>1</copies>
683   - <partitioning>
684   - <method>none</method>
685   - <schema_name/>
686   - </partitioning>
687   - <fields> <field> <name>car_plate</name>
688   - <rename>&#x8f66;&#x724c;&#x53f7;</rename>
689   - <length>-2</length>
690   - <precision>-2</precision>
691   - </field> <field> <name>inside_code</name>
692   - <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>
693   - <length>-2</length>
694   - <precision>-2</precision>
695   - </field> <field> <name>gs</name>
696   - <rename>&#x6240;&#x5c5e;&#x516c;&#x53f8;</rename>
697   - <length>-2</length>
698   - <precision>-2</precision>
699   - </field> <field> <name>fgs</name>
700   - <rename>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</rename>
701   - <length>-2</length>
702   - <precision>-2</precision>
703   - </field> <field> <name>supplier_name</name>
704   - <rename>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</rename>
705   - <length>-2</length>
706   - <precision>-2</precision>
707   - </field> <field> <name>equipment_code</name>
708   - <rename>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</rename>
709   - <length>-2</length>
710   - <precision>-2</precision>
711   - </field> <field> <name>sfdc</name>
712   - <rename>sfdc_cal</rename>
713   - <length>-2</length>
714   - <precision>-2</precision>
715   - </field> <select_unspecified>N</select_unspecified>
716   - </fields> <cluster_schema/>
717   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
718   - <xloc>495</xloc>
719   - <yloc>173</yloc>
720   - <draw>Y</draw>
721   - </GUI>
722   - </step>
723   -
724   - <step>
725   - <name>&#x662f;&#x5426;&#x7535;&#x8f66;</name>
726   - <type>ScriptValueMod</type>
727   - <description/>
728   - <distribute>Y</distribute>
729   - <custom_distribution/>
730   - <copies>1</copies>
731   - <partitioning>
732   - <method>none</method>
733   - <schema_name/>
734   - </partitioning>
735   - <compatible>N</compatible>
736   - <optimizationLevel>9</optimizationLevel>
737   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
738   - <jsScript_name>Script 1</jsScript_name>
739   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var &#x662f;&#x5426;&#x7535;&#x8f66; &#x3d; &#x22;&#x5426;&#x22;&#x3b;&#xa;&#xa;if&#x28;sfdc_cal &#x3d;&#x3d; 0&#x29; &#x7b;&#xa; &#x662f;&#x5426;&#x7535;&#x8f66; &#x3d; &#x22;&#x5426;&#x22;&#x3b;&#xa;&#x7d; else if &#x28;sfdc_cal &#x3d;&#x3d; 1&#x29; &#x7b;&#xa; &#x662f;&#x5426;&#x7535;&#x8f66; &#x3d; &#x22;&#x662f;&#x22;&#x3b;&#xa;&#x7d; else &#x7b;&#xa; &#x662f;&#x5426;&#x7535;&#x8f66; &#x3d; &#x22;&#x5426;&#x22;&#x3b;&#xa;&#x7d;&#xa;</jsScript_script>
740   - </jsScript> </jsScripts> <fields> <field> <name>&#x662f;&#x5426;&#x7535;&#x8f66;</name>
741   - <rename>&#x662f;&#x5426;&#x7535;&#x8f66;</rename>
742   - <type>String</type>
743   - <length>-1</length>
744   - <precision>-1</precision>
745   - <replace>N</replace>
746   - </field> </fields> <cluster_schema/>
747   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
748   - <xloc>695</xloc>
749   - <yloc>173</yloc>
750   - <draw>Y</draw>
751   - </GUI>
752   - </step>
753   -
754   - <step>
755   - <name>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</name>
756   - <type>ScriptValueMod</type>
757   - <description/>
758   - <distribute>Y</distribute>
759   - <custom_distribution/>
760   - <copies>1</copies>
761   - <partitioning>
762   - <method>none</method>
763   - <schema_name/>
764   - </partitioning>
765   - <compatible>N</compatible>
766   - <optimizationLevel>9</optimizationLevel>
767   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
768   - <jsScript_name>Script 1</jsScript_name>
769   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var up_code &#x3d; &#x27;88&#x27;&#x3b;</jsScript_script>
770   - </jsScript> </jsScripts> <fields> <field> <name>up_code</name>
771   - <rename>up_code</rename>
772   - <type>String</type>
773   - <length>-1</length>
774   - <precision>-1</precision>
775   - <replace>N</replace>
776   - </field> </fields> <cluster_schema/>
777   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
778   - <xloc>227</xloc>
779   - <yloc>59</yloc>
780   - <draw>Y</draw>
781   - </GUI>
782   - </step>
783   -
784   - <step>
785   - <name>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x8868;&#x8f93;&#x5165;</name>
786   - <type>TableInput</type>
787   - <description/>
788   - <distribute>Y</distribute>
789   - <custom_distribution/>
790   - <copies>1</copies>
791   - <partitioning>
792   - <method>none</method>
793   - <schema_name/>
794   - </partitioning>
795   - <connection>bus_control_variable</connection>
796   - <sql>SELECT &#x2a; FROM bsth_c_cars&#xa;where &#x24;&#x7b;QUERY&#x7d;</sql>
797   - <limit>0</limit>
798   - <lookup/>
799   - <execute_each_row>N</execute_each_row>
800   - <variables_active>Y</variables_active>
801   - <lazy_conversion_active>N</lazy_conversion_active>
802   - <cluster_schema/>
803   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
804   - <xloc>88</xloc>
805   - <yloc>59</yloc>
806   - <draw>Y</draw>
807   - </GUI>
808   - </step>
809   -
810   - <step_error_handling>
811   - </step_error_handling>
812   - <slave-step-copy-partition-distribution>
813   -</slave-step-copy-partition-distribution>
814   - <slave_transformation>N</slave_transformation>
815   -
816   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x51fa;</name>
  5 + <description>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x51fa;</description>
  6 + <extended_description>&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>QUERY</name>
  14 + <default_value/>
  15 + <description>&#x67e5;&#x8be2;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>cgsbm_in</name>
  19 + <default_value/>
  20 + <description>&#x5206;&#x516c;&#x53f8;&#x7f16;&#x7801;</description>
  21 + </parameter>
  22 + <parameter>
  23 + <name>filepath</name>
  24 + <default_value>1&#x3d;1</default_value>
  25 + <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
  26 + </parameter>
  27 + </parameters>
  28 + <log>
  29 +<trans-log-table><connection/>
  30 +<schema/>
  31 +<table/>
  32 +<size_limit_lines/>
  33 +<interval/>
  34 +<timeout_days/>
  35 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  36 +<perf-log-table><connection/>
  37 +<schema/>
  38 +<table/>
  39 +<interval/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  42 +<channel-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  47 +<step-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  52 +<metrics-log-table><connection/>
  53 +<schema/>
  54 +<table/>
  55 +<timeout_days/>
  56 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  57 + </log>
  58 + <maxdate>
  59 + <connection/>
  60 + <table/>
  61 + <field/>
  62 + <offset>0.0</offset>
  63 + <maxdiff>0.0</maxdiff>
  64 + </maxdate>
  65 + <size_rowset>10000</size_rowset>
  66 + <sleep_time_empty>50</sleep_time_empty>
  67 + <sleep_time_full>50</sleep_time_full>
  68 + <unique_connections>N</unique_connections>
  69 + <feedback_shown>Y</feedback_shown>
  70 + <feedback_size>50000</feedback_size>
  71 + <using_thread_priorities>Y</using_thread_priorities>
  72 + <shared_objects_file/>
  73 + <capture_step_performance>N</capture_step_performance>
  74 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  75 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  76 + <dependencies>
  77 + </dependencies>
  78 + <partitionschemas>
  79 + </partitionschemas>
  80 + <slaveservers>
  81 + </slaveservers>
  82 + <clusterschemas>
  83 + </clusterschemas>
  84 + <created_user>-</created_user>
  85 + <created_date>2016&#x2f;08&#x2f;05 16&#x3a;42&#x3a;22.753</created_date>
  86 + <modified_user>-</modified_user>
  87 + <modified_date>2016&#x2f;08&#x2f;05 16&#x3a;42&#x3a;22.753</modified_date>
  88 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  89 + <is_key_private>N</is_key_private>
  90 + </info>
  91 + <notepads>
  92 + </notepads>
  93 + <connection>
  94 + <name>192.168.168.1_jwgl_dw</name>
  95 + <server>192.168.168.1</server>
  96 + <type>ORACLE</type>
  97 + <access>Native</access>
  98 + <database>orcl</database>
  99 + <port>1521</port>
  100 + <username>jwgl_dw</username>
  101 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  102 + <servername/>
  103 + <data_tablespace/>
  104 + <index_tablespace/>
  105 + <attributes>
  106 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  107 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  108 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  109 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  110 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  111 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  112 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  113 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  114 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  115 + </attributes>
  116 + </connection>
  117 + <connection>
  118 + <name>bus_control_variable</name>
  119 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  120 + <type>MYSQL</type>
  121 + <access>Native</access>
  122 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  123 + <port>3306</port>
  124 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  125 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  126 + <servername/>
  127 + <data_tablespace/>
  128 + <index_tablespace/>
  129 + <attributes>
  130 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  131 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  132 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  133 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  134 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  135 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  136 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  137 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  138 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  139 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  140 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  141 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  142 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  143 + </attributes>
  144 + </connection>
  145 + <connection>
  146 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  147 + <server>localhost</server>
  148 + <type>MYSQL</type>
  149 + <access>Native</access>
  150 + <database>control</database>
  151 + <port>3306</port>
  152 + <username>root</username>
  153 + <password>Encrypted </password>
  154 + <servername/>
  155 + <data_tablespace/>
  156 + <index_tablespace/>
  157 + <attributes>
  158 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  159 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  160 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  161 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  162 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  163 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  164 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  165 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  166 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  167 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  168 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  169 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  170 + </attributes>
  171 + </connection>
  172 + <connection>
  173 + <name>bus_control_&#x672c;&#x673a;</name>
  174 + <server>localhost</server>
  175 + <type>MYSQL</type>
  176 + <access>Native</access>
  177 + <database>control</database>
  178 + <port>3306</port>
  179 + <username>root</username>
  180 + <password>Encrypted </password>
  181 + <servername/>
  182 + <data_tablespace/>
  183 + <index_tablespace/>
  184 + <attributes>
  185 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  186 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  187 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  188 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  189 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  190 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  191 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  192 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  193 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  194 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  195 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  196 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  197 + </attributes>
  198 + </connection>
  199 + <connection>
  200 + <name>JGJW_VM</name>
  201 + <server>192.168.198.240</server>
  202 + <type>ORACLE</type>
  203 + <access>Native</access>
  204 + <database>orcl</database>
  205 + <port>1521</port>
  206 + <username>jwgl</username>
  207 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password>
  208 + <servername/>
  209 + <data_tablespace/>
  210 + <index_tablespace/>
  211 + <attributes>
  212 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  213 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  214 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  215 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  216 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  217 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  218 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  219 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  220 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  221 + </attributes>
  222 + </connection>
  223 + <connection>
  224 + <name>NHJW_VM</name>
  225 + <server>192.168.198.240</server>
  226 + <type>ORACLE</type>
  227 + <access>Native</access>
  228 + <database>orcl</database>
  229 + <port>1521</port>
  230 + <username>nhjw</username>
  231 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d09aa5cd</password>
  232 + <servername/>
  233 + <data_tablespace/>
  234 + <index_tablespace/>
  235 + <attributes>
  236 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  239 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  240 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  241 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  242 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  243 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  244 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  245 + </attributes>
  246 + </connection>
  247 + <connection>
  248 + <name>PDGJ_VM</name>
  249 + <server>192.168.198.240</server>
  250 + <type>ORACLE</type>
  251 + <access>Native</access>
  252 + <database>orcl</database>
  253 + <port>1521</port>
  254 + <username>pdgj</username>
  255 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10ce96a8d0</password>
  256 + <servername/>
  257 + <data_tablespace/>
  258 + <index_tablespace/>
  259 + <attributes>
  260 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  261 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  263 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  264 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  265 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  266 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  267 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  268 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  269 + </attributes>
  270 + </connection>
  271 + <connection>
  272 + <name>SNJW_VM</name>
  273 + <server>192.168.198.240</server>
  274 + <type>ORACLE</type>
  275 + <access>Native</access>
  276 + <database>orcl</database>
  277 + <port>1521</port>
  278 + <username>snjw</username>
  279 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10cd9ca5cd</password>
  280 + <servername/>
  281 + <data_tablespace/>
  282 + <index_tablespace/>
  283 + <attributes>
  284 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  285 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  286 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  287 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  288 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  289 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  290 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  291 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  292 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  293 + </attributes>
  294 + </connection>
  295 + <connection>
  296 + <name>xlab_mysql_youle</name>
  297 + <server>101.231.124.8</server>
  298 + <type>MYSQL</type>
  299 + <access>Native</access>
  300 + <database>xlab_youle</database>
  301 + <port>45687</port>
  302 + <username>xlab-youle</username>
  303 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  304 + <servername/>
  305 + <data_tablespace/>
  306 + <index_tablespace/>
  307 + <attributes>
  308 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  309 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  310 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  311 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  312 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  313 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  314 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  315 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  316 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  317 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  318 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  319 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  320 + </attributes>
  321 + </connection>
  322 + <connection>
  323 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  324 + <server>localhost</server>
  325 + <type>MYSQL</type>
  326 + <access>Native</access>
  327 + <database>xlab_youle</database>
  328 + <port>3306</port>
  329 + <username>root</username>
  330 + <password>Encrypted </password>
  331 + <servername/>
  332 + <data_tablespace/>
  333 + <index_tablespace/>
  334 + <attributes>
  335 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  336 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  337 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  338 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  339 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  340 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  341 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  342 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  343 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  344 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  345 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  346 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  347 + </attributes>
  348 + </connection>
  349 + <connection>
  350 + <name>xlab_youle</name>
  351 + <server/>
  352 + <type>MYSQL</type>
  353 + <access>JNDI</access>
  354 + <database>xlab_youle</database>
  355 + <port>1521</port>
  356 + <username/>
  357 + <password>Encrypted </password>
  358 + <servername/>
  359 + <data_tablespace/>
  360 + <index_tablespace/>
  361 + <attributes>
  362 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  363 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  364 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  365 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  366 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  367 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  368 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  369 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  370 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  371 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  372 + </attributes>
  373 + </connection>
  374 + <connection>
  375 + <name>YGJW_VM</name>
  376 + <server>192.168.198.240</server>
  377 + <type>ORACLE</type>
  378 + <access>Native</access>
  379 + <database>orcl</database>
  380 + <port>1521</port>
  381 + <username>ygjw</username>
  382 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password>
  383 + <servername/>
  384 + <data_tablespace/>
  385 + <index_tablespace/>
  386 + <attributes>
  387 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  388 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  389 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  390 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  391 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  392 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  393 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  394 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  395 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  396 + </attributes>
  397 + </connection>
  398 + <connection>
  399 + <name>&#x516c;&#x53f8;jgjw</name>
  400 + <server>192.168.168.1</server>
  401 + <type>ORACLE</type>
  402 + <access>Native</access>
  403 + <database>orcl</database>
  404 + <port>1521</port>
  405 + <username>jwgl</username>
  406 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password>
  407 + <servername/>
  408 + <data_tablespace/>
  409 + <index_tablespace/>
  410 + <attributes>
  411 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  412 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  413 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  414 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  415 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  416 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  417 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  418 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  419 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  420 + </attributes>
  421 + </connection>
  422 + <connection>
  423 + <name>&#x516c;&#x53f8;snjw</name>
  424 + <server>192.168.168.1</server>
  425 + <type>ORACLE</type>
  426 + <access>Native</access>
  427 + <database>orcl</database>
  428 + <port>1521</port>
  429 + <username>snjw</username>
  430 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10cd9ca5cd</password>
  431 + <servername/>
  432 + <data_tablespace/>
  433 + <index_tablespace/>
  434 + <attributes>
  435 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  436 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  437 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  438 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  439 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  440 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  441 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  442 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  443 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  444 + </attributes>
  445 + </connection>
  446 + <connection>
  447 + <name>&#x516c;&#x53f8;ygjw</name>
  448 + <server>192.168.168.1</server>
  449 + <type>ORACLE</type>
  450 + <access>Native</access>
  451 + <database>orcl</database>
  452 + <port>1521</port>
  453 + <username>ygjw</username>
  454 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password>
  455 + <servername/>
  456 + <data_tablespace/>
  457 + <index_tablespace/>
  458 + <attributes>
  459 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  460 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  461 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  462 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  463 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  464 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  465 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  466 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  467 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  468 + </attributes>
  469 + </connection>
  470 + <order>
  471 + <hop> <from>&#x516c;&#x53f8;&#x67e5;&#x8be2;</from><to>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  472 + <hop> <from>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  473 + <hop> <from>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</from><to>&#x516c;&#x53f8;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  474 + <hop> <from>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x8868;&#x8f93;&#x5165;</from><to>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</to><enabled>Y</enabled> </hop>
  475 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x662f;&#x5426;&#x7535;&#x8f66;</to><enabled>Y</enabled> </hop>
  476 + <hop> <from>&#x662f;&#x5426;&#x7535;&#x8f66;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  477 + </order>
  478 + <step>
  479 + <name>Excel&#x8f93;&#x51fa;</name>
  480 + <type>ExcelOutput</type>
  481 + <description/>
  482 + <distribute>Y</distribute>
  483 + <custom_distribution/>
  484 + <copies>1</copies>
  485 + <partitioning>
  486 + <method>none</method>
  487 + <schema_name/>
  488 + </partitioning>
  489 + <header>Y</header>
  490 + <footer>N</footer>
  491 + <encoding/>
  492 + <append>N</append>
  493 + <add_to_result_filenames>Y</add_to_result_filenames>
  494 + <file>
  495 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  496 + <extention>xls</extention>
  497 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  498 + <create_parent_folder>N</create_parent_folder>
  499 + <split>N</split>
  500 + <add_date>N</add_date>
  501 + <add_time>N</add_time>
  502 + <SpecifyFormat>N</SpecifyFormat>
  503 + <date_time_format>yyyyMMddHHmmss</date_time_format>
  504 + <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
  505 + <autosizecolums>N</autosizecolums>
  506 + <nullisblank>N</nullisblank>
  507 + <protect_sheet>N</protect_sheet>
  508 + <password>Encrypted </password>
  509 + <splitevery>0</splitevery>
  510 + <usetempfiles>N</usetempfiles>
  511 + <tempdirectory/>
  512 + </file>
  513 + <template>
  514 + <enabled>N</enabled>
  515 + <append>N</append>
  516 + <filename>template.xls</filename>
  517 + </template>
  518 + <fields>
  519 + <field>
  520 + <name>&#x8f66;&#x724c;&#x53f7;</name>
  521 + <type>String</type>
  522 + <format/>
  523 + </field>
  524 + <field>
  525 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  526 + <type>String</type>
  527 + <format/>
  528 + </field>
  529 + <field>
  530 + <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
  531 + <type>String</type>
  532 + <format/>
  533 + </field>
  534 + <field>
  535 + <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
  536 + <type>String</type>
  537 + <format/>
  538 + </field>
  539 + <field>
  540 + <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
  541 + <type>String</type>
  542 + <format/>
  543 + </field>
  544 + <field>
  545 + <name>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</name>
  546 + <type>String</type>
  547 + <format/>
  548 + </field>
  549 + <field>
  550 + <name>&#x662f;&#x5426;&#x7535;&#x8f66;</name>
  551 + <type>String</type>
  552 + <format/>
  553 + </field>
  554 + </fields>
  555 + <custom>
  556 + <header_font_name>arial</header_font_name>
  557 + <header_font_size>10</header_font_size>
  558 + <header_font_bold>N</header_font_bold>
  559 + <header_font_italic>N</header_font_italic>
  560 + <header_font_underline>no</header_font_underline>
  561 + <header_font_orientation>horizontal</header_font_orientation>
  562 + <header_font_color>black</header_font_color>
  563 + <header_background_color>none</header_background_color>
  564 + <header_row_height>255</header_row_height>
  565 + <header_alignment>left</header_alignment>
  566 + <header_image/>
  567 + <row_font_name>arial</row_font_name>
  568 + <row_font_size>10</row_font_size>
  569 + <row_font_color>black</row_font_color>
  570 + <row_background_color>none</row_background_color>
  571 + </custom>
  572 + <cluster_schema/>
  573 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  574 + <xloc>498</xloc>
  575 + <yloc>348</yloc>
  576 + <draw>Y</draw>
  577 + </GUI>
  578 + </step>
  579 +
  580 + <step>
  581 + <name>&#x516c;&#x53f8;&#x67e5;&#x8be2;</name>
  582 + <type>DBLookup</type>
  583 + <description/>
  584 + <distribute>Y</distribute>
  585 + <custom_distribution/>
  586 + <copies>1</copies>
  587 + <partitioning>
  588 + <method>none</method>
  589 + <schema_name/>
  590 + </partitioning>
  591 + <connection>bus_control_variable</connection>
  592 + <cache>N</cache>
  593 + <cache_load_all>N</cache_load_all>
  594 + <cache_size>0</cache_size>
  595 + <lookup>
  596 + <schema/>
  597 + <table>bsth_c_business</table>
  598 + <orderby/>
  599 + <fail_on_multiple>N</fail_on_multiple>
  600 + <eat_row_on_failure>N</eat_row_on_failure>
  601 + <key>
  602 + <name>up_code</name>
  603 + <field>up_code</field>
  604 + <condition>&#x3d;</condition>
  605 + <name2/>
  606 + </key>
  607 + <key>
  608 + <name>business_code</name>
  609 + <field>business_code</field>
  610 + <condition>&#x3d;</condition>
  611 + <name2/>
  612 + </key>
  613 + <value>
  614 + <name>business_name</name>
  615 + <rename>gs</rename>
  616 + <default/>
  617 + <type>String</type>
  618 + </value>
  619 + </lookup>
  620 + <cluster_schema/>
  621 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  622 + <xloc>364</xloc>
  623 + <yloc>60</yloc>
  624 + <draw>Y</draw>
  625 + </GUI>
  626 + </step>
  627 +
  628 + <step>
  629 + <name>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</name>
  630 + <type>DBLookup</type>
  631 + <description/>
  632 + <distribute>Y</distribute>
  633 + <custom_distribution/>
  634 + <copies>1</copies>
  635 + <partitioning>
  636 + <method>none</method>
  637 + <schema_name/>
  638 + </partitioning>
  639 + <connection>bus_control_variable</connection>
  640 + <cache>N</cache>
  641 + <cache_load_all>N</cache_load_all>
  642 + <cache_size>0</cache_size>
  643 + <lookup>
  644 + <schema/>
  645 + <table>bsth_c_business</table>
  646 + <orderby/>
  647 + <fail_on_multiple>N</fail_on_multiple>
  648 + <eat_row_on_failure>N</eat_row_on_failure>
  649 + <key>
  650 + <name>business_code</name>
  651 + <field>up_code</field>
  652 + <condition>&#x3d;</condition>
  653 + <name2/>
  654 + </key>
  655 + <key>
  656 + <name>branche_company_code</name>
  657 + <field>business_code</field>
  658 + <condition>&#x3d;</condition>
  659 + <name2/>
  660 + </key>
  661 + <value>
  662 + <name>business_name</name>
  663 + <rename>fgs</rename>
  664 + <default/>
  665 + <type>String</type>
  666 + </value>
  667 + </lookup>
  668 + <cluster_schema/>
  669 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  670 + <xloc>491</xloc>
  671 + <yloc>60</yloc>
  672 + <draw>Y</draw>
  673 + </GUI>
  674 + </step>
  675 +
  676 + <step>
  677 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  678 + <type>SelectValues</type>
  679 + <description/>
  680 + <distribute>N</distribute>
  681 + <custom_distribution/>
  682 + <copies>1</copies>
  683 + <partitioning>
  684 + <method>none</method>
  685 + <schema_name/>
  686 + </partitioning>
  687 + <fields> <field> <name>car_plate</name>
  688 + <rename>&#x8f66;&#x724c;&#x53f7;</rename>
  689 + <length>-2</length>
  690 + <precision>-2</precision>
  691 + </field> <field> <name>inside_code</name>
  692 + <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>
  693 + <length>-2</length>
  694 + <precision>-2</precision>
  695 + </field> <field> <name>gs</name>
  696 + <rename>&#x6240;&#x5c5e;&#x516c;&#x53f8;</rename>
  697 + <length>-2</length>
  698 + <precision>-2</precision>
  699 + </field> <field> <name>fgs</name>
  700 + <rename>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</rename>
  701 + <length>-2</length>
  702 + <precision>-2</precision>
  703 + </field> <field> <name>supplier_name</name>
  704 + <rename>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</rename>
  705 + <length>-2</length>
  706 + <precision>-2</precision>
  707 + </field> <field> <name>equipment_code</name>
  708 + <rename>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</rename>
  709 + <length>-2</length>
  710 + <precision>-2</precision>
  711 + </field> <field> <name>sfdc</name>
  712 + <rename>sfdc_cal</rename>
  713 + <length>-2</length>
  714 + <precision>-2</precision>
  715 + </field> <select_unspecified>N</select_unspecified>
  716 + </fields> <cluster_schema/>
  717 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  718 + <xloc>495</xloc>
  719 + <yloc>173</yloc>
  720 + <draw>Y</draw>
  721 + </GUI>
  722 + </step>
  723 +
  724 + <step>
  725 + <name>&#x662f;&#x5426;&#x7535;&#x8f66;</name>
  726 + <type>ScriptValueMod</type>
  727 + <description/>
  728 + <distribute>Y</distribute>
  729 + <custom_distribution/>
  730 + <copies>1</copies>
  731 + <partitioning>
  732 + <method>none</method>
  733 + <schema_name/>
  734 + </partitioning>
  735 + <compatible>N</compatible>
  736 + <optimizationLevel>9</optimizationLevel>
  737 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  738 + <jsScript_name>Script 1</jsScript_name>
  739 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var &#x662f;&#x5426;&#x7535;&#x8f66; &#x3d; &#x22;&#x5426;&#x22;&#x3b;&#xa;&#xa;if&#x28;sfdc_cal &#x3d;&#x3d; 0&#x29; &#x7b;&#xa; &#x662f;&#x5426;&#x7535;&#x8f66; &#x3d; &#x22;&#x5426;&#x22;&#x3b;&#xa;&#x7d; else if &#x28;sfdc_cal &#x3d;&#x3d; 1&#x29; &#x7b;&#xa; &#x662f;&#x5426;&#x7535;&#x8f66; &#x3d; &#x22;&#x662f;&#x22;&#x3b;&#xa;&#x7d; else &#x7b;&#xa; &#x662f;&#x5426;&#x7535;&#x8f66; &#x3d; &#x22;&#x5426;&#x22;&#x3b;&#xa;&#x7d;&#xa;</jsScript_script>
  740 + </jsScript> </jsScripts> <fields> <field> <name>&#x662f;&#x5426;&#x7535;&#x8f66;</name>
  741 + <rename>&#x662f;&#x5426;&#x7535;&#x8f66;</rename>
  742 + <type>String</type>
  743 + <length>-1</length>
  744 + <precision>-1</precision>
  745 + <replace>N</replace>
  746 + </field> </fields> <cluster_schema/>
  747 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  748 + <xloc>695</xloc>
  749 + <yloc>173</yloc>
  750 + <draw>Y</draw>
  751 + </GUI>
  752 + </step>
  753 +
  754 + <step>
  755 + <name>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</name>
  756 + <type>ScriptValueMod</type>
  757 + <description/>
  758 + <distribute>Y</distribute>
  759 + <custom_distribution/>
  760 + <copies>1</copies>
  761 + <partitioning>
  762 + <method>none</method>
  763 + <schema_name/>
  764 + </partitioning>
  765 + <compatible>N</compatible>
  766 + <optimizationLevel>9</optimizationLevel>
  767 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  768 + <jsScript_name>Script 1</jsScript_name>
  769 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var up_code &#x3d; &#x27;88&#x27;&#x3b;</jsScript_script>
  770 + </jsScript> </jsScripts> <fields> <field> <name>up_code</name>
  771 + <rename>up_code</rename>
  772 + <type>String</type>
  773 + <length>-1</length>
  774 + <precision>-1</precision>
  775 + <replace>N</replace>
  776 + </field> </fields> <cluster_schema/>
  777 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  778 + <xloc>227</xloc>
  779 + <yloc>59</yloc>
  780 + <draw>Y</draw>
  781 + </GUI>
  782 + </step>
  783 +
  784 + <step>
  785 + <name>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x8868;&#x8f93;&#x5165;</name>
  786 + <type>TableInput</type>
  787 + <description/>
  788 + <distribute>Y</distribute>
  789 + <custom_distribution/>
  790 + <copies>1</copies>
  791 + <partitioning>
  792 + <method>none</method>
  793 + <schema_name/>
  794 + </partitioning>
  795 + <connection>bus_control_variable</connection>
  796 + <sql>SELECT &#x2a; FROM bsth_c_cars&#xa;where &#x24;&#x7b;QUERY&#x7d;</sql>
  797 + <limit>0</limit>
  798 + <lookup/>
  799 + <execute_each_row>N</execute_each_row>
  800 + <variables_active>Y</variables_active>
  801 + <lazy_conversion_active>N</lazy_conversion_active>
  802 + <cluster_schema/>
  803 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  804 + <xloc>88</xloc>
  805 + <yloc>59</yloc>
  806 + <draw>Y</draw>
  807 + </GUI>
  808 + </step>
  809 +
  810 + <step_error_handling>
  811 + </step_error_handling>
  812 + <slave-step-copy-partition-distribution>
  813 +</slave-step-copy-partition-distribution>
  814 + <slave_transformation>N</slave_transformation>
  815 +
  816 +</transformation>
... ...
src/main/resources/rules/kBase1_core_functions.drl
1   -package com.bsth.service.schedule.impl.plan.kBase1.core;
2   -
3   -import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.shiftloop.GidsCountFunction gidscount;
4   -import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.shiftloop.GidFbTimeFunction gidfbtime;
5   -import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.shiftloop.GidFbFcnoFunction gidfbfcno;
6   -import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.ttinfo.LpInfoResultsFunction lpinforesult;
7   -import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.ttinfo.MinRuleQyrqFunction minruleqyrq;
8   -import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.validate.ValidRepeatBcFunction vrb;
9   -import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.validate.ValidWholeRerunBcFunction vwrb;
10   -import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.validate.ValidWantLpFunction vwlp;
  1 +package com.bsth.service.schedule.impl.plan.kBase1.core;
  2 +
  3 +import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.shiftloop.GidsCountFunction gidscount;
  4 +import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.shiftloop.GidFbTimeFunction gidfbtime;
  5 +import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.shiftloop.GidFbFcnoFunction gidfbfcno;
  6 +import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.ttinfo.LpInfoResultsFunction lpinforesult;
  7 +import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.ttinfo.MinRuleQyrqFunction minruleqyrq;
  8 +import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.validate.ValidRepeatBcFunction vrb;
  9 +import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.validate.ValidWholeRerunBcFunction vwrb;
  10 +import accumulate com.bsth.service.schedule.impl.plan.kBase1.core.validate.ValidWantLpFunction vwlp;
... ...