Commit c4c57d72a7ed11235a4bc5bcae9d2bdb0edb35eb

Authored by 游瑞烽
2 parents 9849a456 9ae68afc

Merge branch 'pudong' of 192.168.168.201:panzhaov5/bsth_control into pudong

Showing 32 changed files with 3094 additions and 1366 deletions

Too many changes to show.

To preserve performance only 32 of 73 files are displayed.

src/main/java/com/bsth/controller/calc/CalcWaybillController.java
@@ -151,6 +151,39 @@ public class CalcWaybillController extends BaseController<CalcWaybill, Integer> @@ -151,6 +151,39 @@ public class CalcWaybillController extends BaseController<CalcWaybill, Integer>
151 return calcWaybillService.calcStatisticsDaily(gsdm,fgsdm,line,date,date2,xlName,type); 151 return calcWaybillService.calcStatisticsDaily(gsdm,fgsdm,line,date,date2,xlName,type);
152 } 152 }
153 153
  154 + @RequestMapping(value="/calcStatisticsDaily2")
  155 + public List<Map<String, Object>> calcStatisticsDaily2(@RequestParam Map<String, Object> map){
  156 + String gsdm="";
  157 + if(map.get("gsdm")!=null){
  158 + gsdm=map.get("gsdm").toString().trim();
  159 + }
  160 + String fgsdm="";
  161 + if(map.get("fgsdm")!=null){
  162 + fgsdm=map.get("fgsdm").toString().trim();
  163 + }
  164 + String line="";
  165 + if(map.get("line")!=null){
  166 + line=map.get("line").toString().trim();
  167 + }
  168 + String date="";
  169 + if(map.get("date")!=null){
  170 + date=map.get("date").toString().trim();
  171 + }
  172 + String date2="";
  173 + if(map.get("date2")!=null){
  174 + date2=map.get("date2").toString().trim();
  175 + }
  176 + String xlName="";
  177 + if(map.get("xlName")!=null){
  178 + xlName=map.get("xlName").toString().trim();
  179 + }
  180 + String type="";
  181 + if(map.get("type")!=null){
  182 + type=map.get("type").toString().trim();
  183 + }
  184 + return calcWaybillService.calcStatisticsDaily2(gsdm,fgsdm,line,date,date2,xlName,type);
  185 + }
  186 +
154 @RequestMapping(value="/generateLineMileage") 187 @RequestMapping(value="/generateLineMileage")
155 public Map<String, Object> generateLineMileage(@RequestParam Map<String, Object> map) throws Exception{ 188 public Map<String, Object> generateLineMileage(@RequestParam Map<String, Object> map) throws Exception{
156 Map<String, Object> m = new HashMap<String, Object>(); 189 Map<String, Object> m = new HashMap<String, Object>();
src/main/java/com/bsth/controller/oil/LsylbController.java 0 → 100644
  1 +package com.bsth.controller.oil;
  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.controller.BaseController;
  17 +import com.bsth.entity.oil.Lsylb;
  18 +import com.bsth.entity.oil.Ylb;
  19 +import com.bsth.service.oil.LsylbService;
  20 +import com.bsth.util.Arith;
  21 +import com.bsth.util.ReportUtils;
  22 +
  23 +@RestController
  24 +@RequestMapping("lsylb")
  25 +public class LsylbController extends BaseController<Ylb, Integer>{
  26 + @Autowired
  27 + LsylbService lsylbService;
  28 +
  29 + @RequestMapping(value = "/lsylbList",method = RequestMethod.GET)
  30 + public List<Lsylb> lsylbList(@RequestParam Map<String, Object> map){
  31 + List<Lsylb> ylbList=lsylbService.listYlb(map);
  32 + return ylbList;
  33 + }
  34 +
  35 + @RequestMapping(value = "/sumLsylb",method = RequestMethod.GET)
  36 + public Map<String, Object> sumLsylb(@RequestParam Map<String, Object> map){
  37 + Map<String, Object> list=lsylbService.sumYlb(map);
  38 + return list;
  39 + }
  40 +
  41 + @RequestMapping(value = "/listExport",method = RequestMethod.POST)
  42 + public List<Map<String, Object>> listExport(@RequestParam Map<String, Object> map){
  43 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  44 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  45 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  46 + ReportUtils ee = new ReportUtils();
  47 + List<Lsylb> lsylb= lsylbService.listYlb(map);
  48 + String nylx=map.get("nylx").toString();
  49 +// (new CustomerSpecs<Ylb>(map)).iterator();
  50 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  51 + for (Lsylb y : lsylb) {
  52 + Map<String, Object> m = new HashMap<String, Object>();
  53 + m.put("rq", sdfMonth.format(y.getRq()));
  54 + m.put("gsname",y.getGsname() );
  55 + m.put("fgsname", y.getFgsname());
  56 + m.put("xlname", y.getXlname()==null?"":y.getXlname());
  57 + m.put("nbbm", y.getNbbm());
  58 + m.put("jsy", y.getJsy());
  59 + m.put("name", y.getName());
  60 + m.put("czlc", "0");
  61 + m.put("jzlc", "0");
  62 + m.put("sh", y.getSh()==null?"0":y.getSh());
  63 +
  64 + String shyy ="无";
  65 +
  66 + if(nylx.equals("0")){
  67 + m.put("jzl", y.getJzl()==null?"0":y.getJzl());
  68 + m.put("czyl", y.getCzyl()==null?"0":y.getCzyl());
  69 + m.put("jzyl", y.getJzyl()==null?"0":y.getJzyl());
  70 + m.put("yh", y.getYh()==null?"0":y.getYh());
  71 +
  72 + if(y.getShyy()!=null){
  73 + shyy=y.getShyy();
  74 + if(shyy.equals("1")){shyy="票务用油";}
  75 + else if(shyy.equals("2")){shyy="保养用油";}
  76 + else if(shyy.equals("3")){shyy="报废车用油";}
  77 + else if(shyy.equals("4")){shyy="其它用油";}
  78 + else if(shyy.equals("5")){shyy="人保部";}
  79 + else if(shyy.equals("6")){shyy="车队";}
  80 + else if(shyy.equals("7")){shyy="车间(高保)";}
  81 + else if(shyy.equals("8")){shyy="车间(小修)";}
  82 + else{shyy ="无";}
  83 + }
  84 + m.put("zyh", Arith.add(m.get("sh"), m.get("yh")));
  85 +
  86 + String rylx="";
  87 + if(y.getRylx()!=null){
  88 + if(y.getRylx().equals("0")){rylx="0号柴油";}
  89 + if(y.getRylx().equals("1")){rylx="负10号柴油";}
  90 + }
  91 + m.put("rylx", rylx);
  92 + }else{
  93 + m.put("cdl", y.getJzl()==null?"0":y.getJzl());
  94 + m.put("czcd", y.getCzyl()==null?"0":y.getCzyl());
  95 + m.put("jzcd", y.getJzyl()==null?"0":y.getJzyl());
  96 + m.put("hd", y.getYh()==null?"0":y.getYh());
  97 + if(y.getShyy()!=null){
  98 + shyy=y.getShyy();
  99 + if(shyy.equals("1")){shyy="票务用电";}
  100 + else if(shyy.equals("2")){shyy="保养用电";}
  101 + else if(shyy.equals("3")){shyy="报废车用电";}
  102 + else if(shyy.equals("4")){shyy="其它用电";}
  103 + else if(shyy.equals("5")){shyy="人保部";}
  104 + else if(shyy.equals("6")){shyy="车队";}
  105 + else if(shyy.equals("7")){shyy="车间(高保)";}
  106 + else if(shyy.equals("8")){shyy="车间(小修)";}
  107 + else{shyy ="无";}
  108 + }
  109 + m.put("zyh", Arith.add(m.get("sh"), m.get("hd")));
  110 + m.put("rdlx", "");
  111 +
  112 + }
  113 + m.put("shyy", shyy);
  114 + m.put("ns", y.getNs()==null?"0":y.getNs());
  115 + m.put("zlc", y.getZlc()==null?"0":y.getZlc());
  116 + m.put("bglyh", y.getBglyh());
  117 + resList.add(m);
  118 + }
  119 + try {
  120 + map.put("sheetName", map.get("rq"));
  121 + listI.add(resList.iterator());
  122 + String xls="";
  123 + String name="";
  124 +
  125 + if(nylx.equals("0")){
  126 + xls="list.xls";
  127 + name="进出场存油量.xls";
  128 + }else{
  129 + xls="listDl.xls";
  130 + name="进出场存电量.xls";
  131 + }
  132 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  133 + ee.excelReplace(listI, new Object[] { map }, path+"mould/"+xls,
  134 + path+"export/"+map.get("rq").toString()+ name);
  135 + } catch (Exception e) {
  136 + e.printStackTrace();
  137 + }
  138 +
  139 + return resList;
  140 +
  141 + }
  142 +}
src/main/java/com/bsth/controller/realcontrol/AdminUtilsController.java
1 -package com.bsth.controller.realcontrol;  
2 -  
3 -import com.bsth.data.directive.DayOfDirectives;  
4 -import com.bsth.data.directive.DirectivesPstThread;  
5 -import com.bsth.data.gpsdata_v2.cache.GeoCacheData;  
6 -import com.bsth.data.gpsdata_v2.handlers.overspeed.OverspeedProcess;  
7 -import com.bsth.data.gpsdata_v2.thread.GpsDataLoaderThread;  
8 -import com.bsth.data.msg_queue.DirectivePushQueue;  
9 -import com.bsth.data.msg_queue.WebSocketPushQueue;  
10 -import com.bsth.data.pilot80.PilotReport;  
11 -import com.bsth.data.schedule.DayOfSchedule;  
12 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
13 -import com.bsth.websocket.handler.SendUtils;  
14 -import org.slf4j.Logger;  
15 -import org.slf4j.LoggerFactory;  
16 -import org.springframework.beans.factory.annotation.Autowired;  
17 -import org.springframework.web.bind.annotation.RequestMapping;  
18 -import org.springframework.web.bind.annotation.RequestParam;  
19 -import org.springframework.web.bind.annotation.RestController;  
20 -  
21 -import java.util.HashMap;  
22 -import java.util.List;  
23 -import java.util.Map;  
24 -  
25 -/**  
26 - * Created by panzhao on 2017/4/14.  
27 - */  
28 -@RestController  
29 -@RequestMapping("adminUtils")  
30 -public class AdminUtilsController {  
31 -  
32 -  
33 - Logger logger = LoggerFactory.getLogger(this.getClass());  
34 -  
35 - @Autowired  
36 - DayOfSchedule dayOfSchedule;  
37 -  
38 - @Autowired  
39 - GeoCacheData geoCacheData;  
40 -  
41 - @Autowired  
42 - DayOfDirectives dayOfDirectives;  
43 -  
44 - @Autowired  
45 - SendUtils sendUtils;  
46 -  
47 - @Autowired  
48 - PilotReport pilotReport;  
49 -  
50 - /**  
51 - * 出现重复班次的车辆  
52 - * @param  
53 -  
54 - @RequestMapping(value = "/schRepeat", method = RequestMethod.POST)  
55 - public void schRepeat(@RequestParam String nbbm){  
56 - logger.info("前端通知,车辆 " + nbbm + "出现重复班次,开始检测...");  
57 - List<ScheduleRealInfo> list = dayOfSchedule.findByNbbm(nbbm);  
58 - logger.info("检测前,车辆班次数量:" + list.size());  
59 -  
60 - Map<Long, ScheduleRealInfo> map = new HashMap<>();  
61 - for(ScheduleRealInfo sch : list){  
62 - if(map.containsKey(sch.getId())){  
63 - logger.info("检测到重复ID: " + sch.getId());  
64 - }  
65 - map.put(sch.getId(), sch);  
66 - }  
67 -  
68 - logger.info("检测后,车辆班次数量:" + list.size());  
69 - if(map.values().size() > 0){  
70 - dayOfSchedule.replaceByNbbm(nbbm, map.values());  
71 - }  
72 - }*/  
73 -  
74 -/* @RequestMapping(value = "/directivePushQueue")  
75 - public void directivePushQueue(){  
76 - DirectivePushQueue.start();  
77 - }*/  
78 -  
79 - @RequestMapping(value = "/directiveQueueSize")  
80 - public void directiveQueueSize(){  
81 - DirectivePushQueue.size();  
82 - }  
83 -  
84 - /*@RequestMapping(value = "/webSocketPushQueue")  
85 - public void webSocketPushQueue(){  
86 - WebSocketPushQueue.start();  
87 - }*/  
88 -  
89 - @RequestMapping(value = "/webSocketQueueSize")  
90 - public void webSocketQueueSize(){  
91 - WebSocketPushQueue.size();  
92 - }  
93 -  
94 - @RequestMapping(value = "/setHttpFlag")  
95 - public void setHttpFlag(@RequestParam int flag){  
96 - if(flag != 0 && flag != -1)  
97 - return;  
98 - GpsDataLoaderThread.setFlag(flag);  
99 - }  
100 -  
101 - @RequestMapping(value = "/updateCacheBuff")  
102 - public void updateCacheBuff(){  
103 - geoCacheData.loadData();  
104 - }  
105 -  
106 - @RequestMapping(value = "/reCalcLpSch")  
107 - public void reCalcLpSch(){  
108 - dayOfSchedule._test_reCalcLpSch();  
109 - }  
110 -  
111 - @RequestMapping(value = "/findSchByLpName")  
112 - public List<ScheduleRealInfo> findSchByLpName(@RequestParam String lpName){  
113 - return dayOfSchedule.getLpScheduleMap().get(lpName);  
114 - }  
115 -  
116 - @RequestMapping(value = "/findSchByNbbm")  
117 - public List<ScheduleRealInfo> findSchByNbbm(@RequestParam String nbbm){  
118 - return dayOfSchedule.findByNbbm(nbbm);  
119 - }  
120 -  
121 - @RequestMapping(value = "/removeExecPlan")  
122 - public int removeExecPlan(@RequestParam String nbbm){  
123 - dayOfSchedule.removeExecPlan(nbbm);  
124 - return 1;  
125 - }  
126 -  
127 - @RequestMapping(value = "/sch_re_calc_id_maps")  
128 - public int reCalcIdMaps(){  
129 - return dayOfSchedule.reCalcIdMaps();  
130 - }  
131 -  
132 - @RequestMapping(value = "/sch_size_string")  
133 - public String schSizeString(){  
134 - return dayOfSchedule.sizeString();  
135 - }  
136 -  
137 - @RequestMapping(value = "/containerSize")  
138 - public Map<String, Integer> containerSize(){  
139 - Map<String, Integer> rs = new HashMap<>();  
140 - rs.put("60_size", dayOfDirectives.all60().size());  
141 - rs.put("80_size", pilotReport.findAll().size());  
142 - rs.put("nbbm_sch_size", dayOfSchedule.findAll().size());  
143 - rs.put("lp_sch_size", dayOfSchedule.findAllByLpContainer().size());  
144 - rs.put("id_sch_size", dayOfSchedule.findAllByIdContainer().size());  
145 - rs.put("pst_sch_size", dayOfSchedule.getPstSize());  
146 - rs.put("speeds_size", OverspeedProcess.size());  
147 - return rs;  
148 - }  
149 -  
150 - @RequestMapping(value = "/websocketRadioText")  
151 - public int radioText(String t, String lineCode){  
152 - sendUtils.sendRadioText(t, lineCode);  
153 - return 0;  
154 - }  
155 -  
156 - @Autowired  
157 - DirectivesPstThread directivesPstThread;  
158 -  
159 - @RequestMapping(value = "/_sd_60_pst")  
160 - public void sd_60_pst(){  
161 - logger.info("手动入库指令....");  
162 - directivesPstThread.run();  
163 - } 1 +package com.bsth.controller.realcontrol;
  2 +
  3 +import com.bsth.data.directive.DayOfDirectives;
  4 +import com.bsth.data.directive.DirectivesPstThread;
  5 +import com.bsth.data.gpsdata_v2.cache.GeoCacheData;
  6 +import com.bsth.data.gpsdata_v2.handlers.overspeed.OverspeedProcess;
  7 +import com.bsth.data.gpsdata_v2.thread.GpsDataLoaderThread;
  8 +import com.bsth.data.msg_queue.DirectivePushQueue;
  9 +import com.bsth.data.msg_queue.WebSocketPushQueue;
  10 +import com.bsth.data.pilot80.PilotReport;
  11 +import com.bsth.data.schedule.DayOfSchedule;
  12 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  13 +import com.bsth.websocket.handler.SendUtils;
  14 +import org.slf4j.Logger;
  15 +import org.slf4j.LoggerFactory;
  16 +import org.springframework.beans.factory.annotation.Autowired;
  17 +import org.springframework.web.bind.annotation.RequestMapping;
  18 +import org.springframework.web.bind.annotation.RequestParam;
  19 +import org.springframework.web.bind.annotation.RestController;
  20 +
  21 +import java.util.HashMap;
  22 +import java.util.List;
  23 +import java.util.Map;
  24 +
  25 +/**
  26 + * Created by panzhao on 2017/4/14.
  27 + */
  28 +@RestController
  29 +@RequestMapping("adminUtils")
  30 +public class AdminUtilsController {
  31 +
  32 +
  33 + Logger logger = LoggerFactory.getLogger(this.getClass());
  34 +
  35 + @Autowired
  36 + DayOfSchedule dayOfSchedule;
  37 +
  38 + @Autowired
  39 + GeoCacheData geoCacheData;
  40 +
  41 + @Autowired
  42 + DayOfDirectives dayOfDirectives;
  43 +
  44 + @Autowired
  45 + SendUtils sendUtils;
  46 +
  47 + @Autowired
  48 + PilotReport pilotReport;
  49 +
  50 + /**
  51 + * 出现重复班次的车辆
  52 + * @param
  53 +
  54 + @RequestMapping(value = "/schRepeat", method = RequestMethod.POST)
  55 + public void schRepeat(@RequestParam String nbbm){
  56 + logger.info("前端通知,车辆 " + nbbm + "出现重复班次,开始检测...");
  57 + List<ScheduleRealInfo> list = dayOfSchedule.findByNbbm(nbbm);
  58 + logger.info("检测前,车辆班次数量:" + list.size());
  59 +
  60 + Map<Long, ScheduleRealInfo> map = new HashMap<>();
  61 + for(ScheduleRealInfo sch : list){
  62 + if(map.containsKey(sch.getId())){
  63 + logger.info("检测到重复ID: " + sch.getId());
  64 + }
  65 + map.put(sch.getId(), sch);
  66 + }
  67 +
  68 + logger.info("检测后,车辆班次数量:" + list.size());
  69 + if(map.values().size() > 0){
  70 + dayOfSchedule.replaceByNbbm(nbbm, map.values());
  71 + }
  72 + }*/
  73 +
  74 +/* @RequestMapping(value = "/directivePushQueue")
  75 + public void directivePushQueue(){
  76 + DirectivePushQueue.start();
  77 + }*/
  78 +
  79 + @RequestMapping(value = "/directiveQueueSize")
  80 + public void directiveQueueSize(){
  81 + DirectivePushQueue.size();
  82 + }
  83 +
  84 + /*@RequestMapping(value = "/webSocketPushQueue")
  85 + public void webSocketPushQueue(){
  86 + WebSocketPushQueue.start();
  87 + }*/
  88 +
  89 + @RequestMapping(value = "/webSocketQueueSize")
  90 + public void webSocketQueueSize(){
  91 + WebSocketPushQueue.size();
  92 + }
  93 +
  94 + @RequestMapping(value = "/setHttpFlag")
  95 + public void setHttpFlag(@RequestParam int flag){
  96 + if(flag != 0 && flag != -1)
  97 + return;
  98 + GpsDataLoaderThread.setFlag(flag);
  99 + }
  100 +
  101 + @RequestMapping(value = "/updateCacheBuff")
  102 + public void updateCacheBuff(){
  103 + geoCacheData.loadData();
  104 + }
  105 +
  106 + @RequestMapping(value = "/reCalcLpSch")
  107 + public void reCalcLpSch(){
  108 + dayOfSchedule._test_reCalcLpSch();
  109 + }
  110 +
  111 + @RequestMapping(value = "/findSchByLpName")
  112 + public List<ScheduleRealInfo> findSchByLpName(@RequestParam String lpName){
  113 + return dayOfSchedule.getLpScheduleMap().get(lpName);
  114 + }
  115 +
  116 + @RequestMapping(value = "/findSchByNbbm")
  117 + public List<ScheduleRealInfo> findSchByNbbm(@RequestParam String nbbm){
  118 + return dayOfSchedule.findByNbbm(nbbm);
  119 + }
  120 +
  121 + @RequestMapping(value = "/removeExecPlan")
  122 + public int removeExecPlan(@RequestParam String nbbm){
  123 + dayOfSchedule.removeExecPlan(nbbm);
  124 + return 1;
  125 + }
  126 +
  127 + @RequestMapping(value = "/sch_re_calc_id_maps")
  128 + public int reCalcIdMaps(){
  129 + return dayOfSchedule.reCalcIdMaps();
  130 + }
  131 +
  132 + @RequestMapping(value = "/sch_size_string")
  133 + public String schSizeString(){
  134 + return dayOfSchedule.sizeString();
  135 + }
  136 +
  137 + @RequestMapping(value = "/containerSize")
  138 + public Map<String, Integer> containerSize(){
  139 + Map<String, Integer> rs = new HashMap<>();
  140 + rs.put("60_size", dayOfDirectives.all60().size());
  141 + rs.put("80_size", pilotReport.findAll().size());
  142 + rs.put("nbbm_sch_size", dayOfSchedule.findAll().size());
  143 + rs.put("lp_sch_size", dayOfSchedule.findAllByLpContainer().size());
  144 + rs.put("id_sch_size", dayOfSchedule.findAllByIdContainer().size());
  145 + rs.put("pst_sch_size", dayOfSchedule.getPstSize());
  146 + rs.put("speeds_size", OverspeedProcess.size());
  147 + return rs;
  148 + }
  149 +
  150 + @RequestMapping(value = "/websocketRadioText")
  151 + public int radioText(String t, String lineCode){
  152 + sendUtils.sendRadioText(t, lineCode);
  153 + return 0;
  154 + }
  155 +
  156 + @Autowired
  157 + DirectivesPstThread directivesPstThread;
  158 +
  159 + @RequestMapping(value = "/_sd_60_pst")
  160 + public void sd_60_pst(){
  161 + logger.info("手动入库指令....");
  162 + directivesPstThread.run();
  163 + }
164 } 164 }
165 \ No newline at end of file 165 \ No newline at end of file
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -30,7 +30,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -30,7 +30,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
30 DayOfSchedule dayOfSchedule; 30 DayOfSchedule dayOfSchedule;
31 31
32 @RequestMapping(value = "check_fgs_ascription", method = RequestMethod.POST) 32 @RequestMapping(value = "check_fgs_ascription", method = RequestMethod.POST)
33 - public Map<String, Object> checkPCFgsAscription(@RequestParam Long schId,@RequestParam String jGh, String sGh,@RequestParam String nbbm){ 33 + public Map<String, Object> checkPCFgsAscription(@RequestParam Long schId, String jGh, String sGh, String nbbm){
34 return scheduleRealInfoService.checkPCFgsAscription(schId, jGh, sGh, nbbm); 34 return scheduleRealInfoService.checkPCFgsAscription(schId, jGh, sGh, nbbm);
35 } 35 }
36 36
src/main/java/com/bsth/controller/realcontrol/dto/DftzAndDestroy.java
1 -package com.bsth.controller.realcontrol.dto;  
2 -  
3 -/**  
4 - * Created by panzhao on 2018/3/22.  
5 - */  
6 -public class DftzAndDestroy {  
7 -  
8 - /**  
9 - * 要调整待发的出场班次ID  
10 - */  
11 - private Long dftzId;  
12 -  
13 - /**  
14 - * 要设置的待发时间  
15 - */  
16 - private String newTimeStr;  
17 -  
18 - /**  
19 - * 要烂掉的班次的 班次id ,号分割多个  
20 - */  
21 - private String destroyIdx;  
22 -  
23 - /**  
24 - * 备注  
25 - */  
26 - private String remarks;  
27 -  
28 - private String reason;  
29 -  
30 - /**  
31 - * 调派工号  
32 - */  
33 - private String userId;  
34 -  
35 - public String getNewTimeStr() {  
36 - return newTimeStr;  
37 - }  
38 -  
39 - public void setNewTimeStr(String newTimeStr) {  
40 - this.newTimeStr = newTimeStr;  
41 - }  
42 -  
43 - public String getDestroyIdx() {  
44 - return destroyIdx;  
45 - }  
46 -  
47 - public void setDestroyIdx(String destroyIdx) {  
48 - this.destroyIdx = destroyIdx;  
49 - }  
50 -  
51 - public String getRemarks() {  
52 - return remarks;  
53 - }  
54 -  
55 - public void setRemarks(String remarks) {  
56 - this.remarks = remarks;  
57 - }  
58 -  
59 - public Long getDftzId() {  
60 - return dftzId;  
61 - }  
62 -  
63 - public void setDftzId(Long dftzId) {  
64 - this.dftzId = dftzId;  
65 - }  
66 -  
67 - public String getReason() {  
68 - return reason;  
69 - }  
70 -  
71 - public void setReason(String reason) {  
72 - this.reason = reason;  
73 - }  
74 -  
75 - public String getUserId() {  
76 - return userId;  
77 - }  
78 -  
79 - public void setUserId(String userId) {  
80 - this.userId = userId;  
81 - }  
82 -} 1 +package com.bsth.controller.realcontrol.dto;
  2 +
  3 +/**
  4 + * Created by panzhao on 2018/3/22.
  5 + */
  6 +public class DftzAndDestroy {
  7 +
  8 + /**
  9 + * 要调整待发的出场班次ID
  10 + */
  11 + private Long dftzId;
  12 +
  13 + /**
  14 + * 要设置的待发时间
  15 + */
  16 + private String newTimeStr;
  17 +
  18 + /**
  19 + * 要烂掉的班次的 班次id ,号分割多个
  20 + */
  21 + private String destroyIdx;
  22 +
  23 + /**
  24 + * 备注
  25 + */
  26 + private String remarks;
  27 +
  28 + private String reason;
  29 +
  30 + /**
  31 + * 调派工号
  32 + */
  33 + private String userId;
  34 +
  35 + public String getNewTimeStr() {
  36 + return newTimeStr;
  37 + }
  38 +
  39 + public void setNewTimeStr(String newTimeStr) {
  40 + this.newTimeStr = newTimeStr;
  41 + }
  42 +
  43 + public String getDestroyIdx() {
  44 + return destroyIdx;
  45 + }
  46 +
  47 + public void setDestroyIdx(String destroyIdx) {
  48 + this.destroyIdx = destroyIdx;
  49 + }
  50 +
  51 + public String getRemarks() {
  52 + return remarks;
  53 + }
  54 +
  55 + public void setRemarks(String remarks) {
  56 + this.remarks = remarks;
  57 + }
  58 +
  59 + public Long getDftzId() {
  60 + return dftzId;
  61 + }
  62 +
  63 + public void setDftzId(Long dftzId) {
  64 + this.dftzId = dftzId;
  65 + }
  66 +
  67 + public String getReason() {
  68 + return reason;
  69 + }
  70 +
  71 + public void setReason(String reason) {
  72 + this.reason = reason;
  73 + }
  74 +
  75 + public String getUserId() {
  76 + return userId;
  77 + }
  78 +
  79 + public void setUserId(String userId) {
  80 + this.userId = userId;
  81 + }
  82 +}
src/main/java/com/bsth/data/Station2ParkBuffer.java
@@ -50,6 +50,8 @@ public class Station2ParkBuffer implements CommandLineRunner { @@ -50,6 +50,8 @@ public class Station2ParkBuffer implements CommandLineRunner {
50 50
51 public static StationToPark get(String lineCode, String sName, String eName) { 51 public static StationToPark get(String lineCode, String sName, String eName) {
52 List<StationToPark> list = get(lineCode); 52 List<StationToPark> list = get(lineCode);
  53 + if(null == list)
  54 + return null;
53 StationToPark stp = null; 55 StationToPark stp = null;
54 for (StationToPark s : list) { 56 for (StationToPark s : list) {
55 if (s.getStationName().equals(sName) && s.getParkName().equals(eName)) { 57 if (s.getStationName().equals(sName) && s.getParkName().equals(eName)) {
src/main/java/com/bsth/data/car_out_info/CarOutInfoHandler.java
@@ -74,7 +74,6 @@ public class CarOutInfoHandler { @@ -74,7 +74,6 @@ public class CarOutInfoHandler {
74 save(pstList); 74 save(pstList);
75 pstList.clear(); 75 pstList.clear();
76 xlMaps.clear(); 76 xlMaps.clear();
77 - //logger.info("更新发车信息表!!");  
78 }catch (Exception e){ 77 }catch (Exception e){
79 logger.error("", e); 78 logger.error("", e);
80 } 79 }
src/main/java/com/bsth/data/gpsdata_v2/handlers/InStationProcess.java
@@ -158,7 +158,7 @@ public class InStationProcess { @@ -158,7 +158,7 @@ public class InStationProcess {
158 //webSocket 158 //webSocket
159 sendUtils.sendZdsj(sch, lpNext, doneSum); 159 sendUtils.sendZdsj(sch, lpNext, doneSum);
160 160
161 - logger.info("车辆:" + nbbm + " 班次:" + sch.getDfsj() + "到终点, 时间:" + sch.getZdsjActual()); 161 + logger.info("车辆:" + nbbm + " 班次:" + sch.getDfsj() + "到终点, 时间:" + sch.getZdsjActual() + " -stopNo: " + gps.getStopNo());
162 162
163 //清除车辆误点调整监听 163 //清除车辆误点调整监听
164 LateAdjustHandle.remove(sch); 164 LateAdjustHandle.remove(sch);
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -16,6 +16,8 @@ import com.bsth.service.schedule.SchedulePlanInfoService; @@ -16,6 +16,8 @@ import com.bsth.service.schedule.SchedulePlanInfoService;
16 import com.bsth.websocket.handler.SendUtils; 16 import com.bsth.websocket.handler.SendUtils;
17 import com.google.common.collect.ArrayListMultimap; 17 import com.google.common.collect.ArrayListMultimap;
18 import com.google.common.collect.HashMultimap; 18 import com.google.common.collect.HashMultimap;
  19 +import com.google.common.collect.ListMultimap;
  20 +import com.google.common.collect.Multimaps;
19 import org.apache.commons.lang3.StringUtils; 21 import org.apache.commons.lang3.StringUtils;
20 import org.joda.time.format.DateTimeFormat; 22 import org.joda.time.format.DateTimeFormat;
21 import org.joda.time.format.DateTimeFormatter; 23 import org.joda.time.format.DateTimeFormatter;
@@ -55,7 +57,7 @@ public class DayOfSchedule { @@ -55,7 +57,7 @@ public class DayOfSchedule {
55 public static Map<String, List<SchedulePlanInfo>> schedulePlanMap; 57 public static Map<String, List<SchedulePlanInfo>> schedulePlanMap;
56 58
57 // 按车辆分组的班次数据 59 // 按车辆分组的班次数据
58 - private static ArrayListMultimap<String, ScheduleRealInfo> nbbmScheduleMap; 60 + private static ListMultimap<String, ScheduleRealInfo> nbbmScheduleMap;
59 61
60 //按线路分组计划用车 62 //按线路分组计划用车
61 private static HashMultimap<String, String> lineNbbmsMap; 63 private static HashMultimap<String, String> lineNbbmsMap;
@@ -104,6 +106,8 @@ public class DayOfSchedule { @@ -104,6 +106,8 @@ public class DayOfSchedule {
104 106
105 static { 107 static {
106 nbbmScheduleMap = ArrayListMultimap.create(); 108 nbbmScheduleMap = ArrayListMultimap.create();
  109 + nbbmScheduleMap = Multimaps.synchronizedListMultimap(nbbmScheduleMap);
  110 +
107 lpScheduleMap = ArrayListMultimap.create(); 111 lpScheduleMap = ArrayListMultimap.create();
108 lineNbbmsMap = HashMultimap.create(); 112 lineNbbmsMap = HashMultimap.create();
109 113
src/main/java/com/bsth/data/schedule/e_state_check/ScheduleStationCodeChecker.java
1 -package com.bsth.data.schedule.e_state_check;  
2 -  
3 -import com.bsth.data.schedule.DayOfSchedule;  
4 -import com.bsth.data.schedule.e_state_check.entity.SCodeInfo;  
5 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
6 -import com.google.common.collect.ArrayListMultimap;  
7 -import org.slf4j.Logger;  
8 -import org.slf4j.LoggerFactory;  
9 -import org.springframework.beans.factory.annotation.Autowired;  
10 -import org.springframework.jdbc.core.BeanPropertyRowMapper;  
11 -import org.springframework.jdbc.core.JdbcTemplate;  
12 -import org.springframework.stereotype.Component;  
13 -  
14 -import java.util.*;  
15 -  
16 -/**  
17 - * 检查班次站点编码和路由编码是否相符合  
18 - * Created by panzhao on 2018/4/2.  
19 - */  
20 -@Component  
21 -public class ScheduleStationCodeChecker {  
22 -  
23 - @Autowired  
24 - DayOfSchedule dayOfSchedule;  
25 -  
26 - private static ArrayListMultimap<String, SCodeInfo> multimap;  
27 -  
28 - static {  
29 - multimap = ArrayListMultimap.create();  
30 - }  
31 -  
32 - @Autowired  
33 - JdbcTemplate jdbcTemplate;  
34 -  
35 - static Logger logger = LoggerFactory.getLogger(ScheduleStationCodeChecker.class);  
36 -  
37 - public static List<SCodeInfo> findByLineIdx(List<String> lineArray){  
38 - List<SCodeInfo> rs = new ArrayList<>();  
39 -  
40 - try{  
41 - for(String coed : lineArray){  
42 - rs.addAll(multimap.get(coed));  
43 - }  
44 - }catch (Exception e){  
45 - logger.error("", e);  
46 - }  
47 - return rs;  
48 - }  
49 -  
50 - public void checkAll() {  
51 - try {  
52 - logger.info("start....");  
53 - List<ScheduleRealInfo> all = new ArrayList(dayOfSchedule.findAll());  
54 -  
55 - //按线路站点分组数据(上行)  
56 - Map<String, ScheduleRealInfo> ups = new HashMap<>();  
57 - //按线路站点分组数据(下行)  
58 - Map<String, ScheduleRealInfo> downs = new HashMap();  
59 -  
60 - String key;  
61 - for (ScheduleRealInfo sch : all) {  
62 - if (sch.getBcType().equals("out")  
63 - || sch.getBcType().equals("in"))  
64 - continue;  
65 - key = sch.getXlBm() + "_" + sch.getXlDir() + "_";  
66 -  
67 - ups.put(key + sch.getQdzCode(), sch);  
68 - downs.put(key + sch.getZdzCode(), sch);  
69 - }  
70 -  
71 - //获取全部实际的站点编码  
72 - Map<String, SCodeInfo> realMap = allRealCodeInfo();  
73 -  
74 - List<SCodeInfo> rs = new ArrayList<>();  
75 - rs.addAll(checkCode(ups.values(), realMap, "qd"));  
76 - rs.addAll(checkCode(downs.values(), realMap, "zd"));  
77 -  
78 - //按线路分组  
79 - ArrayListMultimap<String, SCodeInfo> mList = ArrayListMultimap.create();  
80 - for (SCodeInfo sci : rs) {  
81 - mList.put(sci.getLineCode(), sci);  
82 - }  
83 -  
84 - multimap = mList;  
85 - logger.info("end....");  
86 - } catch (Exception e) {  
87 - logger.error("", e);  
88 - }  
89 - }  
90 -  
91 - private List<SCodeInfo> checkCode(Collection<ScheduleRealInfo> list, Map<String, SCodeInfo> realMap, String qdOrZd) {  
92 - List<SCodeInfo> rs = new ArrayList<>();  
93 - String k;  
94 - SCodeInfo sci;  
95 - for(ScheduleRealInfo sch : list){  
96 - k = sch.getXlBm() + "_" + sch.getXlDir() + "_";  
97 -  
98 - sci = realMap.get(k + getName(sch, qdOrZd));//名称和编码都不存在  
99 - if(null == sci && !realMap.containsKey(k + getCode(sch, qdOrZd))){  
100 - sci = SCodeInfo.getInstance(sch, qdOrZd);  
101 - rs.add(sci);  
102 - continue;  
103 - }  
104 - else if(null != sci && !sci.getRealStationCode().equals(getCode(sch, qdOrZd))){//名称一致的站点,编码不一致  
105 - sci.setStationCode(getCode(sch, qdOrZd));  
106 - rs.add(sci);  
107 - continue;  
108 - }  
109 - }  
110 - return rs;  
111 - }  
112 -  
113 - private String getName(ScheduleRealInfo sch, String qdOrZd) {  
114 - return qdOrZd.equals("qd")?sch.getQdzName():sch.getZdzName();  
115 - }  
116 -  
117 - private String getCode(ScheduleRealInfo sch, String qdOrZd) {  
118 - return qdOrZd.equals("qd")?sch.getQdzCode():sch.getZdzCode();  
119 - }  
120 -  
121 -  
122 - private Map<String, SCodeInfo> allRealCodeInfo() {  
123 - String sql = "select line_code,directions as up_down,station_code as real_station_code,station_name from bsth_c_stationroute where line in (select id from bsth_c_line where destroy=0) and destroy=0";  
124 - List<SCodeInfo> realList = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SCodeInfo.class));  
125 - Map<String, SCodeInfo> realMap = new HashMap<>();  
126 -  
127 - for (SCodeInfo sci : realList) {  
128 - realMap.put(sci.getLineCode() + "_" + sci.getUpDown() + "_" + sci.getStationName(), sci);  
129 - realMap.put(sci.getLineCode() + "_" + sci.getUpDown() + "_" + sci.getRealStationCode(), sci);  
130 - }  
131 -  
132 - return realMap;  
133 - }  
134 -} 1 +package com.bsth.data.schedule.e_state_check;
  2 +
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.bsth.data.schedule.DayOfSchedule;
  5 +import com.bsth.data.schedule.e_state_check.entity.SCodeInfo;
  6 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  7 +import com.google.common.collect.ArrayListMultimap;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  12 +import org.springframework.jdbc.core.JdbcTemplate;
  13 +import org.springframework.stereotype.Component;
  14 +
  15 +import java.util.*;
  16 +
  17 +/**
  18 + * 检查班次站点编码和路由编码是否相符合
  19 + * Created by panzhao on 2018/4/2.
  20 + */
  21 +@Component
  22 +public class ScheduleStationCodeChecker {
  23 +
  24 + @Autowired
  25 + DayOfSchedule dayOfSchedule;
  26 +
  27 + private static ArrayListMultimap<String, SCodeInfo> multimap;
  28 +
  29 + static {
  30 + multimap = ArrayListMultimap.create();
  31 + }
  32 +
  33 + @Autowired
  34 + JdbcTemplate jdbcTemplate;
  35 +
  36 + static Logger logger = LoggerFactory.getLogger(ScheduleStationCodeChecker.class);
  37 +
  38 + public static List<SCodeInfo> findByLineIdx(List<String> lineArray){
  39 + List<SCodeInfo> rs = new ArrayList<>();
  40 +
  41 + try{
  42 + for(String coed : lineArray){
  43 + rs.addAll(multimap.get(coed));
  44 + }
  45 + }catch (Exception e){
  46 + logger.error("", e);
  47 + }
  48 + return rs;
  49 + }
  50 +
  51 + public void checkAll() {
  52 + try {
  53 + logger.info("start....");
  54 + List<ScheduleRealInfo> all = new ArrayList(dayOfSchedule.findAll());
  55 +
  56 + //按线路站点分组数据(上行)
  57 + Map<String, ScheduleRealInfo> ups = new HashMap<>();
  58 + //按线路站点分组数据(下行)
  59 + Map<String, ScheduleRealInfo> downs = new HashMap();
  60 +
  61 + String key;
  62 + for (ScheduleRealInfo sch : all) {
  63 + if (sch.getBcType().equals("out")
  64 + || sch.getBcType().equals("in"))
  65 + continue;
  66 +
  67 + key = sch.getXlBm() + "_" + sch.getXlDir() + "_";
  68 +
  69 + ups.put(key + sch.getQdzCode(), sch);
  70 + downs.put(key + sch.getZdzCode(), sch);
  71 + }
  72 +
  73 + //获取全部实际的站点编码
  74 + Map<String, SCodeInfo> realMap = allRealCodeInfo();
  75 +
  76 + List<SCodeInfo> rs = new ArrayList<>();
  77 + rs.addAll(checkCode(ups.values(), realMap, "qd"));
  78 + rs.addAll(checkCode(downs.values(), realMap, "zd"));
  79 +
  80 + //按线路分组
  81 + ArrayListMultimap<String, SCodeInfo> mList = ArrayListMultimap.create();
  82 + for (SCodeInfo sci : rs) {
  83 + mList.put(sci.getLineCode(), sci);
  84 + }
  85 +
  86 + multimap = mList;
  87 + logger.info("站点检查 end.... idx: " + (multimap.keySet().size() > 0 ? JSON.toJSONString(multimap.keySet()):"无"));
  88 + } catch (Exception e) {
  89 + logger.error("", e);
  90 + }
  91 + }
  92 +
  93 + private List<SCodeInfo> checkCode(Collection<ScheduleRealInfo> list, Map<String, SCodeInfo> realMap, String qdOrZd) {
  94 + List<SCodeInfo> rs = new ArrayList<>();
  95 + String k;
  96 + SCodeInfo sci;
  97 + for(ScheduleRealInfo sch : list){
  98 + k = sch.getXlBm() + "_" + sch.getXlDir() + "_";
  99 +
  100 + sci = realMap.get(k + getName(sch, qdOrZd));//名称和编码都不存在
  101 + if(null == sci && !realMap.containsKey(k + getCode(sch, qdOrZd))){
  102 + sci = SCodeInfo.getInstance(sch, qdOrZd);
  103 + rs.add(sci);
  104 + continue;
  105 + }
  106 + else if(null != sci && !codeEq(sci, getCode(sch, qdOrZd))){//名称一致的站点,编码不一致
  107 + sci.setStationCode(getCode(sch, qdOrZd));
  108 + rs.add(sci);
  109 + continue;
  110 + }
  111 + }
  112 + return rs;
  113 + }
  114 +
  115 + private boolean codeEq(SCodeInfo sci, String code){
  116 + return sci.getRealStationCode().equals(code) || sci.getRealStationCode().indexOf(code + "^") != -1;
  117 + }
  118 +
  119 + private String getName(ScheduleRealInfo sch, String qdOrZd) {
  120 + return qdOrZd.equals("qd")?sch.getQdzName():sch.getZdzName();
  121 + }
  122 +
  123 + private String getCode(ScheduleRealInfo sch, String qdOrZd) {
  124 + return qdOrZd.equals("qd")?sch.getQdzCode():sch.getZdzCode();
  125 + }
  126 +
  127 +
  128 + private Map<String, SCodeInfo> allRealCodeInfo() {
  129 + String sql = "select line_code,directions as up_down,station_code as real_station_code,station_name from bsth_c_stationroute where line in (select id from bsth_c_line where destroy=0) and destroy=0";
  130 + List<SCodeInfo> realList = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SCodeInfo.class));
  131 + Map<String, SCodeInfo> realMap = new HashMap<>();
  132 +
  133 + String kName;
  134 + SCodeInfo old;
  135 + for (SCodeInfo sci : realList) {
  136 + kName = sci.getLineCode() + "_" + sci.getUpDown() + "_" + sci.getStationName();
  137 +
  138 + if(realMap.containsKey(kName)){
  139 + //环线可能存在同名的站点
  140 + old = realMap.get(kName);
  141 + old.setRealStationCode(old.getRealStationCode() + "^" + sci.getRealStationCode() + "^");
  142 + continue;
  143 + }
  144 +
  145 + realMap.put(kName, sci);
  146 + realMap.put(sci.getLineCode() + "_" + sci.getUpDown() + "_" + sci.getRealStationCode(), sci);
  147 + }
  148 +
  149 + return realMap;
  150 + }
  151 +}
135 \ No newline at end of file 152 \ No newline at end of file
src/main/java/com/bsth/data/schedule/e_state_check/entity/SCodeInfo.java
1 -package com.bsth.data.schedule.e_state_check.entity;  
2 -  
3 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
4 -  
5 -/**  
6 - * Created by panzhao on 2018/4/2.  
7 - */  
8 -public class SCodeInfo {  
9 -  
10 - /**  
11 - * 线路编码  
12 - */  
13 - private String lineCode;  
14 -  
15 - /**  
16 - * 上下行  
17 - */  
18 - private int upDown;  
19 -  
20 - /**  
21 - * 站点编码  
22 - */  
23 - private String stationCode;  
24 -  
25 - /**  
26 - * 站点名称  
27 - */  
28 - private String stationName;  
29 -  
30 - /**  
31 - * 实际站点编码  
32 - */  
33 - private String realStationCode;  
34 -  
35 - public String getLineCode() {  
36 - return lineCode;  
37 - }  
38 -  
39 - public void setLineCode(String lineCode) {  
40 - this.lineCode = lineCode;  
41 - }  
42 -  
43 - public int getUpDown() {  
44 - return upDown;  
45 - }  
46 -  
47 - public void setUpDown(int upDown) {  
48 - this.upDown = upDown;  
49 - }  
50 -  
51 - public String getStationCode() {  
52 - return stationCode;  
53 - }  
54 -  
55 - public void setStationCode(String stationCode) {  
56 - this.stationCode = stationCode;  
57 - }  
58 -  
59 - public String getStationName() {  
60 - return stationName;  
61 - }  
62 -  
63 - public void setStationName(String stationName) {  
64 - this.stationName = stationName;  
65 - }  
66 -  
67 - public String getRealStationCode() {  
68 - return realStationCode;  
69 - }  
70 -  
71 - public void setRealStationCode(String realStationCode) {  
72 - this.realStationCode = realStationCode;  
73 - }  
74 -  
75 - public static SCodeInfo getUpInstance(ScheduleRealInfo sch) {  
76 - SCodeInfo sci = new SCodeInfo();  
77 - sci.setLineCode(sch.getXlBm());  
78 - sci.setUpDown(Integer.parseInt(sch.getXlDir()));  
79 - sci.setStationName(sch.getQdzName());  
80 - sci.setStationCode(sch.getQdzCode());  
81 - return sci;  
82 - }  
83 -  
84 - public static SCodeInfo geDownInstance(ScheduleRealInfo sch) {  
85 - SCodeInfo sci = new SCodeInfo();  
86 - sci.setLineCode(sch.getXlBm());  
87 - sci.setUpDown(Integer.parseInt(sch.getXlDir()));  
88 - sci.setStationName(sch.getZdzName());  
89 - sci.setStationCode(sch.getZdzCode());  
90 - return sci;  
91 - }  
92 -  
93 - public static SCodeInfo getInstance(ScheduleRealInfo sch, String qdOrZd) {  
94 - return qdOrZd.equals("qd")?getUpInstance(sch):geDownInstance(sch);  
95 - }  
96 -} 1 +package com.bsth.data.schedule.e_state_check.entity;
  2 +
  3 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  4 +
  5 +/**
  6 + * Created by panzhao on 2018/4/2.
  7 + */
  8 +public class SCodeInfo {
  9 +
  10 + /**
  11 + * 线路编码
  12 + */
  13 + private String lineCode;
  14 +
  15 + /**
  16 + * 上下行
  17 + */
  18 + private int upDown;
  19 +
  20 + /**
  21 + * 站点编码
  22 + */
  23 + private String stationCode;
  24 +
  25 + /**
  26 + * 站点名称
  27 + */
  28 + private String stationName;
  29 +
  30 + /**
  31 + * 实际站点编码
  32 + */
  33 + private String realStationCode;
  34 +
  35 + public String getLineCode() {
  36 + return lineCode;
  37 + }
  38 +
  39 + public void setLineCode(String lineCode) {
  40 + this.lineCode = lineCode;
  41 + }
  42 +
  43 + public int getUpDown() {
  44 + return upDown;
  45 + }
  46 +
  47 + public void setUpDown(int upDown) {
  48 + this.upDown = upDown;
  49 + }
  50 +
  51 + public String getStationCode() {
  52 + return stationCode;
  53 + }
  54 +
  55 + public void setStationCode(String stationCode) {
  56 + this.stationCode = stationCode;
  57 + }
  58 +
  59 + public String getStationName() {
  60 + return stationName;
  61 + }
  62 +
  63 + public void setStationName(String stationName) {
  64 + this.stationName = stationName;
  65 + }
  66 +
  67 + public String getRealStationCode() {
  68 + return realStationCode;
  69 + }
  70 +
  71 + public void setRealStationCode(String realStationCode) {
  72 + this.realStationCode = realStationCode;
  73 + }
  74 +
  75 + public static SCodeInfo getUpInstance(ScheduleRealInfo sch) {
  76 + SCodeInfo sci = new SCodeInfo();
  77 + sci.setLineCode(sch.getXlBm());
  78 + sci.setUpDown(Integer.parseInt(sch.getXlDir()));
  79 + sci.setStationName(sch.getQdzName());
  80 + sci.setStationCode(sch.getQdzCode());
  81 + return sci;
  82 + }
  83 +
  84 + public static SCodeInfo geDownInstance(ScheduleRealInfo sch) {
  85 + SCodeInfo sci = new SCodeInfo();
  86 + sci.setLineCode(sch.getXlBm());
  87 + sci.setUpDown(Integer.parseInt(sch.getXlDir()));
  88 + sci.setStationName(sch.getZdzName());
  89 + sci.setStationCode(sch.getZdzCode());
  90 + return sci;
  91 + }
  92 +
  93 + public static SCodeInfo getInstance(ScheduleRealInfo sch, String qdOrZd) {
  94 + return qdOrZd.equals("qd")?getUpInstance(sch):geDownInstance(sch);
  95 + }
  96 +}
src/main/java/com/bsth/data/schedule/e_state_check/thread/FixedCheckStationCodeThread.java
1 -package com.bsth.data.schedule.e_state_check.thread;  
2 -  
3 -import com.bsth.data.schedule.e_state_check.ScheduleStationCodeChecker;  
4 -import org.slf4j.Logger;  
5 -import org.slf4j.LoggerFactory;  
6 -import org.springframework.beans.factory.annotation.Autowired;  
7 -import org.springframework.stereotype.Component;  
8 -  
9 -/**  
10 - * 定时检查班次站点编码线程  
11 - * Created by panzhao on 2018/4/2.  
12 - */  
13 -@Component  
14 -public class FixedCheckStationCodeThread extends Thread {  
15 -  
16 - @Autowired  
17 - ScheduleStationCodeChecker scheduleStationCodeChecker;  
18 -  
19 - Logger logger = LoggerFactory.getLogger(this.getClass());  
20 -  
21 - @Override  
22 - public void run() {  
23 - try {  
24 - scheduleStationCodeChecker.checkAll();  
25 - } catch (Exception e) {  
26 - logger.error("", e);  
27 - }  
28 - }  
29 -} 1 +package com.bsth.data.schedule.e_state_check.thread;
  2 +
  3 +import com.bsth.data.schedule.e_state_check.ScheduleStationCodeChecker;
  4 +import org.slf4j.Logger;
  5 +import org.slf4j.LoggerFactory;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.stereotype.Component;
  8 +
  9 +/**
  10 + * 定时检查班次站点编码线程
  11 + * Created by panzhao on 2018/4/2.
  12 + */
  13 +@Component
  14 +public class FixedCheckStationCodeThread extends Thread {
  15 +
  16 + @Autowired
  17 + ScheduleStationCodeChecker scheduleStationCodeChecker;
  18 +
  19 + Logger logger = LoggerFactory.getLogger(this.getClass());
  20 +
  21 + @Override
  22 + public void run() {
  23 + try {
  24 + scheduleStationCodeChecker.checkAll();
  25 + } catch (Exception e) {
  26 + logger.error("", e);
  27 + }
  28 + }
  29 +}
src/main/java/com/bsth/data/schedule/edit_logs/entity/SchEditInfo.java
@@ -165,7 +165,13 @@ public class SchEditInfo { @@ -165,7 +165,13 @@ public class SchEditInfo {
165 long t = System.currentTimeMillis(); 165 long t = System.currentTimeMillis();
166 sei.setTs(t); 166 sei.setTs(t);
167 sei.setTimeStr(fmtHHmm.print(t)); 167 sei.setTimeStr(fmtHHmm.print(t));
168 - sei.setUser(userId); 168 + if(null != userId)
  169 + sei.setUser(userId);
  170 + else{
  171 + SysUser user = SecurityUtils.getCurrentUser();
  172 + if(user != null)
  173 + sei.setUser(user.getUserName());
  174 + }
169 sei.setRq(sch.getScheduleDateStr()); 175 sei.setRq(sch.getScheduleDateStr());
170 sei.setSchId(sch.getId()); 176 sei.setSchId(sch.getId());
171 sei.setLineCode(sch.getXlBm()); 177 sei.setLineCode(sch.getXlBm());
src/main/java/com/bsth/data/schedule/external/TccExternalService.java
1 -package com.bsth.data.schedule.external;  
2 -  
3 -import com.bsth.common.ResponseCode;  
4 -import com.bsth.controller.realcontrol.dto.ChangePersonCar;  
5 -import com.bsth.controller.realcontrol.dto.DftzAndDestroy;  
6 -import com.bsth.data.schedule.DayOfSchedule;  
7 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
8 -import com.bsth.service.realcontrol.ScheduleRealInfoService;  
9 -import com.bsth.websocket.handler.SendUtils;  
10 -import org.apache.commons.lang3.StringUtils;  
11 -import org.slf4j.Logger;  
12 -import org.slf4j.LoggerFactory;  
13 -import org.springframework.beans.factory.annotation.Autowired;  
14 -import org.springframework.stereotype.Component;  
15 -  
16 -import java.util.*;  
17 -  
18 -/**  
19 - * 对停车场开放的班次调度服务  
20 - * Created by panzhao on 2018/3/22.  
21 - */  
22 -@Component  
23 -public class TccExternalService {  
24 -  
25 - Logger logger = LoggerFactory.getLogger(TccExternalService.class);  
26 -  
27 - @Autowired  
28 - DayOfSchedule dayOfSchedule;  
29 -  
30 - @Autowired  
31 - ScheduleRealInfoService scheduleRealInfoService;  
32 -  
33 - @Autowired  
34 - SendUtils sendUtils;  
35 -  
36 - /**  
37 - * 待发调整  
38 - *  
39 - * @param dad  
40 - * @return  
41 - */  
42 - public Map<String, Object> dftz(DftzAndDestroy dad) {  
43 - Map<String, Object> rs = new HashMap();  
44 - rs.put("status", ResponseCode.ERROR);  
45 - try {  
46 - List<ScheduleRealInfo> updateList = new ArrayList<>();//要刷新的班次  
47 - ScheduleRealInfo sch = dayOfSchedule.get(dad.getDftzId());  
48 - if (null == sch) {  
49 - rs.put("msg", "班次已经不存在了!");  
50 - return rs;  
51 - }  
52 -  
53 - if (!sch.getBcType().equals("out")) {  
54 - rs.put("msg", "只能操作出场班次!");  
55 - return rs;  
56 - }  
57 -  
58 - //调整待发时间  
59 - scheduleRealInfoService.outgoAdjust(sch.getId(), dad.getRemarks(), dad.getNewTimeStr(), sch.getBcType(), "4", dad.getUserId());  
60 - updateList.add(sch);  
61 -  
62 - //需要烂班的班次  
63 - if (StringUtils.isNotEmpty(dad.getDestroyIdx())) {  
64 - Map<String, Object> dMap =  
65 - scheduleRealInfoService.destroy(dad.getDestroyIdx(), dad.getRemarks(), dad.getReason(), dad.getUserId());  
66 -  
67 -  
68 - updateList.addAll((Collection<? extends ScheduleRealInfo>) dMap.get("ts"));  
69 - }  
70 -  
71 - //通知调度客户端更新班次信息  
72 - sendUpdate2Page(updateList);  
73 -  
74 - rs.put("status", ResponseCode.SUCCESS);  
75 - rs.put("t", sch);  
76 - } catch (Exception e) {  
77 - rs.put("msg", "内部调度服务接口出现异常!");  
78 - logger.error("", e);  
79 - }  
80 - return rs;  
81 - }  
82 -  
83 - /**  
84 - * 换人换车  
85 - *  
86 - * @param cpcs  
87 - * @return  
88 - */  
89 - public Map<String, Object> hrhc(List<ChangePersonCar> cpcs,String tccCode, String userId) {  
90 - Map<String, Object> rs = new HashMap();  
91 - rs.put("status", ResponseCode.ERROR);  
92 - try {  
93 - rs = scheduleRealInfoService.multi_tzrc(cpcs, userId);  
94 -  
95 - //通知调度客户端更新班次信息  
96 - sendUpdate2Page(new ArrayList<ScheduleRealInfo>((Set)rs.get("ts")));  
97 -  
98 - //返回更新结果集中指定停车场的进出场班次  
99 - Set<ScheduleRealInfo> ts = (Set<ScheduleRealInfo>) rs.get("ts");  
100 - List<ScheduleRealInfo> list = new ArrayList<>();  
101 - for(ScheduleRealInfo sch : ts){  
102 - if((sch.getBcType().equals("out") && sch.getQdzCode().equals(tccCode))  
103 - || (sch.getBcType().equals("in") && sch.getZdzCode().equals(tccCode)))  
104 - list.add(sch);  
105 - }  
106 - rs.put("list", list);  
107 - rs.remove("ts");  
108 - } catch (Exception e) {  
109 - rs.put("msg", "服务器出现异常!");  
110 - logger.error("", e);  
111 - }  
112 - return rs;  
113 - }  
114 -  
115 -  
116 - public void sendUpdate2Page(List<ScheduleRealInfo> list) {  
117 - sendUtils.refreshSch(list);  
118 - }  
119 -} 1 +package com.bsth.data.schedule.external;
  2 +
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.controller.realcontrol.dto.ChangePersonCar;
  5 +import com.bsth.controller.realcontrol.dto.DftzAndDestroy;
  6 +import com.bsth.data.schedule.DayOfSchedule;
  7 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  8 +import com.bsth.service.realcontrol.ScheduleRealInfoService;
  9 +import com.bsth.websocket.handler.SendUtils;
  10 +import org.apache.commons.lang3.StringUtils;
  11 +import org.slf4j.Logger;
  12 +import org.slf4j.LoggerFactory;
  13 +import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.stereotype.Component;
  15 +
  16 +import java.util.*;
  17 +
  18 +/**
  19 + * 对停车场开放的班次调度服务
  20 + * Created by panzhao on 2018/3/22.
  21 + */
  22 +@Component
  23 +public class TccExternalService {
  24 +
  25 + Logger logger = LoggerFactory.getLogger(TccExternalService.class);
  26 +
  27 + @Autowired
  28 + DayOfSchedule dayOfSchedule;
  29 +
  30 + @Autowired
  31 + ScheduleRealInfoService scheduleRealInfoService;
  32 +
  33 + @Autowired
  34 + SendUtils sendUtils;
  35 +
  36 + /**
  37 + * 待发调整
  38 + *
  39 + * @param dad
  40 + * @return
  41 + */
  42 + public Map<String, Object> dftz(DftzAndDestroy dad) {
  43 + Map<String, Object> rs = new HashMap();
  44 + rs.put("status", ResponseCode.ERROR);
  45 + try {
  46 + List<ScheduleRealInfo> updateList = new ArrayList<>();//要刷新的班次
  47 + ScheduleRealInfo sch = dayOfSchedule.get(dad.getDftzId());
  48 + if (null == sch) {
  49 + rs.put("msg", "班次已经不存在了!");
  50 + return rs;
  51 + }
  52 +
  53 + if (!sch.getBcType().equals("out")) {
  54 + rs.put("msg", "只能操作出场班次!");
  55 + return rs;
  56 + }
  57 +
  58 + //调整待发时间
  59 + scheduleRealInfoService.outgoAdjust(sch.getId(), dad.getRemarks(), dad.getNewTimeStr(), sch.getBcType(), "4", dad.getUserId());
  60 + updateList.add(sch);
  61 +
  62 + //需要烂班的班次
  63 + if (StringUtils.isNotEmpty(dad.getDestroyIdx())) {
  64 + Map<String, Object> dMap =
  65 + scheduleRealInfoService.destroy(dad.getDestroyIdx(), dad.getRemarks(), dad.getReason(), dad.getUserId());
  66 +
  67 +
  68 + updateList.addAll((Collection<? extends ScheduleRealInfo>) dMap.get("ts"));
  69 + }
  70 +
  71 + //通知调度客户端更新班次信息
  72 + sendUpdate2Page(updateList);
  73 +
  74 + rs.put("status", ResponseCode.SUCCESS);
  75 + rs.put("t", sch);
  76 + } catch (Exception e) {
  77 + rs.put("msg", "内部调度服务接口出现异常!");
  78 + logger.error("", e);
  79 + }
  80 + return rs;
  81 + }
  82 +
  83 + /**
  84 + * 换人换车
  85 + *
  86 + * @param cpcs
  87 + * @return
  88 + */
  89 + public Map<String, Object> hrhc(List<ChangePersonCar> cpcs,String tccCode, String userId) {
  90 + Map<String, Object> rs = new HashMap();
  91 + rs.put("status", ResponseCode.ERROR);
  92 + try {
  93 + rs = scheduleRealInfoService.multi_tzrc(cpcs, userId);
  94 +
  95 + //通知调度客户端更新班次信息
  96 + sendUpdate2Page(new ArrayList<ScheduleRealInfo>((Set)rs.get("ts")));
  97 +
  98 + //返回更新结果集中指定停车场的进出场班次
  99 + Set<ScheduleRealInfo> ts = (Set<ScheduleRealInfo>) rs.get("ts");
  100 + List<ScheduleRealInfo> list = new ArrayList<>();
  101 + for(ScheduleRealInfo sch : ts){
  102 + if((sch.getBcType().equals("out") && sch.getQdzCode().equals(tccCode))
  103 + || (sch.getBcType().equals("in") && sch.getZdzCode().equals(tccCode)))
  104 + list.add(sch);
  105 + }
  106 + rs.put("list", list);
  107 + rs.remove("ts");
  108 + } catch (Exception e) {
  109 + rs.put("msg", "服务器出现异常!");
  110 + logger.error("", e);
  111 + }
  112 + return rs;
  113 + }
  114 +
  115 +
  116 + public void sendUpdate2Page(List<ScheduleRealInfo> list) {
  117 + sendUtils.refreshSch(list);
  118 + }
  119 +}
src/main/java/com/bsth/data/schedule/late_adjust/LateAdjustHandle.java
@@ -22,12 +22,12 @@ import java.util.List; @@ -22,12 +22,12 @@ import java.util.List;
22 22
23 /** 23 /**
24 * 误点自动调整待发 处理程序 24 * 误点自动调整待发 处理程序
25 - * 25 + * <p>
26 * 注意 :这里的误点是指应发未到 26 * 注意 :这里的误点是指应发未到
27 * Created by panzhao on 2017/4/16. 27 * Created by panzhao on 2017/4/16.
28 */ 28 */
29 @Component 29 @Component
30 -public class LateAdjustHandle implements ApplicationContextAware{ 30 +public class LateAdjustHandle implements ApplicationContextAware {
31 31
32 static LineConfigData lineConfigData; 32 static LineConfigData lineConfigData;
33 static SendUtils sendUtils; 33 static SendUtils sendUtils;
@@ -36,7 +36,7 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -36,7 +36,7 @@ public class LateAdjustHandle implements ApplicationContextAware{
36 36
37 /** 37 /**
38 * 应发未到车辆 和 班次 38 * 应发未到车辆 和 班次
39 - * 39 + * <p>
40 * 起点相同的,保留最后一个班次 40 * 起点相同的,保留最后一个班次
41 */ 41 */
42 private static ArrayListMultimap lateSchMaps; 42 private static ArrayListMultimap lateSchMaps;
@@ -48,55 +48,57 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -48,55 +48,57 @@ public class LateAdjustHandle implements ApplicationContextAware{
48 48
49 /** 49 /**
50 * 新增一个误点班次 50 * 新增一个误点班次
  51 + *
51 * @param sch 52 * @param sch
52 */ 53 */
53 - public static void putLate(ScheduleRealInfo sch){  
54 - try{ 54 + public static void putLate(ScheduleRealInfo sch) {
  55 + try {
55 //线路配置 56 //线路配置
56 LineConfig config = lineConfigData.get(sch.getXlBm()); 57 LineConfig config = lineConfigData.get(sch.getXlBm());
57 - if(sch.getLateMinute() == 0){  
58 - if(!config.isEnableYjtk()) 58 + if (sch.getLateMinute() == 0) {
  59 + if (!config.isEnableYjtk())
59 return; 60 return;
60 61
61 - sch.setLateMinute(sch.getXlDir().equals("0")?config.getUpStopMinute():config.getDownStopMinute()); 62 + sch.setLateMinute(sch.getXlDir().equals("0") ? config.getUpStopMinute() : config.getDownStopMinute());
62 } 63 }
63 64
64 - if(sch.getDfsj().compareTo(config.getYjtkStart()) > 0  
65 - && sch.getDfsj().compareTo(config.getYjtkEnd()) <= 0){ 65 + if (sch.getDfsj().compareTo(config.getYjtkStart()) > 0
  66 + && sch.getDfsj().compareTo(config.getYjtkEnd()) <= 0) {
66 67
67 ScheduleRealInfo old = popLateSch(sch); 68 ScheduleRealInfo old = popLateSch(sch);
68 69
69 //班次被压入 70 //班次被压入
70 - if(lateSchMaps.containsEntry(sch.getClZbh(), sch)){ 71 + if (lateSchMaps.containsEntry(sch.getClZbh(), sch)) {
71 72
72 - logger.info("【应发未到 -多个("+lateSchMaps.get(sch.getClZbh()).size()+")】班次 " + sch.getClZbh() + " -" + sch.getDfsj() + " -id: " + sch.getId() + " -加入误点调整!"); 73 + logger.info("【应发未到 -多个(" + lateSchMaps.get(sch.getClZbh()).size() + ")】班次 " + sch.getClZbh() + " -" + sch.getDfsj() + " -id: " + sch.getId() + " -加入误点调整!");
73 //通知客户端 74 //通知客户端
74 sch.setLate2(true); 75 sch.setLate2(true);
75 sendUtils.sendAutoWdtz(sch, old); 76 sendUtils.sendAutoWdtz(sch, old);
76 } 77 }
77 } 78 }
78 79
79 - }catch (Exception e){ 80 + } catch (Exception e) {
80 logger.error("", e); 81 logger.error("", e);
81 } 82 }
82 } 83 }
83 84
84 /** 85 /**
85 * 压入新的误点班次 86 * 压入新的误点班次
  87 + *
86 * @param sch 88 * @param sch
87 * @return 返回被移除的误点班次 89 * @return 返回被移除的误点班次
88 */ 90 */
89 private static ScheduleRealInfo popLateSch(ScheduleRealInfo sch) { 91 private static ScheduleRealInfo popLateSch(ScheduleRealInfo sch) {
90 List<ScheduleRealInfo> list = lateSchMaps.get(sch.getClZbh()); 92 List<ScheduleRealInfo> list = lateSchMaps.get(sch.getClZbh());
91 93
92 - if(null == list || list.size() == 0) 94 + if (null == list || list.size() == 0)
93 lateSchMaps.put(sch.getClZbh(), sch); 95 lateSchMaps.put(sch.getClZbh(), sch);
94 else { 96 else {
95 - ScheduleRealInfo old = findExistQdz(list, sch.getQdzCode(), sch.getQdzName()); 97 + ScheduleRealInfo old = findExistQdz(list, sch.getQdzCode(), sch.getQdzName(), "");
96 98
97 - if(null == old) 99 + if (null == old)
98 lateSchMaps.put(sch.getClZbh(), sch); 100 lateSchMaps.put(sch.getClZbh(), sch);
99 - else if(old.getDfsjT() < sch.getDfsjT()){ 101 + else if (old.getDfsjT() < sch.getDfsjT()) {
100 //同一个起点,保留时间最大的班次 102 //同一个起点,保留时间最大的班次
101 lateSchMaps.remove(old.getClZbh(), old); 103 lateSchMaps.remove(old.getClZbh(), old);
102 lateSchMaps.put(sch.getClZbh(), sch); 104 lateSchMaps.put(sch.getClZbh(), sch);
@@ -111,13 +113,15 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -111,13 +113,15 @@ public class LateAdjustHandle implements ApplicationContextAware{
111 113
112 /** 114 /**
113 * 搜索同样起点的班次 115 * 搜索同样起点的班次
  116 + *
114 * @param list 117 * @param list
115 * @return 118 * @return
116 */ 119 */
117 - private static ScheduleRealInfo findExistQdz(List<ScheduleRealInfo> list, String qdzCode, String qdzName) {  
118 - for(ScheduleRealInfo item : list){  
119 - if(item.getQdzCode().equals(qdzCode)  
120 - || item.getQdzName().equals(qdzName)) 120 + private static ScheduleRealInfo findExistQdz(List<ScheduleRealInfo> list, String qdzCode, String nam1, String name2) {
  121 + for (ScheduleRealInfo item : list) {
  122 + if (item.getQdzCode().equals(qdzCode)
  123 + || item.getQdzName().equals(nam1)
  124 + || item.getQdzName().equals(name2))
121 return item; 125 return item;
122 } 126 }
123 return null; 127 return null;
@@ -126,15 +130,16 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -126,15 +130,16 @@ public class LateAdjustHandle implements ApplicationContextAware{
126 130
127 /** 131 /**
128 * 获取所有应发未到的班次 132 * 获取所有应发未到的班次
  133 + *
129 * @return 134 * @return
130 */ 135 */
131 - public static Collection<ScheduleRealInfo> allLateSch(){ 136 + public static Collection<ScheduleRealInfo> allLateSch() {
132 return lateSchMaps.values(); 137 return lateSchMaps.values();
133 } 138 }
134 139
135 - public static void remove(ScheduleRealInfo sch){ 140 + public static void remove(ScheduleRealInfo sch) {
136 try { 141 try {
137 - if(lateSchMaps.containsEntry(sch.getClZbh(), sch)){ 142 + if (lateSchMaps.containsEntry(sch.getClZbh(), sch)) {
138 lateSchMaps.remove(sch.getClZbh(), sch); 143 lateSchMaps.remove(sch.getClZbh(), sch);
139 144
140 sch.setLate2(false); 145 sch.setLate2(false);
@@ -143,46 +148,55 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -143,46 +148,55 @@ public class LateAdjustHandle implements ApplicationContextAware{
143 148
144 logger.info("移除误点调整 -" + sch.getClZbh() + " -time: " + sch.getDfsj() + " -id: " + sch.getId()); 149 logger.info("移除误点调整 -" + sch.getClZbh() + " -time: " + sch.getDfsj() + " -id: " + sch.getId());
145 } 150 }
146 - }catch (Exception e){ 151 + } catch (Exception e) {
147 logger.error("", e); 152 logger.error("", e);
148 } 153 }
149 } 154 }
150 155
151 /** 156 /**
152 * 车辆到站 157 * 车辆到站
  158 + *
153 * @param gps 159 * @param gps
154 */ 160 */
155 - public static void carArrive(GpsEntity gps){  
156 - try{ 161 + public static void carArrive(GpsEntity gps) {
  162 + try {
  163 + if (gps.getInstation() <= 0) {
  164 + return;
  165 + }
  166 +
157 List<ScheduleRealInfo> list = lateSchMaps.get(gps.getNbbm()); 167 List<ScheduleRealInfo> list = lateSchMaps.get(gps.getNbbm());
158 168
159 - if(null == list || list.size() == 0) 169 + if (null == list || list.size() == 0)
160 return; 170 return;
161 171
162 - String key = gps.getStopNo();  
163 - if(gps.getInstation()==1){  
164 - if(StringUtils.isNotEmpty(gps.getCarparkNo()))  
165 - key = gps.getCarparkNo();//停车场名称  
166 - else  
167 - key = gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo();//站点名称 172 +
  173 + String key = gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo()
  174 + , name1 = BasicData.stationCode2NameMap.get(key)//站点名称
  175 + , name2 = null;
  176 + if (StringUtils.isNotEmpty(gps.getCarparkNo())) {
  177 + name2 = BasicData.stationCode2NameMap.get(gps.getCarparkNo());
  178 + }
  179 +
  180 + if (gps.getInstation() == 2) {
  181 + name1 = name2;//进场,没有站
168 } 182 }
169 183
170 - gps.setStationName(BasicData.stationCode2NameMap.get(key)); 184 + gps.setStationName(name1);
171 //根据起点站获取误点班次 185 //根据起点站获取误点班次
172 - ScheduleRealInfo sch = findExistQdz(list, gps.getStopNo(), gps.getStationName()); 186 + ScheduleRealInfo sch = findExistQdz(list, gps.getStopNo(), name1, name2);
173 187
174 - if(null == sch) 188 + if (null == sch)
175 return; 189 return;
176 190
177 //可能是延迟信号,gps时间没有误点 191 //可能是延迟信号,gps时间没有误点
178 - if(gps.getTimestamp() <= sch.getDfsjT()){ 192 + if (gps.getTimestamp() <= sch.getDfsjT()) {
179 sch.setLate2(false); 193 sch.setLate2(false);
180 lateSchMaps.remove(sch.getClZbh(), sch); 194 lateSchMaps.remove(sch.getClZbh(), sch);
181 return; 195 return;
182 } 196 }
183 197
184 - if(gps.getStationName().equals(sch.getQdzName())  
185 - || gps.getStopNo().equals(sch.getQdzCode())){ 198 + if (gps.getStationName().equals(sch.getQdzName())
  199 + || gps.getStopNo().equals(sch.getQdzCode())) {
186 200
187 //自动调整待发 到达时间 + 停靠时间 201 //自动调整待发 到达时间 + 停靠时间
188 long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000)); 202 long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000));
@@ -195,7 +209,7 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -195,7 +209,7 @@ public class LateAdjustHandle implements ApplicationContextAware{
195 lateSchMaps.remove(sch.getClZbh(), sch); 209 lateSchMaps.remove(sch.getClZbh(), sch);
196 logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt); 210 logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt);
197 } 211 }
198 - }catch (Exception e){ 212 + } catch (Exception e) {
199 e.printStackTrace(); 213 e.printStackTrace();
200 logger.error("late2 car arrive", e); 214 logger.error("late2 car arrive", e);
201 } 215 }
src/main/java/com/bsth/data/schedule/taopao/TaoPaoDataBuffer.java 0 → 100644
  1 +package com.bsth.data.schedule.taopao;
  2 +
  3 +import com.bsth.data.schedule.DayOfSchedule;
  4 +import com.bsth.data.schedule.taopao.entity.CLTaoPaoInfo;
  5 +import com.google.common.collect.ArrayListMultimap;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.stereotype.Component;
  8 +
  9 +/**
  10 + * 实际班次套跑信息
  11 + */
  12 +@Component
  13 +public class TaoPaoDataBuffer {
  14 +
  15 + /**
  16 + * 线路编码 ——> 套跑信息
  17 + */
  18 + private static ArrayListMultimap<String, CLTaoPaoInfo> multimap;
  19 +
  20 + static {
  21 + multimap = ArrayListMultimap.create();
  22 + }
  23 +
  24 + @Autowired
  25 + DayOfSchedule dayOfSchedule;
  26 +}
src/main/java/com/bsth/data/schedule/taopao/entity/CLTaoPaoInfo.java 0 → 100644
  1 +package com.bsth.data.schedule.taopao.entity;
  2 +
  3 +/**
  4 + * 车辆套跑 信息
  5 + */
  6 +public class CLTaoPaoInfo {
  7 +
  8 + private String lineCode;
  9 +
  10 + private String nbbm;
  11 +
  12 + /**
  13 + * 班次ID , 号分割多个
  14 + */
  15 + private String schIdx;
  16 +
  17 + public String getLineCode() {
  18 + return lineCode;
  19 + }
  20 +
  21 + public void setLineCode(String lineCode) {
  22 + this.lineCode = lineCode;
  23 + }
  24 +
  25 + public String getNbbm() {
  26 + return nbbm;
  27 + }
  28 +
  29 + public void setNbbm(String nbbm) {
  30 + this.nbbm = nbbm;
  31 + }
  32 +
  33 + public String getSchIdx() {
  34 + return schIdx;
  35 + }
  36 +
  37 + public void setSchIdx(String schIdx) {
  38 + this.schIdx = schIdx;
  39 + }
  40 +}
src/main/java/com/bsth/data/schedule/taopao/entity/TPCutRealSchedule.java 0 → 100644
  1 +package com.bsth.data.schedule.taopao.entity;
  2 +
  3 +import javax.persistence.Transient;
  4 +
  5 +/**
  6 + * 精简的班次信息(展示套跑信息用)
  7 + */
  8 +public class TPCutRealSchedule {
  9 +
  10 + /** 主键Id */
  11 + private Long id;
  12 +
  13 + /** 排班日期字符串 YYYY-MM-DD */
  14 + private String scheduleDateStr;
  15 +
  16 + /** 路牌名称 */
  17 + private String lpName;
  18 +
  19 + /** 车辆自编号 */
  20 + private String clZbh;
  21 +
  22 + /** 驾驶员工号 */
  23 + private String jGh;
  24 + /** 驾驶员名字 */
  25 + private String jName;
  26 + /** 售票员工号 */
  27 + private String sGh;
  28 + /** 售票员名字 */
  29 + private String sName;
  30 +
  31 + /** 线路方向 */
  32 + private String xlDir;
  33 + /** 起点站名字 */
  34 + private String qdzName;
  35 +
  36 + /** 终点站名字 */
  37 + private String zdzName;
  38 +
  39 + /** 计划发车时间(格式 HH:mm) */
  40 + private String fcsj;
  41 + /** 计划发车时间戳*/
  42 + @Transient
  43 + private Long fcsjT;
  44 +
  45 + /** 计划终点时间(格式 HH:mm) */
  46 + private String zdsj;
  47 + /** 计划终点时间戳*/
  48 + @Transient
  49 + private Long zdsjT;
  50 +
  51 + /** 计划里程 */
  52 + private Double jhlc;
  53 +
  54 + /** 班次历时 */
  55 + private Integer bcsj;
  56 +
  57 + /**
  58 + * 班次类型 TODO:正常班次、出场、进场、加油、区间班次、放空班次、放大站班次、两点间空驶
  59 + */
  60 + private String bcType;
  61 +
  62 + //放站班次 站点名称
  63 + private String majorStationName;
  64 +
  65 + /** 实际发车时间*/
  66 + private String fcsjActual;
  67 + /**实际终点时间 */
  68 + private String zdsjActual;
  69 +
  70 + /**班次状态 0 未执行 1 正在执行 2 已执行 -1 已烂班 */
  71 + private int status;
  72 +
  73 + private String adjustExps;
  74 +
  75 + /** 是否是临加班次 */
  76 + private boolean sflj;
  77 +
  78 + /** 备注*/
  79 + private String remarks;
  80 +
  81 + /**待发时间(格式 HH:mm) */
  82 + private String dfsj;
  83 +
  84 + /**待发时间戳 */
  85 + @Transient
  86 + private Long dfsjT;
  87 +
  88 + /** 指令下发状态 60: 已发送, 100: 设备确认收到, 200:驾驶员确认 0:失败 */
  89 + private Integer directiveState = -1;
  90 +
  91 + /** 起点站计划到达时间 */
  92 + @Transient
  93 + private String qdzArrDatejh;
  94 +
  95 + /** 起点站实际到达时间 */
  96 + @Transient
  97 + private String qdzArrDatesj;
  98 +
  99 + public Long getId() {
  100 + return id;
  101 + }
  102 +
  103 + public void setId(Long id) {
  104 + this.id = id;
  105 + }
  106 +
  107 + public String getScheduleDateStr() {
  108 + return scheduleDateStr;
  109 + }
  110 +
  111 + public void setScheduleDateStr(String scheduleDateStr) {
  112 + this.scheduleDateStr = scheduleDateStr;
  113 + }
  114 +
  115 + public String getLpName() {
  116 + return lpName;
  117 + }
  118 +
  119 + public void setLpName(String lpName) {
  120 + this.lpName = lpName;
  121 + }
  122 +
  123 + public String getClZbh() {
  124 + return clZbh;
  125 + }
  126 +
  127 + public void setClZbh(String clZbh) {
  128 + this.clZbh = clZbh;
  129 + }
  130 +
  131 + public String getjGh() {
  132 + return jGh;
  133 + }
  134 +
  135 + public void setjGh(String jGh) {
  136 + this.jGh = jGh;
  137 + }
  138 +
  139 + public String getjName() {
  140 + return jName;
  141 + }
  142 +
  143 + public void setjName(String jName) {
  144 + this.jName = jName;
  145 + }
  146 +
  147 + public String getsGh() {
  148 + return sGh;
  149 + }
  150 +
  151 + public void setsGh(String sGh) {
  152 + this.sGh = sGh;
  153 + }
  154 +
  155 + public String getsName() {
  156 + return sName;
  157 + }
  158 +
  159 + public void setsName(String sName) {
  160 + this.sName = sName;
  161 + }
  162 +
  163 + public String getXlDir() {
  164 + return xlDir;
  165 + }
  166 +
  167 + public void setXlDir(String xlDir) {
  168 + this.xlDir = xlDir;
  169 + }
  170 +
  171 + public String getQdzName() {
  172 + return qdzName;
  173 + }
  174 +
  175 + public void setQdzName(String qdzName) {
  176 + this.qdzName = qdzName;
  177 + }
  178 +
  179 + public String getZdzName() {
  180 + return zdzName;
  181 + }
  182 +
  183 + public void setZdzName(String zdzName) {
  184 + this.zdzName = zdzName;
  185 + }
  186 +
  187 + public String getFcsj() {
  188 + return fcsj;
  189 + }
  190 +
  191 + public void setFcsj(String fcsj) {
  192 + this.fcsj = fcsj;
  193 + }
  194 +
  195 + public Long getFcsjT() {
  196 + return fcsjT;
  197 + }
  198 +
  199 + public void setFcsjT(Long fcsjT) {
  200 + this.fcsjT = fcsjT;
  201 + }
  202 +
  203 + public String getZdsj() {
  204 + return zdsj;
  205 + }
  206 +
  207 + public void setZdsj(String zdsj) {
  208 + this.zdsj = zdsj;
  209 + }
  210 +
  211 + public Long getZdsjT() {
  212 + return zdsjT;
  213 + }
  214 +
  215 + public void setZdsjT(Long zdsjT) {
  216 + this.zdsjT = zdsjT;
  217 + }
  218 +
  219 + public Double getJhlc() {
  220 + return jhlc;
  221 + }
  222 +
  223 + public void setJhlc(Double jhlc) {
  224 + this.jhlc = jhlc;
  225 + }
  226 +
  227 + public Integer getBcsj() {
  228 + return bcsj;
  229 + }
  230 +
  231 + public void setBcsj(Integer bcsj) {
  232 + this.bcsj = bcsj;
  233 + }
  234 +
  235 + public String getBcType() {
  236 + return bcType;
  237 + }
  238 +
  239 + public void setBcType(String bcType) {
  240 + this.bcType = bcType;
  241 + }
  242 +
  243 + public String getMajorStationName() {
  244 + return majorStationName;
  245 + }
  246 +
  247 + public void setMajorStationName(String majorStationName) {
  248 + this.majorStationName = majorStationName;
  249 + }
  250 +
  251 + public String getFcsjActual() {
  252 + return fcsjActual;
  253 + }
  254 +
  255 + public void setFcsjActual(String fcsjActual) {
  256 + this.fcsjActual = fcsjActual;
  257 + }
  258 +
  259 + public String getZdsjActual() {
  260 + return zdsjActual;
  261 + }
  262 +
  263 + public void setZdsjActual(String zdsjActual) {
  264 + this.zdsjActual = zdsjActual;
  265 + }
  266 +
  267 + public int getStatus() {
  268 + return status;
  269 + }
  270 +
  271 + public void setStatus(int status) {
  272 + this.status = status;
  273 + }
  274 +
  275 + public String getAdjustExps() {
  276 + return adjustExps;
  277 + }
  278 +
  279 + public void setAdjustExps(String adjustExps) {
  280 + this.adjustExps = adjustExps;
  281 + }
  282 +
  283 + public boolean isSflj() {
  284 + return sflj;
  285 + }
  286 +
  287 + public void setSflj(boolean sflj) {
  288 + this.sflj = sflj;
  289 + }
  290 +
  291 + public String getRemarks() {
  292 + return remarks;
  293 + }
  294 +
  295 + public void setRemarks(String remarks) {
  296 + this.remarks = remarks;
  297 + }
  298 +
  299 + public String getDfsj() {
  300 + return dfsj;
  301 + }
  302 +
  303 + public void setDfsj(String dfsj) {
  304 + this.dfsj = dfsj;
  305 + }
  306 +
  307 + public Long getDfsjT() {
  308 + return dfsjT;
  309 + }
  310 +
  311 + public void setDfsjT(Long dfsjT) {
  312 + this.dfsjT = dfsjT;
  313 + }
  314 +
  315 + public Integer getDirectiveState() {
  316 + return directiveState;
  317 + }
  318 +
  319 + public void setDirectiveState(Integer directiveState) {
  320 + this.directiveState = directiveState;
  321 + }
  322 +
  323 + public String getQdzArrDatejh() {
  324 + return qdzArrDatejh;
  325 + }
  326 +
  327 + public void setQdzArrDatejh(String qdzArrDatejh) {
  328 + this.qdzArrDatejh = qdzArrDatejh;
  329 + }
  330 +
  331 + public String getQdzArrDatesj() {
  332 + return qdzArrDatesj;
  333 + }
  334 +
  335 + public void setQdzArrDatesj(String qdzArrDatesj) {
  336 + this.qdzArrDatesj = qdzArrDatesj;
  337 + }
  338 +}
src/main/java/com/bsth/entity/oil/Lsylb.java 0 → 100644
  1 +package com.bsth.entity.oil;
  2 +
  3 +import java.text.DecimalFormat;
  4 +import java.util.Date;
  5 +
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.GeneratedValue;
  8 +import javax.persistence.Id;
  9 +import javax.persistence.Table;
  10 +import javax.persistence.Transient;
  11 +
  12 +import org.springframework.format.annotation.DateTimeFormat;
  13 +
  14 +import com.bsth.data.BasicData;
  15 +
  16 +@Entity
  17 +@Table(name = "bsth_ls_ylb")
  18 +public class Lsylb {
  19 + @Id
  20 + @GeneratedValue
  21 + private Integer id;
  22 + @DateTimeFormat(pattern="yyyy-MM-dd")
  23 + private Date rq;
  24 + private String xlbm;
  25 + private String ssgsdm;
  26 + private String fgsdm;
  27 + private String nbbm;
  28 + private String jsy;
  29 + private Double czlc=0.0;
  30 + private Double jzlc=0.0;
  31 + private Double czyl=0.0;
  32 + private Double jzyl=0.0;
  33 + private Double jzl=0.0;
  34 + private int sfkt;
  35 + private String jhsj;
  36 + private Double yh=0.0;
  37 + private Double sh=0.0;
  38 + private String shyy;
  39 + private Double zlc=0.0;
  40 + private int yhlx;
  41 + private String rylx="0";
  42 + private Double ns=0.0;
  43 + private Double fyylc=0.0;
  44 + private Double jhzlc=0.0;
  45 + private Double jhfyylc=0.0;
  46 + private int jhzbc;
  47 + private int jhbc;
  48 + private int sjzbc;
  49 + private int sjbc;
  50 + private String edituser;
  51 + private Date edittime;
  52 + private Date createtime;
  53 +
  54 + private int nylx;
  55 +
  56 + @Transient
  57 + private String bglyh;
  58 +
  59 + @Transient
  60 + private String xlname;
  61 +
  62 + @Transient
  63 + private String gsname;
  64 +
  65 + @Transient
  66 + private String fgsname;
  67 +
  68 + @Transient
  69 + private String name;
  70 +
  71 + public Integer getId() {
  72 + return id;
  73 + }
  74 +
  75 + public void setId(Integer id) {
  76 + this.id = id;
  77 + }
  78 + public Date getRq() {
  79 + return rq;
  80 + }
  81 +
  82 + public void setRq(Date rq) {
  83 + this.rq = rq;
  84 + }
  85 +
  86 + public String getXlbm() {
  87 + return xlbm;
  88 + }
  89 +
  90 + public void setXlbm(String xlbm) {
  91 + this.xlbm = xlbm;
  92 + }
  93 + public String getSsgsdm() {
  94 + return ssgsdm;
  95 + }
  96 + public void setSsgsdm(String ssgsdm) {
  97 + this.ssgsdm = ssgsdm;
  98 + }
  99 + public String getFgsdm() {
  100 + return fgsdm;
  101 + }
  102 + public void setFgsdm(String fgsdm) {
  103 + this.fgsdm = fgsdm;
  104 + }
  105 + public String getNbbm() {
  106 + return nbbm;
  107 + }
  108 + public void setNbbm(String nbbm) {
  109 + this.nbbm = nbbm;
  110 + }
  111 + public String getJsy() {
  112 + return jsy;
  113 + }
  114 + public void setJsy(String jsy) {
  115 + this.jsy = jsy;
  116 + }
  117 + public Double getCzlc() {
  118 + return czlc;
  119 + }
  120 + public void setCzlc(Double czlc) {
  121 + this.czlc = czlc;
  122 + }
  123 + public Double getJzlc() {
  124 + return jzlc;
  125 + }
  126 + public void setJzlc(Double jzlc) {
  127 + this.jzlc = jzlc;
  128 + }
  129 + public Double getCzyl() {
  130 + return czyl;
  131 + }
  132 + public void setCzyl(Double czyl) {
  133 + this.czyl = czyl;
  134 + }
  135 + public Double getJzyl() {
  136 + return jzyl;
  137 + }
  138 + public void setJzyl(Double jzyl) {
  139 + this.jzyl = jzyl;
  140 + }
  141 + public Double getJzl() {
  142 + return jzl;
  143 + }
  144 + public void setJzl(Double jzl) {
  145 + this.jzl = jzl;
  146 + }
  147 + public int getSfkt() {
  148 + return sfkt;
  149 + }
  150 + public void setSfkt(int sfkt) {
  151 + this.sfkt = sfkt;
  152 + }
  153 + public String getJhsj() {
  154 + return jhsj;
  155 + }
  156 + public void setJhsj(String jhsj) {
  157 + this.jhsj = jhsj;
  158 + }
  159 + public Double getYh() {
  160 + return yh;
  161 + }
  162 + public void setYh(Double yh) {
  163 + this.yh = yh;
  164 + }
  165 + public Double getSh() {
  166 + return sh;
  167 + }
  168 + public void setSh(Double sh) {
  169 + this.sh = sh;
  170 + }
  171 + public String getShyy() {
  172 + return shyy;
  173 + }
  174 + public void setShyy(String shyy) {
  175 + this.shyy = shyy;
  176 + }
  177 + public Double getZlc() {
  178 + return zlc;
  179 + }
  180 + public void setZlc(Double zlc) {
  181 + this.zlc = zlc;
  182 + }
  183 + public int getYhlx() {
  184 + return yhlx;
  185 + }
  186 + public void setYhlx(int yhlx) {
  187 + this.yhlx = yhlx;
  188 + }
  189 + public String getRylx() {
  190 + return rylx;
  191 + }
  192 + public void setRylx(String rylx) {
  193 + this.rylx = rylx;
  194 + }
  195 + public Double getNs() {
  196 + return ns;
  197 + }
  198 + public void setNs(Double ns) {
  199 + this.ns = ns;
  200 + }
  201 + public Double getFyylc() {
  202 + return fyylc;
  203 + }
  204 + public void setFyylc(Double fyylc) {
  205 + this.fyylc = fyylc;
  206 + }
  207 + public Double getJhzlc() {
  208 + return jhzlc;
  209 + }
  210 + public void setJhzlc(Double jhzlc) {
  211 + this.jhzlc = jhzlc;
  212 + }
  213 + public Double getJhfyylc() {
  214 + return jhfyylc;
  215 + }
  216 + public void setJhfyylc(Double jhfyylc) {
  217 + this.jhfyylc = jhfyylc;
  218 + }
  219 + public int getJhzbc() {
  220 + return jhzbc;
  221 + }
  222 + public void setJhzbc(int jhzbc) {
  223 + this.jhzbc = jhzbc;
  224 + }
  225 + public int getJhbc() {
  226 + return jhbc;
  227 + }
  228 + public void setJhbc(int jhbc) {
  229 + this.jhbc = jhbc;
  230 + }
  231 + public int getSjzbc() {
  232 + return sjzbc;
  233 + }
  234 + public void setSjzbc(int sjzbc) {
  235 + this.sjzbc = sjzbc;
  236 + }
  237 + public int getSjbc() {
  238 + return sjbc;
  239 + }
  240 + public void setSjbc(int sjbc) {
  241 + this.sjbc = sjbc;
  242 + }
  243 + public String getEdituser() {
  244 + return edituser;
  245 + }
  246 + public void setEdituser(String edituser) {
  247 + this.edituser = edituser;
  248 + }
  249 + public Date getEdittime() {
  250 + return edittime;
  251 + }
  252 + public void setEdittime(Date edittime) {
  253 + this.edittime = edittime;
  254 + }
  255 + public Date getCreatetime() {
  256 + return createtime;
  257 + }
  258 + public void setCreatetime(Date createtime) {
  259 + this.createtime = createtime;
  260 + }
  261 + public int getNylx() {
  262 + return nylx;
  263 + }
  264 + public void setNylx(int nylx) {
  265 + this.nylx = nylx;
  266 + }
  267 +
  268 + public String getBglyh() {
  269 + if(this.getZlc()==0){
  270 + return "0";
  271 + }else{
  272 + DecimalFormat df = new DecimalFormat("0.00");
  273 + return df.format(this.getYh()/this.getZlc()*100);
  274 + }
  275 + }
  276 +
  277 + public void setBglyh(String bglyh) {
  278 + this.bglyh = bglyh;
  279 + }
  280 +
  281 + public String getXlname() {
  282 + return BasicData.lineCode2NameMap.get(this.xlbm);
  283 + }
  284 +
  285 + public void setXlname(String xlname) {
  286 + this.xlname = xlname;
  287 + }
  288 +
  289 + public String getGsname() {
  290 + return BasicData.businessCodeNameMap.get(this.ssgsdm);
  291 + }
  292 +
  293 + public void setGsname(String gsname) {
  294 + this.gsname = gsname;
  295 + }
  296 +
  297 +
  298 + public String getFgsname() {
  299 + return BasicData.businessFgsCodeNameMap.get(this.fgsdm+"_"+this.ssgsdm);
  300 + }
  301 +
  302 + public void setFgsname(String fgsname) {
  303 + this.fgsname = fgsname;
  304 + }
  305 +
  306 + public String getName() {
  307 + return BasicData.allPerson.get(this.ssgsdm+"-"+this.jsy);
  308 + }
  309 +
  310 + public void setName(String name) {
  311 + this.name = name;
  312 + }
  313 +
  314 +
  315 +}
src/main/java/com/bsth/repository/oil/LsylbRepository.java 0 → 100644
  1 +package com.bsth.repository.oil;
  2 +
  3 +import java.util.Date;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +
  7 +import org.springframework.data.jpa.repository.Modifying;
  8 +import org.springframework.data.jpa.repository.Query;
  9 +import org.springframework.stereotype.Repository;
  10 +import org.springframework.transaction.annotation.Transactional;
  11 +
  12 +import com.bsth.entity.oil.Lsylb;
  13 +import com.bsth.entity.oil.Ylb;
  14 +import com.bsth.repository.BaseRepository;
  15 +
  16 +@Repository
  17 +public interface LsylbRepository extends BaseRepository<Lsylb, Integer>{
  18 + /**
  19 + *
  20 + * @param nbbm
  21 + * @param rq
  22 + * @param xlbm
  23 + * @return
  24 + */
  25 + @Query(value="select nbbm,count(nbbm) from bsth_ls_ylb where to_days(?1)=to_days(rq) and "
  26 + + " ssgsdm like %?2% "
  27 + + " and fgsdm like %?3%"
  28 + + " and xlbm like %?4% and nbbm like %?5% and nylx= ?6 "
  29 + + " group by nbbm,rq,ssgsdm,fgsdm",nativeQuery=true)
  30 + List<Object[]> checkNbmmNum(String rq, String gsbm,String fgsbm,String xlbm,String nbbm,int nylx);
  31 +
  32 + @Query(value="select s from Lsylb s "
  33 + + " where to_days(?1)=to_days(s.rq) "
  34 + + " and s.ssgsdm =?2 "
  35 + + " and s.fgsdm =?3 "
  36 + + " and s.xlbm like %?4% "
  37 + + " and s.nylx =?5 "
  38 + + " and s.nbbm in ?6 order by nbbm,jhsj")
  39 + List<Lsylb> listYlb(String rq, String gsbm,String fgsbm,String xlbm,int nylx,List<String> listNbbm);
  40 +
  41 + @Query(value="select nbbm,sum(jzl*100) as jzl ,sum(zlc*100) as zlc from bsth_ls_ylb where to_days(?1)=to_days(rq) and "
  42 + + " ssgsdm like %?2% "
  43 + + " and fgsdm like %?3%"
  44 + + " and xlbm like %?4% and nbbm like %?5% and nylx =?6 "
  45 + + " group by nbbm,rq,ssgsdm,fgsdm,xlbm",nativeQuery=true)
  46 + List<Object[]> checkNbmmYl(String rq, String gsbm,String fgsbm,String xlbm,String nbbm,int nylx);
  47 +
  48 +
  49 + @Query(value="select ifnull(jzl,0),ifnull(yh,0),ifnull(sh,0) from bsth_ls_ylb "
  50 + + " where to_days(?1)=to_days(rq) "
  51 + + " and ssgsdm like %?2% "
  52 + + " and fgsdm like %?3%"
  53 + + " and xlbm like %?4% "
  54 + + " and nbbm like %?5% "
  55 + + " and nylx =?6",nativeQuery=true)
  56 + List<Object[]> sumYlb2(String rq, String gsbm,String fgsbm,String xlbm,String nbbm,int nylx);
  57 +
  58 +
  59 + @Query(value="select jzl,yh,sh from Lsylb s "
  60 + + " where to_days(?1)=to_days(s.rq) "
  61 + + " and s.ssgsdm like %?2% "
  62 + + " and s.fgsdm like %?3%"
  63 + + " and s.xlbm like %?4% "
  64 + + " and s.nbbm in ?5 and s.nylx=?6")
  65 + List<Object[]> sumYlb(String rq, String gsbm,String fgsbm,String xlbm,List<String> listNbbm,int nylx);
  66 +
  67 +}
src/main/java/com/bsth/service/calc/CalcWaybillService.java
@@ -32,6 +32,8 @@ public interface CalcWaybillService extends BaseService&lt;CalcWaybill, Integer&gt; { @@ -32,6 +32,8 @@ public interface CalcWaybillService extends BaseService&lt;CalcWaybill, Integer&gt; {
32 32
33 List<CalcStatistics> calcStatisticsDaily(String gsdm,String fgsdm, String line, String date, String date2, String xlName, String type); 33 List<CalcStatistics> calcStatisticsDaily(String gsdm,String fgsdm, String line, String date, String date2, String xlName, String type);
34 34
  35 + List<Map<String, Object>> calcStatisticsDaily2(String gsdm,String fgsdm, String line, String date, String date2, String xlName, String type);
  36 +
35 Map<String, Object> calcLineMileage(String date, String line); 37 Map<String, Object> calcLineMileage(String date, String line);
36 38
37 Map<String, Object> calcBusMileage(String date, String line); 39 Map<String, Object> calcBusMileage(String date, String line);
src/main/java/com/bsth/service/calc/impl/CalcWaybillServiceImpl.java
@@ -2,6 +2,7 @@ package com.bsth.service.calc.impl; @@ -2,6 +2,7 @@ package com.bsth.service.calc.impl;
2 2
3 import java.sql.ResultSet; 3 import java.sql.ResultSet;
4 import java.sql.SQLException; 4 import java.sql.SQLException;
  5 +import java.text.ParseException;
5 import java.text.SimpleDateFormat; 6 import java.text.SimpleDateFormat;
6 import java.util.ArrayList; 7 import java.util.ArrayList;
7 import java.util.Calendar; 8 import java.util.Calendar;
@@ -13,6 +14,7 @@ import java.util.HashSet; @@ -13,6 +14,7 @@ import java.util.HashSet;
13 import java.util.Iterator; 14 import java.util.Iterator;
14 import java.util.List; 15 import java.util.List;
15 import java.util.Map; 16 import java.util.Map;
  17 +import java.util.Map.Entry;
16 import java.util.Set; 18 import java.util.Set;
17 19
18 import javax.transaction.Transactional; 20 import javax.transaction.Transactional;
@@ -37,6 +39,7 @@ import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; @@ -37,6 +39,7 @@ import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
37 import com.bsth.service.calc.CalcToolService; 39 import com.bsth.service.calc.CalcToolService;
38 import com.bsth.service.calc.CalcWaybillService; 40 import com.bsth.service.calc.CalcWaybillService;
39 import com.bsth.service.impl.BaseServiceImpl; 41 import com.bsth.service.impl.BaseServiceImpl;
  42 +import com.bsth.service.realcontrol.ScheduleRealInfoService;
40 import com.bsth.service.report.CulateMileageService; 43 import com.bsth.service.report.CulateMileageService;
41 import com.bsth.service.report.ReportService; 44 import com.bsth.service.report.ReportService;
42 import com.bsth.util.Arith; 45 import com.bsth.util.Arith;
@@ -81,6 +84,9 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -81,6 +84,9 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
81 private CulateMileageService culateService; 84 private CulateMileageService culateService;
82 85
83 @Autowired 86 @Autowired
  87 + private ScheduleRealInfoService scheduleRealInfoService;
  88 +
  89 + @Autowired
84 private ScheduleRealInfoRepository scheduleRealInfoRepository; 90 private ScheduleRealInfoRepository scheduleRealInfoRepository;
85 91
86 @Autowired 92 @Autowired
@@ -850,6 +856,276 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -850,6 +856,276 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
850 856
851 return resList; 857 return resList;
852 } 858 }
  859 +
  860 + @Override
  861 + public List<Map<String, Object>> calcStatisticsDaily2(String gsdm, String fgsdm,
  862 + String line, String date, String date2, String xlName, String type) {
  863 + // TODO Auto-generated method stub
  864 + SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
  865 + Date beginDate = new Date();
  866 + Calendar calendar = Calendar.getInstance();
  867 + calendar.setTime(beginDate);
  868 + calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 4);
  869 + String d2 = dft.format(calendar.getTime()); //当前日期前4天
  870 + calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) +1);
  871 + String d3= dft.format(calendar.getTime()); //当前日期前3天
  872 +
  873 + String d1="";
  874 + String d4="";
  875 + try {
  876 + long t3 = dft.parse(d2).getTime();
  877 + long t1=dft.parse(date).getTime();
  878 + long t2=dft.parse(date2).getTime();
  879 +
  880 + if(t1<=t3 && t2>t3){
  881 + //所选日期区间区间既有实时数据也有历史数据
  882 + d1=date;
  883 + d4=date2;
  884 + } else if (t1>t3&&t2>t3){
  885 + d1=date;
  886 + d2=date2;
  887 + d3=date;
  888 + d4=date2;
  889 + }else{
  890 + d1=date;
  891 + d2=date2;
  892 + //实时数据无需
  893 + d3="";
  894 + d4="";
  895 + }
  896 + } catch (ParseException e1) {
  897 + // TODO Auto-generated catch block
  898 + e1.printStackTrace();
  899 + }
  900 +
  901 +
  902 + List<CalcStatistics> list = new ArrayList<CalcStatistics>();
  903 + if(line.length() > 0){
  904 + list = calcStatisticsRepository.selectByDateAndLineTj2(line, d1, d2);
  905 + } else {
  906 + list = calcStatisticsRepository.selectByDateAndLineTj(line, d1, d2, gsdm, fgsdm);
  907 + }
  908 +
  909 + List<CalcStatistics> resList = new ArrayList<CalcStatistics>();
  910 + Map<String, List<CalcStatistics>> keyMap = new HashMap<String, List<CalcStatistics>>();
  911 + List<String> keyList = new ArrayList<String>();
  912 +
  913 + for(CalcStatistics s : list){
  914 + try {
  915 + String key = PinyinHelper.convertToPinyinString(s.getXlName(), "" , PinyinFormat.WITHOUT_TONE);
  916 + if(!keyMap.containsKey(key)){
  917 + keyMap.put(key, new ArrayList<CalcStatistics>());
  918 + keyList.add(key);
  919 + }
  920 + keyMap.get(key).add(s);
  921 + } catch (PinyinException e) {
  922 + // TODO Auto-generated catch block
  923 + e.printStackTrace();
  924 + }
  925 + }
  926 + Collections.sort(keyList, new AccountXlbmStr());
  927 +
  928 + for(String key : keyList){
  929 + if(keyMap.get(key).size() > 0){
  930 + CalcStatistics s = keyMap.get(key).get(0);
  931 + if(keyMap.get(key).size() > 1)
  932 + for(int i = 1; i < keyMap.get(key).size(); i++){
  933 + CalcStatistics s_ = keyMap.get(key).get(i);
  934 + s = addStatistics(s, s_);
  935 + }
  936 + resList.add(s);
  937 + }
  938 + }
  939 +
  940 + if(resList.size() > 0){
  941 + CalcStatistics temp = new CalcStatistics();
  942 + temp.setXlName("合计");
  943 + temp.setXl("hj");
  944 + for(CalcStatistics s : resList){
  945 + temp = addStatistics(temp, s);
  946 + }
  947 + resList.add(temp);
  948 + }
  949 + //统计数据
  950 + List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
  951 + for(CalcStatistics c : resList){
  952 + Map<String, Object> m = new HashMap<String, Object>();
  953 + m.put("xlBm", c.getXl());
  954 + m.put("xlName", c.getXlName());
  955 + m.put("jhzlc", c.getJhzlc());
  956 + m.put("jhlc", c.getJhyylc());
  957 + m.put("jcclc", c.getJhkslc());
  958 + m.put("sjzgl", c.getSjzlc());
  959 + m.put("sjgl", c.getSjyylc());
  960 + m.put("sjksgl", c.getSjkslc());
  961 + m.put("ssgl", c.getSslc());
  962 + m.put("ssbc", c.getSsbc());
  963 + m.put("ssgl_lz", c.getLzlc());
  964 + m.put("ssgl_dm", c.getDmlc());
  965 + m.put("ssgl_gz", c.getGzlc());
  966 + m.put("ssgl_jf", c.getJflc());
  967 + m.put("ssgl_zs", c.getZslc());
  968 + m.put("ssgl_qr", c.getQrlc());
  969 + m.put("ssgl_qc", c.getQclc());
  970 + m.put("ssgl_kx", c.getKxlc());
  971 + m.put("ssgl_qh", c.getQhlc());
  972 + m.put("ssgl_yw", c.getYwlc());
  973 + m.put("ssgl_other", c.getQtlc());
  974 + m.put("ljgl", c.getLjlc());
  975 + m.put("jhbc", c.getJhbcq());
  976 + m.put("jhbc_m", c.getJhbcz());
  977 + m.put("jhbc_a", c.getJhbcw());
  978 + m.put("sjbc", c.getSjbcq());
  979 + m.put("sjbc_m", c.getSjbcz());
  980 + m.put("sjbc_a", c.getSjbcw());
  981 + m.put("ljbc", c.getLjbcq());
  982 + m.put("ljbc_m", c.getLjbcz());
  983 + m.put("ljbc_a", c.getLjbcw());
  984 + m.put("fzbc", c.getFzbcq());
  985 + m.put("fzbc_m", c.getFzbcz());
  986 + m.put("fzbc_a", c.getFzbcw());
  987 + m.put("dtbc", c.getDtbcq());
  988 + m.put("dtbc_m", c.getDtbcz());
  989 + m.put("dtbc_a", c.getDtbcw());
  990 + m.put("djg", c.getDjgq());
  991 + m.put("djg_m", c.getDjgz());
  992 + m.put("djg_a", c.getDjgw());
  993 + m.put("djg_time", c.getDjgsj());
  994 + double jl = Arith.sub(Arith.add(m.get("jhlc"), m.get("ljgl")), m.get("ssgl"));
  995 + if (jl == Double.parseDouble(m.get("sjgl").toString())) {
  996 + m.put("zt", 0);
  997 + } else {
  998 + m.put("zt", 1);
  999 + }
  1000 + mapList.add(m);
  1001 + }
  1002 +
  1003 + //实时数据
  1004 + List<Map<String, Object>> tjlist=new ArrayList<Map<String, Object>>();
  1005 + if(!d4.equals("")){
  1006 + tjlist= scheduleRealInfoService.statisticsDailyTjHb(gsdm, fgsdm, line, d3, d4, xlName, type);
  1007 + }
  1008 + List<Map<String, Object>> mapListHj = new ArrayList<Map<String, Object>>();
  1009 +// List<String> lineList=new ArrayList<String>();
  1010 + Map<String, Object> kMap=new HashMap<String,Object>();
  1011 + mapList.addAll(tjlist);
  1012 + for (int i = 0; i < mapList.size(); i++) {
  1013 + Map<String, Object> m =mapList.get(i);
  1014 + if(kMap.get(m.get("xlBm").toString())==null){
  1015 + kMap.put(m.get("xlBm").toString(), m.get("xlBm").toString());
  1016 + }
  1017 + }
  1018 + for (Object xlbm : kMap.keySet()) {
  1019 + Map<String, Object> hjMap = new HashMap<String, Object>();
  1020 + for (int i = 0; i < mapList.size(); i++) {
  1021 + Map<String, Object> lsMap=mapList.get(i);
  1022 + if (lsMap.get("xlBm").toString().equals(xlbm)) {
  1023 + if(hjMap.get("xlBm")==null){
  1024 + hjMap.put("xlBm", lsMap.get("xlBm"));
  1025 + hjMap.put("xlName", lsMap.get("xlName"));
  1026 + try {
  1027 + if(lsMap.get("xlBm").toString().equals("hj")){
  1028 + hjMap.put("xlNamePy", "zzzzz");
  1029 +
  1030 + }else{
  1031 + hjMap.put("xlNamePy", PinyinHelper.convertToPinyinString(lsMap.get("xlName").toString(), "", PinyinFormat.WITHOUT_TONE));
  1032 + }
  1033 + } catch (PinyinException e) {
  1034 + // TODO Auto-generated catch block
  1035 + e.printStackTrace();
  1036 + }
  1037 + }
  1038 + hjMap.put("jhzlc", Arith.add(lsMap.get("jhzlc"), hjMap.get("jhzlc")==null?"0":hjMap.get("jhzlc")));
  1039 + hjMap.put("jhlc", Arith.add(lsMap.get("jhlc"), hjMap.get("jhlc")==null?"0":hjMap.get("jhlc")));
  1040 + hjMap.put("jcclc",Arith.add(lsMap.get("jcclc"), hjMap.get("jcclc")==null?"0":hjMap.get("jcclc")));
  1041 + hjMap.put("sjzgl",Arith.add(lsMap.get("sjzgl"), hjMap.get("sjzgl")==null?"0": hjMap.get("sjzgl")));
  1042 + hjMap.put("sjgl", Arith.add(lsMap.get("sjgl"), hjMap.get("sjgl")==null?"0":hjMap.get("sjgl")));
  1043 + hjMap.put("sjksgl", Arith.add(lsMap.get("sjksgl"), hjMap.get("sjksgl")==null?"0":hjMap.get("sjksgl")));
  1044 + hjMap.put("ssgl", Arith.add(lsMap.get("ssgl"), hjMap.get("ssgl")==null?"0":hjMap.get("ssgl")));
  1045 + hjMap.put("ssbc", Integer.parseInt(lsMap.get("ssbc").toString())+Integer.parseInt(hjMap.get("ssbc")==null?"0":hjMap.get("ssbc").toString()));
  1046 + hjMap.put("ssgl_lz", Arith.add(lsMap.get("ssgl_lz"), hjMap.get("ssgl_lz")==null?"0":hjMap.get("ssgl_lz")));
  1047 + hjMap.put("ssgl_dm", Arith.add(lsMap.get("ssgl_dm"), hjMap.get("ssgl_dm")==null?"0":hjMap.get("ssgl_dm")));
  1048 + hjMap.put("ssgl_gz", Arith.add(lsMap.get("ssgl_gz"), hjMap.get("ssgl_gz")==null?"0":hjMap.get("ssgl_gz")));
  1049 + hjMap.put("ssgl_jf", Arith.add(lsMap.get("ssgl_jf"), hjMap.get("ssgl_jf")==null?"0":hjMap.get("ssgl_jf")));
  1050 + hjMap.put("ssgl_zs", Arith.add(lsMap.get("ssgl_zs"), hjMap.get("ssgl_zs")==null?"0":hjMap.get("ssgl_zs")));
  1051 + hjMap.put("ssgl_qr", Arith.add(lsMap.get("ssgl_qr"), hjMap.get("ssgl_qr")==null?"0":hjMap.get("ssgl_qr")));
  1052 + hjMap.put("ssgl_qc", Arith.add(lsMap.get("ssgl_qc"), hjMap.get("ssgl_qc")==null?"0":hjMap.get("ssgl_qc")));
  1053 + hjMap.put("ssgl_kx", Arith.add(lsMap.get("ssgl_kx"), hjMap.get("ssgl_kx")==null?"0":hjMap.get("ssgl_kx")));
  1054 + hjMap.put("ssgl_qh", Arith.add(lsMap.get("ssgl_qh"), hjMap.get("ssgl_qh")==null?"0":hjMap.get("ssgl_qh")));
  1055 + hjMap.put("ssgl_yw", Arith.add(lsMap.get("ssgl_yw"), hjMap.get("ssgl_yw")==null?"0":hjMap.get("ssgl_yw")));
  1056 + hjMap.put("ssgl_other", Arith.add(lsMap.get("ssgl_other"), hjMap.get("ssgl_other")==null?"0":hjMap.get("ssgl_other")));
  1057 + hjMap.put("ljgl", Arith.add(lsMap.get("ljgl"), hjMap.get("ljgl")==null?"0":hjMap.get("ljgl")));
  1058 + hjMap.put("jhbc", Integer.parseInt(lsMap.get("jhbc").toString())+ Integer.parseInt(hjMap.get("jhbc")==null?"0":hjMap.get("jhbc").toString()));
  1059 + hjMap.put("jhbc_m", Integer.parseInt(lsMap.get("jhbc_m").toString())+Integer.parseInt(hjMap.get("jhbc_m")==null?"0":hjMap.get("jhbc_m").toString()));
  1060 + hjMap.put("jhbc_a", Integer.parseInt(lsMap.get("jhbc_a").toString())+ Integer.parseInt(hjMap.get("jhbc_a")==null?"0":hjMap.get("jhbc_a").toString()));
  1061 + hjMap.put("sjbc", Integer.parseInt(lsMap.get("sjbc").toString())+ Integer.parseInt(hjMap.get("sjbc")==null?"0":hjMap.get("sjbc").toString()));
  1062 + hjMap.put("sjbc_m",Integer.parseInt(lsMap.get("sjbc_m").toString())+ Integer.parseInt(hjMap.get("sjbc_m")==null?"0":hjMap.get("sjbc_m").toString()));
  1063 + hjMap.put("sjbc_a", Integer.parseInt(lsMap.get("sjbc_a").toString())+ Integer.parseInt(hjMap.get("sjbc_a")==null?"0":hjMap.get("sjbc_a").toString()));
  1064 + hjMap.put("ljbc", Integer.parseInt(lsMap.get("ljbc").toString())+ Integer.parseInt(hjMap.get("ljbc")==null?"0":hjMap.get("ljbc").toString()));
  1065 + hjMap.put("ljbc_m", Integer.parseInt(lsMap.get("ljbc_m").toString())+ Integer.parseInt(hjMap.get("ljbc_m")==null?"0":hjMap.get("ljbc_m").toString()));
  1066 + hjMap.put("ljbc_a", Integer.parseInt(lsMap.get("ljbc_a").toString())+Integer.parseInt(hjMap.get("ljbc_a")==null?"0":hjMap.get("ljbc_a").toString()));
  1067 + hjMap.put("fzbc", Integer.parseInt(lsMap.get("fzbc").toString())+ Integer.parseInt(hjMap.get("fzbc")==null?"0":hjMap.get("fzbc").toString()));
  1068 + hjMap.put("fzbc_m",Integer.parseInt(lsMap.get("fzbc_m").toString())+ Integer.parseInt(hjMap.get("fzbc_m")==null?"0":hjMap.get("fzbc_m").toString()));
  1069 + hjMap.put("fzbc_a",Integer.parseInt(lsMap.get("fzbc_a").toString())+ Integer.parseInt(hjMap.get("fzbc_a")==null?"0":hjMap.get("fzbc_a").toString()));
  1070 + hjMap.put("dtbc", Integer.parseInt(lsMap.get("dtbc").toString())+ Integer.parseInt(hjMap.get("dtbc")==null?"0":hjMap.get("dtbc").toString()));
  1071 + hjMap.put("dtbc_m", Integer.parseInt(lsMap.get("dtbc_m").toString())+ Integer.parseInt(hjMap.get("dtbc_m")==null?"0":hjMap.get("dtbc_m").toString()));
  1072 + hjMap.put("dtbc_a", Integer.parseInt(lsMap.get("dtbc_a").toString())+ Integer.parseInt(hjMap.get("dtbc_a")==null?"0":hjMap.get("dtbc_a").toString()));
  1073 + hjMap.put("djg", Integer.parseInt(lsMap.get("djg").toString())+ Integer.parseInt(hjMap.get("djg")==null?"0":hjMap.get("djg").toString()));
  1074 + hjMap.put("djg_m", Integer.parseInt(lsMap.get("djg_m").toString())+ Integer.parseInt(hjMap.get("djg_m")==null?"0":hjMap.get("djg_m").toString()));
  1075 + hjMap.put("djg_a", Integer.parseInt(lsMap.get("djg_a").toString())+ Integer.parseInt(hjMap.get("djg_a")==null?"0":hjMap.get("djg_a").toString()));
  1076 + if(hjMap.get("djg_time")==null){
  1077 + hjMap.put("djg_time", lsMap.get("djg_time"));
  1078 + }else{
  1079 + if(Arith.add(lsMap.get("djg_time"),0)>Arith.add(hjMap.get("djg_time"), 0)){
  1080 + hjMap.put("djg_time", lsMap.get("djg_time"));
  1081 + }else{
  1082 + hjMap.put("djg_time",hjMap.get("djg_time"));
  1083 + }
  1084 + }
  1085 +
  1086 +
  1087 + double jl = Arith.sub(Arith.add(hjMap.get("jhlc"), hjMap.get("ljgl")), hjMap.get("ssgl"));
  1088 + if (jl == Double.parseDouble(hjMap.get("sjgl").toString())) {
  1089 + hjMap.put("zt", 0);
  1090 + } else {
  1091 + hjMap.put("zt", 1);
  1092 + }
  1093 + }
  1094 + }
  1095 + mapListHj.add(hjMap);
  1096 + }
  1097 +
  1098 + Collections.sort(mapListHj, new AccountXlbmByping());
  1099 +
  1100 +
  1101 + if (type != null && type.length() != 0 && type.equals("export")) {
  1102 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  1103 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  1104 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  1105 + Map<String, Object> m = new HashMap<String, Object>();
  1106 + m.put("date", date+"至"+date2);
  1107 + ReportUtils ee = new ReportUtils();
  1108 + try {
  1109 + String dateTime = "";
  1110 + if(date.equals(date2)){
  1111 + dateTime = sdfSimple.format(sdfMonth.parse(date));
  1112 + } else {
  1113 + dateTime = sdfSimple.format(sdfMonth.parse(date))
  1114 + +"-"+sdfSimple.format(sdfMonth.parse(date2));
  1115 + }
  1116 + listI.add(mapListHj.iterator());
  1117 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  1118 + ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_.xls",
  1119 + path + "export/" + dateTime + "-" + xlName + "-统计日报.xls");
  1120 + } catch (Exception e) {
  1121 + // TODO: handle exception
  1122 + //e.printStackTrace();
  1123 + logger.info("" , e);
  1124 + }
  1125 + }
  1126 +
  1127 + return mapListHj;
  1128 + }
853 1129
854 public CalcStatistics addStatistics(CalcStatistics s, CalcStatistics s_){ 1130 public CalcStatistics addStatistics(CalcStatistics s, CalcStatistics s_){
855 s.setJhzlc(Arith.add(s.getJhzlc()!=null?s.getJhzlc():0, s_.getJhzlc())); 1131 s.setJhzlc(Arith.add(s.getJhzlc()!=null?s.getJhzlc():0, s_.getJhzlc()));
@@ -1462,3 +1738,14 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -1462,3 +1738,14 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
1462 } 1738 }
1463 1739
1464 } 1740 }
  1741 +
  1742 +class AccountXlbmByping implements Comparator<Map<String, Object>> {
  1743 + @Override
  1744 + public int compare(Map<String, Object> o1, Map<String, Object> o2) {
  1745 + // TODO Auto-generated method stub
  1746 +// PinyinHelper.convertToPinyinString(ppy.getName(),
  1747 +// "" , PinyinFormat.WITHOUT_TONE)
  1748 + return o1.get("xlNamePy").toString().compareTo(
  1749 + o2.get("xlNamePy").toString());
  1750 + }
  1751 +}
src/main/java/com/bsth/service/forms/impl/FormsServiceImpl.java
@@ -2560,8 +2560,8 @@ public class FormsServiceImpl implements FormsService { @@ -2560,8 +2560,8 @@ public class FormsServiceImpl implements FormsService {
2560 2560
2561 String sql = "select gs_name, fgs_name, cl_zbh, fcsj, bc_type, xl_bm, xl_name, schedule_date" 2561 String sql = "select gs_name, fgs_name, cl_zbh, fcsj, bc_type, xl_bm, xl_name, schedule_date"
2562 + " from bsth_c_s_sp_info where gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"' " 2562 + " from bsth_c_s_sp_info where gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"' "
2563 - + "and DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' "  
2564 - + "and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"' "; 2563 + + "and schedule_date >= '"+startDate+"' "
  2564 + + "and schedule_date <= '"+endDate+"' ";
2565 if(line.trim().length() != 0){ 2565 if(line.trim().length() != 0){
2566 sql += "and xl_bm = '"+line+"' "; 2566 sql += "and xl_bm = '"+line+"' ";
2567 } 2567 }
@@ -2718,8 +2718,8 @@ public class FormsServiceImpl implements FormsService { @@ -2718,8 +2718,8 @@ public class FormsServiceImpl implements FormsService {
2718 2718
2719 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from " 2719 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from "
2720 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type" 2720 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type"
2721 - + " from bsth_c_s_sp_info" + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') BETWEEN '"  
2722 - + map.get("startDate").toString() + "' and '" + map.get("endDate").toString() + "' and xl_bm='" 2721 + + " from bsth_c_s_sp_info" + " where schedule_date >= '"
  2722 + + map.get("startDate").toString() + "' and schedule_date <= '" + map.get("endDate").toString() + "' and xl_bm='"
2723 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out')" 2723 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out')"
2724 + " and gs_bm='"+ map.get("gsdmEcecut").toString() + "'" 2724 + " and gs_bm='"+ map.get("gsdmEcecut").toString() + "'"
2725 + " and fgs_bm='"+ map.get("fgsdmEcecut").toString() + "'" 2725 + " and fgs_bm='"+ map.get("fgsdmEcecut").toString() + "'"
@@ -2802,8 +2802,8 @@ public class FormsServiceImpl implements FormsService { @@ -2802,8 +2802,8 @@ public class FormsServiceImpl implements FormsService {
2802 2802
2803 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from " 2803 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from "
2804 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type" 2804 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type"
2805 - + " from bsth_c_s_sp_info" + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') BETWEEN '"  
2806 - + map.get("startDate").toString() + "' and '" + map.get("endDate").toString() + "' and xl_bm='" 2805 + + " from bsth_c_s_sp_info" + " where schedule_date >= '"
  2806 + + map.get("startDate").toString() + "' and schedule_date <='" + map.get("endDate").toString() + "' and xl_bm='"
2807 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out') " 2807 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out') "
2808 + " and gs_bm='"+ map.get("gsdmAllline").toString() + "'" 2808 + " and gs_bm='"+ map.get("gsdmAllline").toString() + "'"
2809 + " and fgs_bm='"+ map.get("fgsdmAllline").toString() + "'" 2809 + " and fgs_bm='"+ map.get("fgsdmAllline").toString() + "'"
@@ -2813,7 +2813,7 @@ public class FormsServiceImpl implements FormsService { @@ -2813,7 +2813,7 @@ public class FormsServiceImpl implements FormsService {
2813 + ") as xlgs,b.gs_bm,b.fgs_bm,b.xl_bm,b." 2813 + ") as xlgs,b.gs_bm,b.fgs_bm,b.xl_bm,b."
2814 + "xl_name,b.gs_name,b.fgs_name, b.sbc,b.sxl ,b.scl " 2814 + "xl_name,b.gs_name,b.fgs_name, b.sbc,b.sxl ,b.scl "
2815 + "from bsth_c_line t RIGHT JOIN (select gs_bm,fgs_bm,xl_bm,xl_name,gs_name,fgs_name, count(*) as sbc,COUNT(DISTINCT xl_bm) as sxl ,COUNT(DISTINCT cl_zbh) as scl,bc_type from bsth_c_s_sp_info_real " 2815 + "from bsth_c_line t RIGHT JOIN (select gs_bm,fgs_bm,xl_bm,xl_name,gs_name,fgs_name, count(*) as sbc,COUNT(DISTINCT xl_bm) as sxl ,COUNT(DISTINCT cl_zbh) as scl,bc_type from bsth_c_s_sp_info_real "
2816 - + "where DATE_FORMAT(schedule_date,'%Y-%m-%d') BETWEEN '" + map.get("startDate").toString() + "' and '" 2816 + + "where schedule_date_str >= '" + map.get("startDate").toString() + "' and schedule_date_str <= '"
2817 + map.get("endDate").toString() + "' and xl_bm='" + map.get 2817 + map.get("endDate").toString() + "' and xl_bm='" + map.get
2818 ("line").toString() 2818 ("line").toString()
2819 + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out')" 2819 + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out')"
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
@@ -530,7 +530,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -530,7 +530,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
530 try { 530 try {
531 //发送邮件 531 //发送邮件
532 EmailBean mail = new EmailBean(); 532 EmailBean mail = new EmailBean();
533 - mail.setSubject("路单日志数据"+date); 533 + mail.setSubject("浦东路单日志数据"+date);
534 mail.setContent(logSuccess+"<br/>成功数:"+countSuccess+"<br/>" +logFailure+"<br/>失败数:"+countFailure); 534 mail.setContent(logSuccess+"<br/>成功数:"+countSuccess+"<br/>" +logFailure+"<br/>失败数:"+countFailure);
535 sendEmailController.sendMail(emailSendToAddress, mail); 535 sendEmailController.sendMail(emailSendToAddress, mail);
536 logger.info("setLD-sendMail:邮件发送成功!"); 536 logger.info("setLD-sendMail:邮件发送成功!");
@@ -942,32 +942,42 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -942,32 +942,42 @@ public class TrafficManageServiceImpl implements TrafficManageService{
942 public String setSKB(String ids) { 942 public String setSKB(String ids) {
943 String result = "failure"; 943 String result = "failure";
944 StringBuffer sBuffer = new StringBuffer(); 944 StringBuffer sBuffer = new StringBuffer();
  945 + DecimalFormat df = new DecimalFormat("######0.000");
945 try { 946 try {
946 String[] idArray = ids.split(","); 947 String[] idArray = ids.split(",");
947 - StringBuffer sBufferA;  
948 - StringBuffer sBufferB; 948 + StringBuffer sBufferA ,sBufferB = null,sBufferC = null;
  949 + double zlc = 0.0f,yylc = 0.0f,singleLc,emptyLc;// 总里程、营运里程、单程、空放里程
  950 + String bcType,sxx;// 班次类型、上下行
949 // 上传的时刻表集合 951 // 上传的时刻表集合
950 List<TTInfo> ttinfoList = new ArrayList<>(); 952 List<TTInfo> ttinfoList = new ArrayList<>();
951 TTInfo ttInfo; 953 TTInfo ttInfo;
952 TTInfoDetail ttInfoDetail; 954 TTInfoDetail ttInfoDetail;
  955 + LineInformation lineInformation;
953 Iterator<TTInfoDetail> ttInfoDetailIterator; 956 Iterator<TTInfoDetail> ttInfoDetailIterator;
954 - HashMap<String,Object> param = new HashMap<String, Object>(); 957 + HashMap<String,Object> param ;
955 sBuffer.append("<SKBs>"); 958 sBuffer.append("<SKBs>");
956 HashMap<String,String> paramMap; 959 HashMap<String,String> paramMap;
957 - HashMap<String,String> otherMap = new HashMap<String, String>(); 960 + HashMap<String,String> otherMap = new HashMap<>();
958 for (int i = 0; i < idArray.length; i++) { 961 for (int i = 0; i < idArray.length; i++) {
959 ttInfo = ttInfoRepository.findOne(Long.valueOf(idArray[i])); 962 ttInfo = ttInfoRepository.findOne(Long.valueOf(idArray[i]));
960 if(ttInfo == null) 963 if(ttInfo == null)
961 continue; 964 continue;
962 ttinfoList.add(ttInfo); // 保存时刻表 965 ttinfoList.add(ttInfo); // 保存时刻表
  966 + // 获得时刻表
  967 + param = new HashMap();
963 param.put("ttinfo.id_eq", ttInfo.getId()); 968 param.put("ttinfo.id_eq", ttInfo.getId());
964 ttInfoDetailIterator = ttInfoDetailRepository.findAll(new CustomerSpecs<TTInfoDetail>(param), 969 ttInfoDetailIterator = ttInfoDetailRepository.findAll(new CustomerSpecs<TTInfoDetail>(param),
965 new Sort(Direction.ASC, "xlDir")).iterator(); 970 new Sort(Direction.ASC, "xlDir")).iterator();
  971 + // 获得lineInformation
  972 + param = new HashMap();
  973 + param.put("line.id_eq", ttInfo.getXl().getId());
  974 + lineInformation = lineInformationRepository.findOne(new CustomerSpecs<LineInformation>(param));
966 if(ttInfoDetailIterator.hasNext()){ 975 if(ttInfoDetailIterator.hasNext()){
967 sBuffer.append("<SKB>"); 976 sBuffer.append("<SKB>");
968 sBuffer.append("<XLBM>").append(BasicData.lineId2ShangHaiCodeMap.get(ttInfo.getXl().getId())) 977 sBuffer.append("<XLBM>").append(BasicData.lineId2ShangHaiCodeMap.get(ttInfo.getXl().getId()))
969 .append("</XLBM>"); 978 .append("</XLBM>");
970 sBufferB = new StringBuffer(); 979 sBufferB = new StringBuffer();
  980 + sBufferC = new StringBuffer();
971 sBufferB.append("<KSRQ>").append(sdfnyr.format(ttInfo.getQyrq())).append("</KSRQ>"); 981 sBufferB.append("<KSRQ>").append(sdfnyr.format(ttInfo.getQyrq())).append("</KSRQ>");
972 // 结束日期暂时不要,节假日的班次表才需要,如春节的班次表 982 // 结束日期暂时不要,节假日的班次表才需要,如春节的班次表
973 sBufferB.append("<JSRQ>").append("").append("</JSRQ>"); 983 sBufferB.append("<JSRQ>").append("").append("</JSRQ>");
@@ -975,43 +985,55 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -975,43 +985,55 @@ public class TrafficManageServiceImpl implements TrafficManageService{
975 sBufferB.append("<TBYY>").append("").append("</TBYY>"); 985 sBufferB.append("<TBYY>").append("").append("</TBYY>");
976 sBufferB.append("<UPDT>").append(sdfnyrsfm.format(new Date())).append("</UPDT>"); 986 sBufferB.append("<UPDT>").append(sdfnyrsfm.format(new Date())).append("</UPDT>");
977 sBufferB.append("<BCList>"); 987 sBufferB.append("<BCList>");
978 - int num = 1;  
979 while (ttInfoDetailIterator.hasNext()) { 988 while (ttInfoDetailIterator.hasNext()) {
980 ttInfoDetail = ttInfoDetailIterator.next(); 989 ttInfoDetail = ttInfoDetailIterator.next();
981 - if(ttInfoDetail.getBcType().equals("in") || ttInfoDetail.getBcType().equals("out")){ 990 + bcType = ttInfoDetail.getBcType();
  991 + sxx = ttInfoDetail.getXlDir();
  992 + // 进出场班次
  993 + if(bcType.equals("in") || bcType.equals("out")){
  994 + // 进出班次的计划里程,算空驶里程
  995 + emptyLc = ttInfoDetail.getJhlc();
  996 + // 总里程需要加上空驶里程
  997 + zlc += emptyLc;
982 continue; 998 continue;
983 } 999 }
984 - if(num++ == 1){  
985 - sBufferA = new StringBuffer();  
986 - sBufferA.append("<JHZLC>").append(ttInfoDetail.getJhlc()).append("</JHZLC>");  
987 - sBufferA.append("<JHYYLC>").append(ttInfoDetail.getJhlc()).append("</JHYYLC>");  
988 - sBuffer.append(sBufferA).append(sBufferB);  
989 - }  
990 // 如果发车时间格式错误,忽略此条 1000 // 如果发车时间格式错误,忽略此条
991 if(changeTimeFormat(ttInfoDetail) == null){ 1001 if(changeTimeFormat(ttInfoDetail) == null){
992 continue; 1002 continue;
993 } 1003 }
994 - sBuffer.append("<BC>");  
995 - sBuffer.append("<LPBH>").append(ttInfoDetail.getLp().getLpNo()).append("</LPBH>");  
996 - sBuffer.append("<SXX>").append(ttInfoDetail.getXlDir()).append("</SXX>");  
997 - sBuffer.append("<FCZDMC>").append(BasicData.stationCode2NameMap.get(ttInfoDetail.getXl().getLineCode()+"_"+ttInfoDetail.getXlDir() 1004 + sBufferC.append("<BC>");
  1005 + sBufferC.append("<LPBH>").append(ttInfoDetail.getLp().getLpNo()).append("</LPBH>");
  1006 + sBufferC.append("<SXX>").append(sxx).append("</SXX>");
  1007 + sBufferC.append("<FCZDMC>").append(BasicData.stationCode2NameMap.get(ttInfoDetail.getXl().getLineCode()+"_"+ttInfoDetail.getXlDir()
998 +"_"+ttInfoDetail.getQdzCode())).append("</FCZDMC>"); 1008 +"_"+ttInfoDetail.getQdzCode())).append("</FCZDMC>");
999 // 起点站的参数 1009 // 起点站的参数
1000 otherMap.put("stationMark","B"); 1010 otherMap.put("stationMark","B");
1001 paramMap = packageYgcStationNumParam(ttInfoDetail,otherMap); 1011 paramMap = packageYgcStationNumParam(ttInfoDetail,otherMap);
1002 - sBuffer.append("<ZDXH>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paramMap,null)).append("</ZDXH>");  
1003 - sBuffer.append("<JHFCSJ>").append(changeTimeFormat(ttInfoDetail)).append("</JHFCSJ>");  
1004 - sBuffer.append("<DDZDMC>").append(BasicData.stationCode2NameMap.get(ttInfoDetail.getXl().getLineCode()+"_"+ttInfoDetail.getXlDir() 1012 + sBufferC.append("<ZDXH>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paramMap,null)).append("</ZDXH>");
  1013 + sBufferC.append("<JHFCSJ>").append(changeTimeFormat(ttInfoDetail)).append("</JHFCSJ>");
  1014 + sBufferC.append("<DDZDMC>").append(BasicData.stationCode2NameMap.get(ttInfoDetail.getXl().getLineCode()+"_"+ttInfoDetail.getXlDir()
1005 +"_"+ttInfoDetail.getZdzCode())).append("</DDZDMC>"); 1015 +"_"+ttInfoDetail.getZdzCode())).append("</DDZDMC>");
1006 // 起点站的参数 1016 // 起点站的参数
1007 otherMap.put("stationMark","E"); 1017 otherMap.put("stationMark","E");
1008 paramMap = packageYgcStationNumParam(ttInfoDetail,otherMap); 1018 paramMap = packageYgcStationNumParam(ttInfoDetail,otherMap);
1009 - sBuffer.append("<DDXH>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paramMap,null)).append("</DDXH>");  
1010 - sBuffer.append("<JHDDSJ>").append(calcDdsj(ttInfoDetail.getFcsj(),ttInfoDetail.getBcsj())).append("</JHDDSJ>");  
1011 - sBuffer.append("</BC>"); 1019 + sBufferC.append("<DDXH>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paramMap,null)).append("</DDXH>");
  1020 + sBufferC.append("<JHDDSJ>").append(calcDdsj(ttInfoDetail.getFcsj(),ttInfoDetail.getBcsj())).append("</JHDDSJ>");
  1021 + sBufferC.append("</BC>");
  1022 + // 0:上行;1:下行
  1023 + if("0".equals(sxx)){
  1024 + singleLc = lineInformation.getUpMileage();
  1025 + }else{
  1026 + singleLc = lineInformation.getDownMileage();
  1027 + }
  1028 + zlc += singleLc ;
  1029 + yylc += singleLc;
1012 } 1030 }
1013 - sBuffer.append("</BCList>");  
1014 - sBuffer.append("</SKB>"); 1031 + sBufferC.append("</BCList>");
  1032 + sBufferC.append("</SKB>");
  1033 + sBufferA = new StringBuffer();
  1034 + sBufferA.append("<JHZLC>").append(df.format(zlc)).append("</JHZLC>");
  1035 + sBufferA.append("<JHYYLC>").append(df.format(yylc)).append("</JHYYLC>");
  1036 + sBuffer.append(sBufferA).append(sBufferB).append(sBufferC);
1015 } 1037 }
1016 } 1038 }
1017 sBuffer.append("</SKBs>"); 1039 sBuffer.append("</SKBs>");
src/main/java/com/bsth/service/oil/LsylbService.java 0 → 100644
  1 +package com.bsth.service.oil;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import com.bsth.entity.oil.Lsylb;
  7 +import com.bsth.entity.oil.Ylb;
  8 +import com.bsth.service.BaseService;
  9 +
  10 +public interface LsylbService extends BaseService<Lsylb, Integer>{
  11 + List<Lsylb> listYlb(Map<String, Object> map);
  12 + Map<String, Object> sumYlb(Map<String, Object> map);
  13 +}
src/main/java/com/bsth/service/oil/impl/LsylbServiceImpl.java 0 → 100644
  1 +package com.bsth.service.oil.impl;
  2 +
  3 +import java.sql.ResultSet;
  4 +import java.sql.SQLException;
  5 +import java.text.DecimalFormat;
  6 +import java.text.ParseException;
  7 +import java.text.SimpleDateFormat;
  8 +import java.util.ArrayList;
  9 +import java.util.Calendar;
  10 +import java.util.Date;
  11 +import java.util.HashMap;
  12 +import java.util.Iterator;
  13 +import java.util.List;
  14 +import java.util.Map;
  15 +
  16 +import javax.transaction.Transactional;
  17 +
  18 +import org.apache.commons.lang3.StringEscapeUtils;
  19 +import org.apache.commons.lang3.StringUtils;
  20 +import org.slf4j.Logger;
  21 +import org.slf4j.LoggerFactory;
  22 +import org.springframework.beans.factory.annotation.Autowired;
  23 +import org.springframework.data.domain.Sort;
  24 +import org.springframework.data.domain.Sort.Direction;
  25 +import org.springframework.jdbc.core.JdbcTemplate;
  26 +import org.springframework.jdbc.core.RowMapper;
  27 +import org.springframework.stereotype.Service;
  28 +
  29 +import com.alibaba.fastjson.JSONArray;
  30 +import com.alibaba.fastjson.JSONObject;
  31 +import com.bsth.common.ResponseCode;
  32 +import com.bsth.data.BasicData;
  33 +import com.bsth.entity.Cars;
  34 +import com.bsth.entity.Line;
  35 +import com.bsth.entity.mcy_forms.Daily;
  36 +import com.bsth.entity.oil.Cyl;
  37 +import com.bsth.entity.oil.Dlb;
  38 +import com.bsth.entity.oil.Lsylb;
  39 +import com.bsth.entity.oil.Nylog;
  40 +import com.bsth.entity.oil.Ylb;
  41 +import com.bsth.entity.oil.Ylxxb;
  42 +import com.bsth.entity.search.CustomerSpecs;
  43 +import com.bsth.entity.sys.SysUser;
  44 +import com.bsth.repository.CarsRepository;
  45 +import com.bsth.repository.LineRepository;
  46 +import com.bsth.repository.oil.CylRepository;
  47 +import com.bsth.repository.oil.DlbRepository;
  48 +import com.bsth.repository.oil.LsylbRepository;
  49 +import com.bsth.repository.oil.NylogRepository;
  50 +import com.bsth.repository.oil.YlbRepository;
  51 +import com.bsth.repository.oil.YlxxbRepository;
  52 +import com.bsth.security.util.SecurityUtils;
  53 +import com.bsth.service.impl.BaseServiceImpl;
  54 +import com.bsth.service.oil.DlbService;
  55 +import com.bsth.service.oil.LsylbService;
  56 +import com.bsth.service.oil.YlbService;
  57 +import com.bsth.service.realcontrol.ScheduleRealInfoService;
  58 +import com.bsth.util.Arith;
  59 +import com.bsth.util.BatchSaveUtils;
  60 +import com.bsth.util.ReportUtils;
  61 +import com.github.abel533.echarts.code.Y;
  62 +
  63 +import javassist.bytecode.stackmap.BasicBlock.Catch;
  64 +
  65 +@Service
  66 +public class LsylbServiceImpl extends BaseServiceImpl<Lsylb,Integer> implements LsylbService{
  67 + @Autowired
  68 + LsylbRepository repository;
  69 + @Override
  70 + public List<Lsylb> listYlb(Map<String, Object> map) {
  71 + // TODO Auto-generated method stub
  72 + List<Lsylb> listYlb=new ArrayList<Lsylb>();
  73 + List<String> stringList=new ArrayList<String>();
  74 + String rq=map.get("rq").toString();
  75 + String gsbm=map.get("ssgsdm_like").toString();
  76 + String fgsbm=map.get("fgsdm_like").toString();
  77 + String xlbm=map.get("xlbm_like").toString().trim();
  78 + String nbbm=map.get("nbbm_eq").toString();
  79 + String sxtj=map.get("sxtj").toString();
  80 + int nylx=Integer.parseInt(map.get("nylx").toString());
  81 + if(nbbm.trim()!=""){
  82 + stringList.add(nbbm);
  83 + List<Object[]> objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm,nylx);
  84 + if(objectLists.size()>0){
  85 + int cs=Integer.parseInt(objectLists.get(0)[1].toString());
  86 + if(sxtj.equals("1")){
  87 + if(cs==1){
  88 + listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm,nylx, stringList);
  89 + }
  90 + }else if(sxtj.equals("2")){
  91 + if(cs>1){
  92 + listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm,nylx, stringList);
  93 + }
  94 + }else{
  95 + listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm,nylx, stringList);
  96 + }
  97 + }
  98 +
  99 + }else{
  100 + //全部
  101 + if(sxtj.equals("0")){
  102 + List<Object[]> objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm,nylx);
  103 + for (int i = 0; i < objectLists.size(); i++) {
  104 + String clbm=objectLists.get(i)[0].toString();
  105 + stringList.add(clbm);
  106 + }
  107 + if(stringList.size()>0){
  108 + listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm,nylx, stringList);
  109 + }
  110 + }else{
  111 + List<Object[]> objectLists;
  112 + if(sxtj.equals("3")){
  113 + //有加油没里程
  114 + objectLists=repository.checkNbmmYl(rq, gsbm, fgsbm, xlbm, nbbm,nylx);
  115 + for (int i = 0; i < objectLists.size(); i++) {
  116 + String clbm=objectLists.get(i)[0].toString();
  117 + double jzl=Double.parseDouble(objectLists.get(i)[1].toString());
  118 + double zlc=Double.parseDouble(objectLists.get(i)[2].toString());
  119 + if(jzl>0 && zlc<=0){
  120 + stringList.add(clbm);
  121 + }
  122 +
  123 + }
  124 +
  125 + }else if(sxtj.equals("4")){
  126 + //有里程没加油
  127 + objectLists=repository.checkNbmmYl(rq, gsbm, fgsbm, xlbm, nbbm,nylx);
  128 + for (int i = 0; i < objectLists.size(); i++) {
  129 + String clbm=objectLists.get(i)[0].toString();
  130 + double jzl=Double.parseDouble(objectLists.get(i)[1].toString());
  131 + double zlc=Double.parseDouble(objectLists.get(i)[2].toString());
  132 + if(zlc>0 && jzl<=0){
  133 + stringList.add(clbm);
  134 + }
  135 +
  136 + }
  137 + }else{
  138 + objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm,nylx);
  139 + for (int i = 0; i < objectLists.size(); i++) {
  140 + String clbm=objectLists.get(i)[0].toString();
  141 + int cs=Integer.parseInt(objectLists.get(i)[1].toString());
  142 + //一车一单
  143 + if(sxtj.equals("1")){
  144 + if(cs==1){
  145 + stringList.add(clbm);
  146 + }
  147 + }
  148 + //一车多单
  149 + if(sxtj.equals("2")){
  150 + if(cs>1){
  151 + stringList.add(clbm);
  152 + }
  153 + }
  154 + }
  155 + }
  156 +
  157 + if(stringList.size()>0){
  158 + listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm,nylx, stringList);
  159 + }
  160 + }
  161 + }
  162 +
  163 + return listYlb;
  164 + }
  165 +
  166 +
  167 + @Override
  168 + public Map<String, Object> sumYlb(Map<String, Object> map) {
  169 + // TODO Auto-generated method stub
  170 + List<String> stringList=new ArrayList<String>();
  171 + String rq=map.get("rq").toString();
  172 + String gsbm=map.get("ssgsdm_like").toString();
  173 + String fgsbm=map.get("fgsdm_like").toString();
  174 + String xlbm=map.get("xlbm_like").toString().trim();
  175 + String nbbm=map.get("nbbm_eq").toString();
  176 + String sxtj=map.get("sxtj").toString();
  177 + int nylx=Integer.parseInt(map.get("nylx").toString());
  178 + if(nbbm.trim()!=""){
  179 + stringList.add(nbbm);
  180 + }else{
  181 + if(!sxtj.equals("0")){
  182 + List<Object[]> objectLists;
  183 + if(sxtj.equals("3")){
  184 + //有加油没里程
  185 + objectLists=repository.checkNbmmYl(rq, gsbm, fgsbm, xlbm, nbbm,nylx);
  186 + for (int i = 0; i < objectLists.size(); i++) {
  187 + String clbm=objectLists.get(i)[0].toString();
  188 + double jzl=Double.parseDouble(objectLists.get(i)[1].toString());
  189 + double zlc=Double.parseDouble(objectLists.get(i)[2].toString());
  190 + if(jzl>0 && zlc<=0){
  191 + stringList.add(clbm);
  192 + }
  193 +
  194 + }
  195 +
  196 + }else if(sxtj.equals("4")){
  197 + //有里程没加油
  198 + objectLists=repository.checkNbmmYl(rq, gsbm, fgsbm, xlbm, nbbm,nylx);
  199 + for (int i = 0; i < objectLists.size(); i++) {
  200 + String clbm=objectLists.get(i)[0].toString();
  201 + double jzl=Double.parseDouble(objectLists.get(i)[1].toString());
  202 + double zlc=Double.parseDouble(objectLists.get(i)[2].toString());
  203 + if(zlc>0 && jzl<=0){
  204 + stringList.add(clbm);
  205 + }
  206 +
  207 + }
  208 + }else{
  209 + objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm,nylx);
  210 + for (int i = 0; i < objectLists.size(); i++) {
  211 + String clbm=objectLists.get(i)[0].toString();
  212 + int cs=Integer.parseInt(objectLists.get(i)[1].toString());
  213 + //一车一单
  214 +
  215 + if(sxtj.equals("1")){
  216 + if(cs==1){
  217 + stringList.add(clbm);
  218 + }
  219 + }
  220 + //一车多单
  221 + if(sxtj.equals("2")){
  222 + if(cs>1){
  223 + stringList.add(clbm);
  224 + }
  225 + }
  226 + }
  227 + }
  228 + }
  229 + }
  230 + List<Object[]> sumYlbList=new ArrayList<Object[]>();
  231 + if(sxtj.equals("0")){
  232 + sumYlbList=repository.sumYlb2(rq, gsbm, fgsbm, xlbm,nbbm,nylx);
  233 + }else{
  234 + if(stringList.size()>0){
  235 +
  236 + sumYlbList=repository.sumYlb(rq, gsbm, fgsbm, xlbm, stringList,nylx);
  237 + }
  238 +
  239 + }
  240 +
  241 + Double jzl=0.0,yh=0.0,sh=0.0;
  242 + for (int i = 0; i < sumYlbList.size(); i++) {
  243 + jzl = Arith.add(jzl, Double.valueOf(sumYlbList.get(i)[0].toString()));
  244 + yh = Arith.add(yh, Double.valueOf(sumYlbList.get(i)[1].toString()));
  245 + sh = Arith.add(sh, Double.valueOf(sumYlbList.get(i)[2].toString()));
  246 + }
  247 +
  248 + Map<String, Object> sumMap=new HashMap<String,Object>();
  249 + sumMap.put("jzl", jzl);
  250 + sumMap.put("yh", yh);
  251 + sumMap.put("sh", sh);
  252 + return sumMap;
  253 + }
  254 +}
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
@@ -811,7 +811,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -811,7 +811,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
811 String sql="select * from bsth_c_ylxxb where yyrq='"+rq+"' " 811 String sql="select * from bsth_c_ylxxb where yyrq='"+rq+"' "
812 + " and gsdm ='"+gsbm+"' and nylx ='0' and nbbm " 812 + " and gsdm ='"+gsbm+"' and nylx ='0' and nbbm "
813 + " not in ( select nbbm from bsth_c_ylb " 813 + " not in ( select nbbm from bsth_c_ylb "
814 - + " where DATE_FORMAT(rq,'%Y-%m-%d')='"+rq+"' " 814 + + " where rq='"+rq+"' "
815 + " and ssgsdm='"+gsbm+"' and fgsdm ='"+fgsbm+"')" 815 + " and ssgsdm='"+gsbm+"' and fgsdm ='"+fgsbm+"')"
816 + " and nbbm in (select inside_code from " 816 + " and nbbm in (select inside_code from "
817 + " bsth_c_cars where business_code ='"+gsbm+"' " 817 + " bsth_c_cars where business_code ='"+gsbm+"' "
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
@@ -119,6 +119,9 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -119,6 +119,9 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
119 119
120 List<Map<String,Object>> statisticsDailyTj(String gsdm,String fgsdm,String line, String date,String date2, String xlName, String type); 120 List<Map<String,Object>> statisticsDailyTj(String gsdm,String fgsdm,String line, String date,String date2, String xlName, String type);
121 121
  122 + //用于实时数据与统计数据合并查询
  123 + List<Map<String,Object>> statisticsDailyTjHb(String gsdm,String fgsdm,String line, String date,String date2, String xlName, String type);
  124 +
122 //List<Object> scheduleDaily(String line,String date); 125 //List<Object> scheduleDaily(String line,String date);
123 126
124 int countByLineCodeAndDate(String xlBm, String schDate); 127 int countByLineCodeAndDate(String xlBm, String schDate);
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -190,60 +190,57 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -190,60 +190,57 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
190 ScheduleRealInfo sch = dayOfSchedule.get(schId); 190 ScheduleRealInfo sch = dayOfSchedule.get(schId);
191 String gsbm = sch.getGsBm(), fgsbm = sch.getFgsBm(); 191 String gsbm = sch.getGsBm(), fgsbm = sch.getFgsBm();
192 192
193 - //校验运营公司  
194 - Personnel jsy = BasicData.perMap.get(gsbm + "-" + jGh);  
195 - if (null == jsy) {  
196 - msg = "【驾驶员】:" + sch.getGsName() + "暂无工号为" + "【" + jGh + "】的人员";  
197 - rs.put("msg", msg);  
198 - return rs;  
199 - }  
200 - if (!carExist(gsbm, nbbm)) { 193 + if (nbbm != null && !carExist(gsbm, nbbm)) {
201 msg = sch.getGsName() + "没有自编号为" + "[" + nbbm + "]的车辆"; 194 msg = sch.getGsName() + "没有自编号为" + "[" + nbbm + "]的车辆";
202 rs.put("msg", msg); 195 rs.put("msg", msg);
203 return rs; 196 return rs;
204 } 197 }
205 198
206 - if (!sch.getGsBm().equals(BasicData.nbbm2CompanyCodeMap.get(nbbm))) { 199 + if (nbbm != null && !sch.getGsBm().equals(BasicData.nbbm2CompanyCodeMap.get(nbbm))) {
207 rs.put("msg", sch.getXlName() + "所属的公司编码下找不到自编号为【" + nbbm + "】的车辆"); 200 rs.put("msg", sch.getXlName() + "所属的公司编码下找不到自编号为【" + nbbm + "】的车辆");
208 return rs; 201 return rs;
209 } 202 }
210 203
211 - Personnel spy = null;  
212 - if (StringUtils.isNotEmpty(sGh)) {  
213 - spy = BasicData.perMap.get(gsbm + "-" + sGh);  
214 - if (null == spy) {  
215 - msg = "【售票员】: " + sch.getGsName() + "暂无工号为" + "【" + sGh + "】的人员";  
216 - rs.put("msg", msg);  
217 - return rs;  
218 - }  
219 - } 204 + if (nbbm != null && !(fgsbm + "_" + gsbm).equals(BasicData.nbbm2FgsCompanyCodeMap.get(nbbm))) {
220 205
  206 + String clFgsName = BasicData.businessFgsCodeNameMap.get(BasicData.nbbm2FgsCompanyCodeMap.get(nbbm));
221 207
222 - //校验分公司  
223 - if (null != jsy && !fgsbm.equals(jsy.getBrancheCompanyCode())) {  
224 - msg = ("【驾驶员】:" + jGh + "/" + jsy.getPersonnelName() + "是" + jsy.getBrancheCompany() + "的人员"); 208 + msg = ("【" + nbbm + "】" + "是" + clFgsName + "的车辆!");
225 rs.put("msg", msg); 209 rs.put("msg", msg);
226 rs.put("checkStatus", -1); 210 rs.put("checkStatus", -1);
227 return rs; 211 return rs;
228 } 212 }
229 213
230 - if (StringUtils.isNotEmpty(sGh)) {  
231 - if (null != spy && !fgsbm.equals(spy.getBrancheCompanyCode())) {  
232 - msg = ("【售票员】: " + jGh + "/" + spy.getPersonnelName() + "是" + spy.getBrancheCompany() + "的人员"); 214 + if(null != jGh && !"/".equals(StringUtils.trim(jGh))){
  215 + Personnel jsy = BasicData.perMap.get(gsbm + "-" + jGh);
  216 +
  217 + if (null == jsy) {
  218 + msg = "【驾驶员】:" + sch.getGsName() + "暂无工号为" + "【" + jGh + "】的人员";
  219 + rs.put("msg", msg);
  220 + return rs;
  221 + }
  222 + else if (!fgsbm.equals(jsy.getBrancheCompanyCode())) {
  223 + //校验分公司
  224 + msg = ("【驾驶员】:" + jGh + "/" + jsy.getPersonnelName() + "是" + jsy.getBrancheCompany() + "的人员");
233 rs.put("msg", msg); 225 rs.put("msg", msg);
234 rs.put("checkStatus", -1); 226 rs.put("checkStatus", -1);
235 return rs; 227 return rs;
236 } 228 }
237 } 229 }
238 230
239 - if (!(fgsbm + "_" + gsbm).equals(BasicData.nbbm2FgsCompanyCodeMap.get(nbbm))) {  
240 -  
241 - String clFgsName = BasicData.businessFgsCodeNameMap.get(BasicData.nbbm2FgsCompanyCodeMap.get(nbbm));  
242 -  
243 - msg = ("【" + nbbm + "】" + "是" + clFgsName + "的车辆!");  
244 - rs.put("msg", msg);  
245 - rs.put("checkStatus", -1);  
246 - return rs; 231 + if (null != sGh && !"/".equals(StringUtils.trim(sGh))) {
  232 + Personnel spy = BasicData.perMap.get(gsbm + "-" + sGh);
  233 + if (null == spy) {
  234 + msg = "【售票员】: " + sch.getGsName() + "暂无工号为" + "【" + sGh + "】的人员";
  235 + rs.put("msg", msg);
  236 + return rs;
  237 + }
  238 + else if (!fgsbm.equals(spy.getBrancheCompanyCode())) {
  239 + msg = ("【售票员】: " + jGh + "/" + spy.getPersonnelName() + "是" + spy.getBrancheCompany() + "的人员");
  240 + rs.put("msg", msg);
  241 + rs.put("checkStatus", -1);
  242 + return rs;
  243 + }
247 } 244 }
248 245
249 rs.put("checkStatus", 1); 246 rs.put("checkStatus", 1);
@@ -1508,10 +1505,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1508,10 +1505,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1508 } 1505 }
1509 } 1506 }
1510 1507
  1508 + if(StringUtils.isBlank(jsy) || "/".equals(StringUtils.trim(jsy))){
  1509 + rs.put("status", ResponseCode.ERROR);
  1510 + rs.put("msg", "无效的参数【驾驶员】");
  1511 + return rs;
  1512 + }
  1513 +
1511 /** 1514 /**
1512 * 换驾驶员 1515 * 换驾驶员
1513 */ 1516 */
1514 - if (StringUtils.isNotEmpty(jsy) && jsy.indexOf("/") != -1) { 1517 + if (StringUtils.isNotEmpty(jsy)) {
1515 String jGh = jsy.split("/")[0]; 1518 String jGh = jsy.split("/")[0];
1516 String jName = getPersonName(sch.getGsBm(), jGh); 1519 String jName = getPersonName(sch.getGsBm(), jGh);
1517 if (StringUtils.isEmpty(jName)) { 1520 if (StringUtils.isEmpty(jName)) {
@@ -1528,8 +1531,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1528,8 +1531,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1528 * 换售票员 1531 * 换售票员
1529 */ 1532 */
1530 String spy = map.get("spy"); 1533 String spy = map.get("spy");
1531 - if (StringUtils.isNotEmpty(spy) && spy.indexOf("/") != -1 && !spy.equals("/")) { 1534 + if (StringUtils.isNotEmpty(spy) && !StringUtils.trim(spy).equals("/")) {
1532 String sGh = spy.split("/")[0]; 1535 String sGh = spy.split("/")[0];
  1536 +
1533 String sName = getPersonName(sch.getGsBm(), sGh); 1537 String sName = getPersonName(sch.getGsBm(), sGh);
1534 if (StringUtils.isEmpty(sName)) { 1538 if (StringUtils.isEmpty(sName)) {
1535 rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + sGh + "】的售票员"); 1539 rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + sGh + "】的售票员");
@@ -2662,6 +2666,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2662,6 +2666,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2662 } 2666 }
2663 Map<String, Object> map = new HashMap<String, Object>(); 2667 Map<String, Object> map = new HashMap<String, Object>();
2664 if (list.size() > 0) { 2668 if (list.size() > 0) {
  2669 + map.put("xlBm", list.get(0).getXlBm());
2665 map.put("xlName", list.get(0).getXlName()); 2670 map.put("xlName", list.get(0).getXlName());
2666 try { 2671 try {
2667 map.put("xlNamePy", PinyinHelper.convertToPinyinString(list.get(0).getXlName(), "", PinyinFormat.WITHOUT_TONE)); 2672 map.put("xlNamePy", PinyinHelper.convertToPinyinString(list.get(0).getXlName(), "", PinyinFormat.WITHOUT_TONE));
@@ -2910,6 +2915,148 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2910,6 +2915,148 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2910 } 2915 }
2911 2916
2912 @Override 2917 @Override
  2918 + public List<Map<String, Object>> statisticsDailyTjHb(String gsdm, String fgsdm, String line, String date, String date2,
  2919 + String xlName, String type) {
  2920 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
  2921 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  2922 + List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
  2923 + line = line.trim();
  2924 + if (line.equals("")) {
  2925 + //查询所有线路
  2926 + list = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date, date2, gsdm, fgsdm);
  2927 + } else {
  2928 + //查询单条线路
  2929 + list = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date, date2);
  2930 + }
  2931 + for (int i = 0; i < list.size(); i++) {
  2932 + ScheduleRealInfo s = list.get(i);
  2933 + Set<ChildTaskPlan> cts = s.getcTasks();
  2934 + if (cts != null && cts.size() > 0) {
  2935 + list_s.add(s);
  2936 + } else {
  2937 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  2938 + list_s.add(s);
  2939 + }
  2940 + }
  2941 + }
  2942 + List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
  2943 + for (int i = 0; i < list.size(); i++) {
  2944 + if (i < list.size() - 1) {
  2945 + if (list.get(i + 1).getXlBm().equals(list.get(i).getXlBm())) {
  2946 + lists.add(list.get(i));
  2947 + } else {
  2948 + lists.add(list.get(i));
  2949 + Map<String, Object> map = staticTj(lists);
  2950 + lMap.add(map);
  2951 + lists = new ArrayList<ScheduleRealInfo>();
  2952 + }
  2953 + } else {
  2954 + if (list.get(i).getXlBm().equals(list.get(i - 1).getXlBm())) {
  2955 + lists.add(list.get(i));
  2956 + Map<String, Object> map = staticTj(lists);
  2957 + lMap.add(map);
  2958 + } else {
  2959 + lists = new ArrayList<ScheduleRealInfo>();
  2960 + lists.add(list.get(i));
  2961 + Map<String, Object> map = staticTj(lists);
  2962 + lMap.add(map);
  2963 + }
  2964 + }
  2965 + }
  2966 +
  2967 + Collections.sort(lMap, new AccountXlbm());
  2968 + Map<String, Object> map = new HashMap<String, Object>();
  2969 + map.put("xlBm", "hj");
  2970 + map.put("xlName", "合计");
  2971 + double jhyygl = culateService.culateJhgl(list);//计划营运公里
  2972 + double jhjcclc = culateService.culateJhJccgl(list);//计划进出场公里(计划空驶公里)
  2973 + map.put("jhlc", jhyygl);
  2974 + map.put("jcclc", jhjcclc);
  2975 + map.put("jhzlc", Arith.add(jhyygl, jhjcclc));
  2976 +
  2977 + double ljgl = culateService.culateLjgl(list_s);
  2978 + double sjyygl = culateService.culateSjgl(list_s);
  2979 + double zyygl = Arith.add(sjyygl, ljgl);
  2980 +
  2981 + double sjjccgl = culateService.culateJccgl(list_s);
  2982 + double sjksgl = culateService.culateKsgl(list_s);
  2983 + double zksgl = Arith.add(sjjccgl, sjksgl);
  2984 + map.put("sjzgl", Arith.add(zyygl, zksgl));
  2985 + map.put("sjgl", zyygl);
  2986 + map.put("sjksgl", zksgl);
  2987 +
  2988 + double ssgl = culateService.culateLbgl(list);
  2989 + map.put("ssgl", ssgl);
  2990 + //计划+临加-少驶=实驶
  2991 + double jl = Arith.sub(Arith.add(jhyygl, ljgl), ssgl);
  2992 + if (jl == zyygl) {
  2993 + map.put("zt", 0);
  2994 + } else {
  2995 + map.put("zt", 1);
  2996 + }
  2997 + map.put("ssgl_lz", culateService.culateCJLC(list, "路阻"));
  2998 + map.put("ssgl_dm", culateService.culateCJLC(list, "吊慢"));
  2999 + map.put("ssgl_gz", culateService.culateCJLC(list, "故障"));
  3000 + map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷"));
  3001 + map.put("ssgl_zs", culateService.culateCJLC(list, "肇事"));
  3002 + map.put("ssgl_qr", culateService.culateCJLC(list, "缺人"));
  3003 + map.put("ssgl_qc", culateService.culateCJLC(list, "缺车"));
  3004 + map.put("ssgl_kx", culateService.culateCJLC(list, "客稀"));
  3005 + map.put("ssgl_qh", culateService.culateCJLC(list, "气候"));
  3006 + map.put("ssgl_yw", culateService.culateCJLC(list, "援外"));
  3007 + double ssgl_pc = culateService.culateCJLC(list, "配车");
  3008 + double ssgl_by = culateService.culateCJLC(list, "保养");
  3009 + double ssgl_cj = culateService.culateCJLC(list, "抽减");
  3010 + double ssgl_qt = culateService.culateCJLC(list, "其他");
  3011 + map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
  3012 +
  3013 + map.put("ssbc", culateService.culateLbbc(list));
  3014 + map.put("ljgl", ljgl);
  3015 + map.put("jhbc", culateService.culateJhbc(list, ""));
  3016 + map.put("jhbc_m", culateService.culateJhbc(list, "zgf"));
  3017 + map.put("jhbc_a", culateService.culateJhbc(list, "wgf"));
  3018 + map.put("sjbc", culateService.culateSjbc(list_s, ""));
  3019 + map.put("sjbc_m", culateService.culateSjbc(list_s, "zgf"));
  3020 + map.put("sjbc_a", culateService.culateSjbc(list_s, "wgf"));
  3021 + map.put("ljbc", culateService.culateLjbc(list_s, ""));
  3022 + map.put("ljbc_m", culateService.culateLjbc(list_s, "zgf"));
  3023 + map.put("ljbc_a", culateService.culateLjbc(list_s, "wgf"));
  3024 + map.put("fzbc", culateService.culateFzbc(list_s, ""));
  3025 + map.put("fzbc_m", culateService.culateFzbc(list_s, "zgf"));
  3026 + map.put("fzbc_a", culateService.culateFzbc(list_s, "wgf"));
  3027 + map.put("dtbc", 0);
  3028 + map.put("dtbc_m", 0);
  3029 + map.put("dtbc_a", 0);
  3030 + if (list.size() > 0) {
  3031 + int djg = 0, djg_m = 0, djg_a = 0, djg_time = 0;
  3032 + for (Map<String, Object> m : lMap) {
  3033 + if (m.containsKey("djg") && m.get("djg") != null)
  3034 + djg += Integer.valueOf(m.get("djg").toString());
  3035 + if (m.containsKey("djg_m") && m.get("djg_m") != null)
  3036 + djg_m += Integer.valueOf(m.get("djg_m").toString());
  3037 + if (m.containsKey("djg_a") && m.get("djg_a") != null)
  3038 + djg_a += Integer.valueOf(m.get("djg_a").toString());
  3039 + if (m.containsKey("djg_time") && m.get("djg_time") != null) {
  3040 + int t = Integer.valueOf(m.get("djg_time").toString());
  3041 + if (t > djg_time)
  3042 + djg_time = t;
  3043 + }
  3044 + }
  3045 + map.put("djg", djg);
  3046 + map.put("djg_m", djg_m);
  3047 + map.put("djg_a", djg_a);
  3048 + map.put("djg_time", djg_time);
  3049 + } else {
  3050 + map.put("djg", "0");
  3051 + map.put("djg_m", "0");
  3052 + map.put("djg_a", "0");
  3053 + map.put("djg_time", "0");
  3054 + }
  3055 + lMap.add(map);
  3056 + return lMap;
  3057 + }
  3058 +
  3059 + @Override
2913 public Map<String, Object> scheduleDaily(String line, String date) { 3060 public Map<String, Object> scheduleDaily(String line, String date) {
2914 Map<String, String> tempMap = null; 3061 Map<String, String> tempMap = null;
2915 List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.scheduleByDateAndLine(line, date); 3062 List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.scheduleByDateAndLine(line, date);
@@ -3305,11 +3452,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3305,11 +3452,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3305 Set<ScheduleRealInfo> set = new HashSet<>(); 3452 Set<ScheduleRealInfo> set = new HashSet<>();
3306 3453
3307 ScheduleRealInfo sch; 3454 ScheduleRealInfo sch;
3308 - //StringBuilder sb = new StringBuilder();  
3309 3455
3310 String jGh = null, jName, sGh, sName; 3456 String jGh = null, jName, sGh, sName;
3311 for (ChangePersonCar cpc : cpcs) { 3457 for (ChangePersonCar cpc : cpcs) {
3312 - //sb = new StringBuilder();  
3313 3458
3314 sch = dayOfSchedule.get(cpc.getSchId()); 3459 sch = dayOfSchedule.get(cpc.getSchId());
3315 if (sch == null) 3460 if (sch == null)
@@ -3337,6 +3482,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3337,6 +3482,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3337 } 3482 }
3338 } 3483 }
3339 3484
  3485 +
3340 //为换人换车情况表写入数据 3486 //为换人换车情况表写入数据
3341 schModifyLog.saveChangetochange(sch, cpc, userId); 3487 schModifyLog.saveChangetochange(sch, cpc, userId);
3342 //日志记录 3488 //日志记录
@@ -3344,8 +3490,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3344,8 +3490,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3344 3490
3345 //换驾驶员 3491 //换驾驶员
3346 if (StringUtils.isNotEmpty(cpc.getJsy())) { 3492 if (StringUtils.isNotEmpty(cpc.getJsy())) {
3347 - /*if(!jGh.equals(sch.getjGh()))  
3348 - sb.append(sch.getjGh() + " 换 " + jGh + ";");*/  
3349 //换驾驶员 3493 //换驾驶员
3350 if (persoChange(sch, jGh)) 3494 if (persoChange(sch, jGh))
3351 set.add(sch); 3495 set.add(sch);
@@ -3353,8 +3497,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3353,8 +3497,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3353 3497
3354 //换售票员 3498 //换售票员
3355 if (StringUtils.isNotEmpty(cpc.getSpy()) 3499 if (StringUtils.isNotEmpty(cpc.getSpy())
3356 - && cpc.getSpy().indexOf("/") != -1  
3357 - && cpc.getSpy().length() > 1) { 3500 + && !"/".equals(StringUtils.trim(cpc.getSpy()))) {
  3501 +
3358 sGh = cpc.getSpy().split("/")[0]; 3502 sGh = cpc.getSpy().split("/")[0];
3359 sName = getPersonName(sch.getGsBm(), sGh); 3503 sName = getPersonName(sch.getGsBm(), sGh);
3360 if (StringUtils.isEmpty(sName)) { 3504 if (StringUtils.isEmpty(sName)) {
src/main/java/com/bsth/service/schedule/datatools/Excel2003PoiOperator.java
1 -package com.bsth.service.schedule.datatools;  
2 -  
3 -import org.apache.poi.hssf.usermodel.*;  
4 -import org.apache.poi.ss.usermodel.*;  
5 -import org.apache.poi.ss.util.WorkbookUtil;  
6 -import org.apache.poi.xssf.usermodel.XSSFColor;  
7 -  
8 -import java.awt.Color;  
9 -import java.io.File;  
10 -import java.io.FileOutputStream;  
11 -import java.util.Date;  
12 -  
13 -/**  
14 - * Excel2003表格Poi操作类。  
15 - * TODO:2003里面还有很多和2007不通的样式设定方式,以后再改  
16 - */  
17 -public class Excel2003PoiOperator implements ExcelPoiOperator {  
18 - @Override  
19 - public Cell createCell(  
20 - Workbook workbook, Row row, short columnIndex,  
21 - Object value, int valueType,  
22 - HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment,  
23 - BorderStyle borderStyle, Color borderColor,  
24 - short fontSize, Color fontColor, String fontName,  
25 - Color backgroudColor, FillPatternType fillPatternType) {  
26 - HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;  
27 - HSSFRow hssfRow = (HSSFRow) row;  
28 -  
29 - CreationHelper creationHelper = hssfWorkbook.getCreationHelper();  
30 -  
31 - // 1、创建单元格对象  
32 - HSSFCell hssfCell = hssfRow.createCell((int) columnIndex);  
33 -  
34 - // 2、设定样式  
35 - HSSFCellStyle hssfCellStyle = hssfWorkbook.createCellStyle();  
36 -  
37 - // 设定值及数据格式  
38 - DataFormat dataFormat = hssfWorkbook.createDataFormat();  
39 - if (valueType == HSSFCell.CELL_TYPE_STRING) {  
40 - hssfCellStyle.setDataFormat(dataFormat.getFormat("@"));  
41 - hssfCell.setCellValue(creationHelper.createRichTextString(String.valueOf(value)));  
42 - } else if (valueType == HSSFCell.CELL_TYPE_NUMERIC) {  
43 - if (value instanceof Date) { // 日期  
44 - hssfCellStyle.setDataFormat(dataFormat.getFormat("yyyy-mm-dd"));  
45 - hssfCell.setCellValue((Date) value);  
46 - } else if (value instanceof Double) {  
47 - hssfCellStyle.setDataFormat(dataFormat.getFormat("0.00"));  
48 - hssfCell.setCellValue((Double) value);  
49 - } else if (value instanceof Integer) {  
50 - hssfCellStyle.setDataFormat(dataFormat.getFormat("0"));  
51 - hssfCell.setCellValue(Double.valueOf(value.toString()));  
52 - } else {  
53 - throw new RuntimeException("Excel2003 只支持 String Date Double Integer 单元格类型");  
54 - }  
55 - } else if (valueType == HSSFCell.CELL_TYPE_BLANK) {  
56 - hssfCell.setCellType(HSSFCell.CELL_TYPE_BLANK);  
57 - } else {  
58 - throw new RuntimeException("暂时不支持字符串、日期、数字以外的类型");  
59 - }  
60 -  
61 - // 对齐方式  
62 - hssfCellStyle.setAlignment((short) horizontalAlignment.ordinal());  
63 - hssfCellStyle.setVerticalAlignment((short) verticalAlignment.ordinal());  
64 -  
65 - // 边框样式  
66 - hssfCellStyle.setBorderTop((short) borderStyle.ordinal());  
67 - hssfCellStyle.setTopBorderColor(new XSSFColor(borderColor).getIndexed());  
68 - hssfCellStyle.setBorderBottom((short) borderStyle.ordinal());  
69 - hssfCellStyle.setBottomBorderColor(new XSSFColor(borderColor).getIndexed());  
70 - hssfCellStyle.setBorderLeft((short) borderStyle.ordinal());  
71 - hssfCellStyle.setLeftBorderColor(new XSSFColor(borderColor).getIndexed());  
72 - hssfCellStyle.setBorderRight((short) borderStyle.ordinal());  
73 - hssfCellStyle.setRightBorderColor(new XSSFColor(borderColor).getIndexed());  
74 -  
75 - // 字体颜色  
76 -// HSSFFont font = hssfWorkbook.createFont();  
77 -// font.setColor(new XSSFColor(fontColor).getIndexed());  
78 -// font.setFontHeightInPoints(fontSize);  
79 -// font.setFontName(fontName);  
80 -// hssfCellStyle.setFont(font);  
81 -  
82 -  
83 - // 单元背景色  
84 - hssfCellStyle.setFillForegroundColor(new XSSFColor(backgroudColor).getIndexed());  
85 -// hssfCellStyle.setFillPattern((short) fillPatternType.ordinal());  
86 -  
87 - // TODO  
88 -  
89 - hssfCell.setCellStyle(hssfCellStyle);  
90 - return hssfCell;  
91 - }  
92 -  
93 - @Override  
94 - public Cell createStringCell(  
95 - Workbook workbook, Row row, short columnIndex,  
96 - String value) {  
97 - HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;  
98 - HSSFRow hssfRow = (HSSFRow) row;  
99 -  
100 - HSSFCell hssfCell = (HSSFCell) createCell(  
101 - hssfWorkbook, hssfRow, columnIndex,  
102 - value, HSSFCell.CELL_TYPE_STRING,  
103 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
104 - BorderStyle.MEDIUM, new java.awt.Color(0xdedede),  
105 - (short) 13, new java.awt.Color(0x2765A7), "宋体",  
106 - new Color(0xffffff), FillPatternType.SOLID_FOREGROUND  
107 - );  
108 - DataFormat dataFormat = hssfWorkbook.createDataFormat();  
109 - hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("@"));  
110 - return hssfCell;  
111 - }  
112 -  
113 - @Override  
114 - public Cell createStringCell(  
115 - Workbook workbook, Row row, short columnIndex,  
116 - String value,  
117 - Color backgroudColor) {  
118 - HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;  
119 - HSSFRow hssfRow = (HSSFRow) row;  
120 -  
121 - HSSFCell hssfCell = (HSSFCell) createCell(  
122 - hssfWorkbook, hssfRow, columnIndex,  
123 - value, HSSFCell.CELL_TYPE_STRING,  
124 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
125 - BorderStyle.MEDIUM, new java.awt.Color(0xdedede),  
126 - (short) 13, new java.awt.Color(0x2765A7), "宋体",  
127 - backgroudColor, FillPatternType.SOLID_FOREGROUND  
128 - );  
129 - DataFormat dataFormat = hssfWorkbook.createDataFormat();  
130 - hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("@"));  
131 - return hssfCell;  
132 - }  
133 -  
134 - @Override  
135 - public Cell createIntegerCell(  
136 - Workbook workbook, Row row, short columnIndex,  
137 - Integer value) {  
138 - HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;  
139 - HSSFRow hssfRow = (HSSFRow) row;  
140 -  
141 - HSSFCell hssfCell = (HSSFCell) createCell(  
142 - hssfWorkbook, hssfRow, columnIndex,  
143 - value, HSSFCell.CELL_TYPE_NUMERIC,  
144 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
145 - BorderStyle.MEDIUM, new Color(0xdedede),  
146 - (short) 13, new Color(0x2765A7), "宋体",  
147 - new Color(0xffffff), FillPatternType.SOLID_FOREGROUND  
148 - );  
149 -  
150 - DataFormat dataFormat = hssfWorkbook.createDataFormat();  
151 - hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0"));  
152 - return hssfCell;  
153 - }  
154 -  
155 - @Override  
156 - public Cell createIntegerCell(  
157 - Workbook workbook, Row row, short columnIndex,  
158 - Integer value,  
159 - Color backgroudColor) {  
160 - HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;  
161 - HSSFRow hssfRow = (HSSFRow) row;  
162 -  
163 - HSSFCell hssfCell = (HSSFCell) createCell(  
164 - hssfWorkbook, hssfRow, columnIndex,  
165 - value, HSSFCell.CELL_TYPE_NUMERIC,  
166 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
167 - BorderStyle.MEDIUM, new Color(0xdedede),  
168 - (short) 13, new Color(0x2765A7), "宋体",  
169 - backgroudColor, FillPatternType.SOLID_FOREGROUND  
170 - );  
171 -  
172 - DataFormat dataFormat = hssfWorkbook.createDataFormat();  
173 - hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0"));  
174 - return hssfCell;  
175 - }  
176 -  
177 - @Override  
178 - public Cell createDoubleCell(  
179 - Workbook workbook, Row row, short columnIndex,  
180 - Double value) {  
181 - HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;  
182 - HSSFRow hssfRow = (HSSFRow) row;  
183 -  
184 - HSSFCell hssfCell = (HSSFCell) createCell(  
185 - hssfWorkbook, hssfRow, columnIndex,  
186 - value, HSSFCell.CELL_TYPE_NUMERIC,  
187 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
188 - BorderStyle.MEDIUM, new Color(0xdedede),  
189 - (short) 13, new Color(0x2765A7), "宋体",  
190 - new Color(0xffffff), FillPatternType.SOLID_FOREGROUND  
191 - );  
192 -  
193 - DataFormat dataFormat = hssfWorkbook.createDataFormat();  
194 - hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0.00"));  
195 - return hssfCell;  
196 - }  
197 -  
198 - @Override  
199 - public Cell createDoubleCell(  
200 - Workbook workbook, Row row, short columnIndex,  
201 - Double value,  
202 - Color backgroudColor) {  
203 - HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;  
204 - HSSFRow hssfRow = (HSSFRow) row;  
205 -  
206 - HSSFCell hssfCell = (HSSFCell) createCell(  
207 - hssfWorkbook, hssfRow, columnIndex,  
208 - value, HSSFCell.CELL_TYPE_NUMERIC,  
209 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
210 - BorderStyle.MEDIUM, new Color(0xdedede),  
211 - (short) 13, new Color(0x2765A7), "宋体",  
212 - backgroudColor, FillPatternType.SOLID_FOREGROUND  
213 - );  
214 -  
215 - DataFormat dataFormat = hssfWorkbook.createDataFormat();  
216 - hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0.00"));  
217 - return hssfCell;  
218 - }  
219 -  
220 - @Override  
221 - public Cell createBlankCell(Workbook workbook, Row row, short columnIndex) {  
222 - return createCell(  
223 - workbook, row, columnIndex,  
224 - null, HSSFCell.CELL_TYPE_BLANK,  
225 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
226 - BorderStyle.MEDIUM, new Color(0xdedede),  
227 - (short) 13, new Color(0x2765A7), "宋体",  
228 - new Color(0xffffff), FillPatternType.SOLID_FOREGROUND  
229 - );  
230 - }  
231 -  
232 - @Override  
233 - public Cell setCellDataFormat(Workbook workbook, Cell cell, String fmt) {  
234 - HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;  
235 - DataFormat dataFormat = hssfWorkbook.createDataFormat();  
236 - cell.getCellStyle().setDataFormat(dataFormat.getFormat("fmt"));  
237 - return cell;  
238 - }  
239 -  
240 - @Override  
241 - public Cell setCellBackground(Cell cell, Color color) {  
242 - HSSFCell hssfCell = (HSSFCell) cell;  
243 - hssfCell.getCellStyle().setFillForegroundColor(new XSSFColor(color).getIndexed());  
244 - return cell;  
245 - }  
246 -  
247 - @Override  
248 - public Workbook createWorkBook() {  
249 - return new HSSFWorkbook();  
250 - }  
251 -  
252 - @Override  
253 - public Sheet createWorkBookSheet(Workbook workbook, String sheetName) {  
254 - HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;  
255 - return hssfWorkbook.createSheet(WorkbookUtil.createSafeSheetName(sheetName));  
256 - }  
257 -  
258 - @Override  
259 - public Row createSheetRow(Sheet sheet, int rowIndex) {  
260 - HSSFSheet hssfSheet = (HSSFSheet) sheet;  
261 - return hssfSheet.createRow(rowIndex);  
262 - }  
263 -  
264 - @Override  
265 - public void writeExcel(File excelFile, Workbook workbook) {  
266 - try {  
267 - HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;  
268 - FileOutputStream fileOutputStream = new FileOutputStream(excelFile);  
269 - hssfWorkbook.write(fileOutputStream);  
270 - } catch (Exception exp) {  
271 - throw new RuntimeException(exp);  
272 - }  
273 - }  
274 -} 1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import org.apache.poi.hssf.usermodel.*;
  4 +import org.apache.poi.ss.usermodel.*;
  5 +import org.apache.poi.ss.util.WorkbookUtil;
  6 +import org.apache.poi.xssf.usermodel.XSSFColor;
  7 +
  8 +import java.awt.Color;
  9 +import java.io.File;
  10 +import java.io.FileOutputStream;
  11 +import java.util.Date;
  12 +
  13 +/**
  14 + * Excel2003表格Poi操作类。
  15 + * TODO:2003里面还有很多和2007不通的样式设定方式,以后再改
  16 + */
  17 +public class Excel2003PoiOperator implements ExcelPoiOperator {
  18 + @Override
  19 + public Cell createCell(
  20 + Workbook workbook, Row row, short columnIndex,
  21 + Object value, int valueType,
  22 + HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment,
  23 + BorderStyle borderStyle, Color borderColor,
  24 + short fontSize, Color fontColor, String fontName,
  25 + Color backgroudColor, FillPatternType fillPatternType) {
  26 + HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
  27 + HSSFRow hssfRow = (HSSFRow) row;
  28 +
  29 + CreationHelper creationHelper = hssfWorkbook.getCreationHelper();
  30 +
  31 + // 1、创建单元格对象
  32 + HSSFCell hssfCell = hssfRow.createCell((int) columnIndex);
  33 +
  34 + // 2、设定样式
  35 + HSSFCellStyle hssfCellStyle = hssfWorkbook.createCellStyle();
  36 +
  37 + // 设定值及数据格式
  38 + DataFormat dataFormat = hssfWorkbook.createDataFormat();
  39 + if (valueType == HSSFCell.CELL_TYPE_STRING) {
  40 + hssfCellStyle.setDataFormat(dataFormat.getFormat("@"));
  41 + hssfCell.setCellValue(creationHelper.createRichTextString(String.valueOf(value)));
  42 + } else if (valueType == HSSFCell.CELL_TYPE_NUMERIC) {
  43 + if (value instanceof Date) { // 日期
  44 + hssfCellStyle.setDataFormat(dataFormat.getFormat("yyyy-mm-dd"));
  45 + hssfCell.setCellValue((Date) value);
  46 + } else if (value instanceof Double) {
  47 + hssfCellStyle.setDataFormat(dataFormat.getFormat("0.00"));
  48 + hssfCell.setCellValue((Double) value);
  49 + } else if (value instanceof Integer) {
  50 + hssfCellStyle.setDataFormat(dataFormat.getFormat("0"));
  51 + hssfCell.setCellValue(Double.valueOf(value.toString()));
  52 + } else {
  53 + throw new RuntimeException("Excel2003 只支持 String Date Double Integer 单元格类型");
  54 + }
  55 + } else if (valueType == HSSFCell.CELL_TYPE_BLANK) {
  56 + hssfCell.setCellType(HSSFCell.CELL_TYPE_BLANK);
  57 + } else {
  58 + throw new RuntimeException("暂时不支持字符串、日期、数字以外的类型");
  59 + }
  60 +
  61 + // 对齐方式
  62 + hssfCellStyle.setAlignment((short) horizontalAlignment.ordinal());
  63 + hssfCellStyle.setVerticalAlignment((short) verticalAlignment.ordinal());
  64 +
  65 + // 边框样式
  66 + hssfCellStyle.setBorderTop((short) borderStyle.ordinal());
  67 + hssfCellStyle.setTopBorderColor(new XSSFColor(borderColor).getIndexed());
  68 + hssfCellStyle.setBorderBottom((short) borderStyle.ordinal());
  69 + hssfCellStyle.setBottomBorderColor(new XSSFColor(borderColor).getIndexed());
  70 + hssfCellStyle.setBorderLeft((short) borderStyle.ordinal());
  71 + hssfCellStyle.setLeftBorderColor(new XSSFColor(borderColor).getIndexed());
  72 + hssfCellStyle.setBorderRight((short) borderStyle.ordinal());
  73 + hssfCellStyle.setRightBorderColor(new XSSFColor(borderColor).getIndexed());
  74 +
  75 + // 字体颜色
  76 +// HSSFFont font = hssfWorkbook.createFont();
  77 +// font.setColor(new XSSFColor(fontColor).getIndexed());
  78 +// font.setFontHeightInPoints(fontSize);
  79 +// font.setFontName(fontName);
  80 +// hssfCellStyle.setFont(font);
  81 +
  82 +
  83 + // 单元背景色
  84 + hssfCellStyle.setFillForegroundColor(new XSSFColor(backgroudColor).getIndexed());
  85 +// hssfCellStyle.setFillPattern((short) fillPatternType.ordinal());
  86 +
  87 + // TODO
  88 +
  89 + hssfCell.setCellStyle(hssfCellStyle);
  90 + return hssfCell;
  91 + }
  92 +
  93 + @Override
  94 + public Cell createStringCell(
  95 + Workbook workbook, Row row, short columnIndex,
  96 + String value) {
  97 + HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
  98 + HSSFRow hssfRow = (HSSFRow) row;
  99 +
  100 + HSSFCell hssfCell = (HSSFCell) createCell(
  101 + hssfWorkbook, hssfRow, columnIndex,
  102 + value, HSSFCell.CELL_TYPE_STRING,
  103 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  104 + BorderStyle.MEDIUM, new java.awt.Color(0xdedede),
  105 + (short) 13, new java.awt.Color(0x2765A7), "宋体",
  106 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  107 + );
  108 + DataFormat dataFormat = hssfWorkbook.createDataFormat();
  109 + hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("@"));
  110 + return hssfCell;
  111 + }
  112 +
  113 + @Override
  114 + public Cell createStringCell(
  115 + Workbook workbook, Row row, short columnIndex,
  116 + String value,
  117 + Color backgroudColor) {
  118 + HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
  119 + HSSFRow hssfRow = (HSSFRow) row;
  120 +
  121 + HSSFCell hssfCell = (HSSFCell) createCell(
  122 + hssfWorkbook, hssfRow, columnIndex,
  123 + value, HSSFCell.CELL_TYPE_STRING,
  124 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  125 + BorderStyle.MEDIUM, new java.awt.Color(0xdedede),
  126 + (short) 13, new java.awt.Color(0x2765A7), "宋体",
  127 + backgroudColor, FillPatternType.SOLID_FOREGROUND
  128 + );
  129 + DataFormat dataFormat = hssfWorkbook.createDataFormat();
  130 + hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("@"));
  131 + return hssfCell;
  132 + }
  133 +
  134 + @Override
  135 + public Cell createIntegerCell(
  136 + Workbook workbook, Row row, short columnIndex,
  137 + Integer value) {
  138 + HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
  139 + HSSFRow hssfRow = (HSSFRow) row;
  140 +
  141 + HSSFCell hssfCell = (HSSFCell) createCell(
  142 + hssfWorkbook, hssfRow, columnIndex,
  143 + value, HSSFCell.CELL_TYPE_NUMERIC,
  144 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  145 + BorderStyle.MEDIUM, new Color(0xdedede),
  146 + (short) 13, new Color(0x2765A7), "宋体",
  147 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  148 + );
  149 +
  150 + DataFormat dataFormat = hssfWorkbook.createDataFormat();
  151 + hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0"));
  152 + return hssfCell;
  153 + }
  154 +
  155 + @Override
  156 + public Cell createIntegerCell(
  157 + Workbook workbook, Row row, short columnIndex,
  158 + Integer value,
  159 + Color backgroudColor) {
  160 + HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
  161 + HSSFRow hssfRow = (HSSFRow) row;
  162 +
  163 + HSSFCell hssfCell = (HSSFCell) createCell(
  164 + hssfWorkbook, hssfRow, columnIndex,
  165 + value, HSSFCell.CELL_TYPE_NUMERIC,
  166 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  167 + BorderStyle.MEDIUM, new Color(0xdedede),
  168 + (short) 13, new Color(0x2765A7), "宋体",
  169 + backgroudColor, FillPatternType.SOLID_FOREGROUND
  170 + );
  171 +
  172 + DataFormat dataFormat = hssfWorkbook.createDataFormat();
  173 + hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0"));
  174 + return hssfCell;
  175 + }
  176 +
  177 + @Override
  178 + public Cell createDoubleCell(
  179 + Workbook workbook, Row row, short columnIndex,
  180 + Double value) {
  181 + HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
  182 + HSSFRow hssfRow = (HSSFRow) row;
  183 +
  184 + HSSFCell hssfCell = (HSSFCell) createCell(
  185 + hssfWorkbook, hssfRow, columnIndex,
  186 + value, HSSFCell.CELL_TYPE_NUMERIC,
  187 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  188 + BorderStyle.MEDIUM, new Color(0xdedede),
  189 + (short) 13, new Color(0x2765A7), "宋体",
  190 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  191 + );
  192 +
  193 + DataFormat dataFormat = hssfWorkbook.createDataFormat();
  194 + hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0.00"));
  195 + return hssfCell;
  196 + }
  197 +
  198 + @Override
  199 + public Cell createDoubleCell(
  200 + Workbook workbook, Row row, short columnIndex,
  201 + Double value,
  202 + Color backgroudColor) {
  203 + HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
  204 + HSSFRow hssfRow = (HSSFRow) row;
  205 +
  206 + HSSFCell hssfCell = (HSSFCell) createCell(
  207 + hssfWorkbook, hssfRow, columnIndex,
  208 + value, HSSFCell.CELL_TYPE_NUMERIC,
  209 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  210 + BorderStyle.MEDIUM, new Color(0xdedede),
  211 + (short) 13, new Color(0x2765A7), "宋体",
  212 + backgroudColor, FillPatternType.SOLID_FOREGROUND
  213 + );
  214 +
  215 + DataFormat dataFormat = hssfWorkbook.createDataFormat();
  216 + hssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0.00"));
  217 + return hssfCell;
  218 + }
  219 +
  220 + @Override
  221 + public Cell createBlankCell(Workbook workbook, Row row, short columnIndex) {
  222 + return createCell(
  223 + workbook, row, columnIndex,
  224 + null, HSSFCell.CELL_TYPE_BLANK,
  225 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  226 + BorderStyle.MEDIUM, new Color(0xdedede),
  227 + (short) 13, new Color(0x2765A7), "宋体",
  228 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  229 + );
  230 + }
  231 +
  232 + @Override
  233 + public Cell setCellDataFormat(Workbook workbook, Cell cell, String fmt) {
  234 + HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
  235 + DataFormat dataFormat = hssfWorkbook.createDataFormat();
  236 + cell.getCellStyle().setDataFormat(dataFormat.getFormat("fmt"));
  237 + return cell;
  238 + }
  239 +
  240 + @Override
  241 + public Cell setCellBackground(Cell cell, Color color) {
  242 + HSSFCell hssfCell = (HSSFCell) cell;
  243 + hssfCell.getCellStyle().setFillForegroundColor(new XSSFColor(color).getIndexed());
  244 + return cell;
  245 + }
  246 +
  247 + @Override
  248 + public Workbook createWorkBook() {
  249 + return new HSSFWorkbook();
  250 + }
  251 +
  252 + @Override
  253 + public Sheet createWorkBookSheet(Workbook workbook, String sheetName) {
  254 + HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
  255 + return hssfWorkbook.createSheet(WorkbookUtil.createSafeSheetName(sheetName));
  256 + }
  257 +
  258 + @Override
  259 + public Row createSheetRow(Sheet sheet, int rowIndex) {
  260 + HSSFSheet hssfSheet = (HSSFSheet) sheet;
  261 + return hssfSheet.createRow(rowIndex);
  262 + }
  263 +
  264 + @Override
  265 + public void writeExcel(File excelFile, Workbook workbook) {
  266 + try {
  267 + HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
  268 + FileOutputStream fileOutputStream = new FileOutputStream(excelFile);
  269 + hssfWorkbook.write(fileOutputStream);
  270 + } catch (Exception exp) {
  271 + throw new RuntimeException(exp);
  272 + }
  273 + }
  274 +}
src/main/java/com/bsth/service/schedule/datatools/Excel2007PoiOperator.java
1 -package com.bsth.service.schedule.datatools;  
2 -  
3 -import org.apache.poi.ss.usermodel.*;  
4 -import org.apache.poi.ss.util.WorkbookUtil;  
5 -import org.apache.poi.xssf.usermodel.*;  
6 -  
7 -import java.awt.Color;  
8 -import java.io.File;  
9 -import java.io.FileOutputStream;  
10 -import java.util.Date;  
11 -  
12 -/**  
13 - * Excel2007表格Poi操作类。  
14 - * TODO:以后测style需要重用  
15 - */  
16 -public class Excel2007PoiOperator implements ExcelPoiOperator {  
17 - @Override  
18 - public Cell createCell(  
19 - Workbook workbook, Row row, short columnIndex,  
20 - Object value, int valueType,  
21 - HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment,  
22 - BorderStyle borderStyle, java.awt.Color borderColor,  
23 - short fontSize, java.awt.Color fontColor, String fontName,  
24 - java.awt.Color backgroudColor, FillPatternType fillPatternType) {  
25 -  
26 - XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;  
27 - XSSFRow xssfRow = (XSSFRow) row;  
28 -  
29 - CreationHelper creationHelper = xssfWorkbook.getCreationHelper();  
30 -  
31 - // 1、创建单元格对象  
32 - XSSFCell xssfCell = xssfRow.createCell(columnIndex);  
33 -  
34 - // 2、设定样式  
35 - XSSFCellStyle xssfCellStyle = xssfWorkbook.createCellStyle();  
36 -  
37 - // 设定值及数据格式  
38 - DataFormat dataFormat = xssfWorkbook.createDataFormat();  
39 - if (valueType == XSSFCell.CELL_TYPE_STRING) {  
40 - xssfCellStyle.setDataFormat(dataFormat.getFormat("@"));  
41 - xssfCell.setCellValue(creationHelper.createRichTextString(String.valueOf(value)));  
42 - } else if (valueType == XSSFCell.CELL_TYPE_NUMERIC) {  
43 - if (value instanceof Date) { // 日期  
44 - xssfCellStyle.setDataFormat(dataFormat.getFormat("yyyy-mm-dd"));  
45 - xssfCell.setCellValue((Date) value);  
46 - } else if (value instanceof Double) {  
47 - xssfCellStyle.setDataFormat(dataFormat.getFormat("0.00"));  
48 - xssfCell.setCellValue((Double) value);  
49 - } else if (value instanceof Integer) {  
50 - xssfCellStyle.setDataFormat(dataFormat.getFormat("0"));  
51 - xssfCell.setCellValue(Double.valueOf(value.toString()));  
52 - } else {  
53 - throw new RuntimeException("Excel2007 只支持 String Date Double Integer 单元格类型");  
54 - }  
55 - } else if (valueType == XSSFCell.CELL_TYPE_BLANK) {  
56 - xssfCell.setCellType(Cell.CELL_TYPE_BLANK);  
57 - } else {  
58 - throw new RuntimeException("暂时不支持字符串、日期、数字以外的类型");  
59 - }  
60 -  
61 - // 对齐方式  
62 - xssfCellStyle.setAlignment(horizontalAlignment);  
63 - xssfCellStyle.setVerticalAlignment(verticalAlignment);  
64 -  
65 - // 边框样式  
66 - xssfCellStyle.setBorderTop(borderStyle);  
67 - xssfCellStyle.setTopBorderColor(new XSSFColor(borderColor));  
68 - xssfCellStyle.setBorderBottom(borderStyle);  
69 - xssfCellStyle.setBottomBorderColor(new XSSFColor(borderColor));  
70 - xssfCellStyle.setBorderLeft(borderStyle);  
71 - xssfCellStyle.setLeftBorderColor(new XSSFColor(borderColor));  
72 - xssfCellStyle.setBorderRight(borderStyle);  
73 - xssfCellStyle.setRightBorderColor(new XSSFColor(borderColor));  
74 -  
75 - // 字体颜色  
76 - XSSFFont font = xssfWorkbook.createFont();  
77 - font.setColor(new XSSFColor(fontColor));  
78 - font.setFontHeightInPoints(fontSize);  
79 - font.setFontName(fontName);  
80 - xssfCellStyle.setFont(font);  
81 -  
82 -  
83 - // 单元背景色  
84 - xssfCellStyle.setFillForegroundColor(new XSSFColor(backgroudColor));  
85 - xssfCellStyle.setFillPattern(fillPatternType);  
86 -  
87 - // TODO  
88 -  
89 - xssfCell.setCellStyle(xssfCellStyle);  
90 - return xssfCell;  
91 - }  
92 -  
93 - @Override  
94 - public Cell createStringCell(  
95 - Workbook workbook, Row row, short columnIndex,  
96 - String value) {  
97 - XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;  
98 - XSSFRow xssfRow = (XSSFRow) row;  
99 -  
100 - XSSFCell xssfCell = (XSSFCell) createCell(  
101 - xssfWorkbook, xssfRow, columnIndex,  
102 - value, XSSFCell.CELL_TYPE_STRING,  
103 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
104 - BorderStyle.MEDIUM, new java.awt.Color(0xdedede),  
105 - (short) 13, new java.awt.Color(0x2765A7), "宋体",  
106 - new Color(0xffffff), FillPatternType.SOLID_FOREGROUND  
107 - );  
108 - DataFormat dataFormat = xssfWorkbook.createDataFormat();  
109 - xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("@"));  
110 - return xssfCell;  
111 - }  
112 -  
113 - @Override  
114 - public Cell createStringCell(  
115 - Workbook workbook, Row row, short columnIndex,  
116 - String value,  
117 - Color backgroudColor) {  
118 - XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;  
119 - XSSFRow xssfRow = (XSSFRow) row;  
120 -  
121 - XSSFCell xssfCell = (XSSFCell) createCell(  
122 - xssfWorkbook, xssfRow, columnIndex,  
123 - value, XSSFCell.CELL_TYPE_STRING,  
124 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
125 - BorderStyle.MEDIUM, new java.awt.Color(0xdedede),  
126 - (short) 13, new java.awt.Color(0x2765A7), "宋体",  
127 - backgroudColor, FillPatternType.SOLID_FOREGROUND  
128 - );  
129 - DataFormat dataFormat = xssfWorkbook.createDataFormat();  
130 - xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("@"));  
131 - return xssfCell;  
132 - }  
133 -  
134 - @Override  
135 - public Cell createIntegerCell(  
136 - Workbook workbook, Row row, short columnIndex,  
137 - Integer value) {  
138 - XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;  
139 - XSSFRow xssfRow = (XSSFRow) row;  
140 -  
141 - XSSFCell xssfCell = (XSSFCell) createCell(  
142 - xssfWorkbook, xssfRow, columnIndex,  
143 - value, XSSFCell.CELL_TYPE_NUMERIC,  
144 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
145 - BorderStyle.MEDIUM, new Color(0xdedede),  
146 - (short) 13, new Color(0x2765A7), "宋体",  
147 - new Color(0xffffff), FillPatternType.SOLID_FOREGROUND  
148 - );  
149 -  
150 - DataFormat dataFormat = xssfWorkbook.createDataFormat();  
151 - xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0"));  
152 - return xssfCell;  
153 - }  
154 -  
155 - @Override  
156 - public Cell createIntegerCell(  
157 - Workbook workbook, Row row, short columnIndex,  
158 - Integer value,  
159 - Color backgroudColor) {  
160 - XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;  
161 - XSSFRow xssfRow = (XSSFRow) row;  
162 -  
163 - XSSFCell xssfCell = (XSSFCell) createCell(  
164 - xssfWorkbook, xssfRow, columnIndex,  
165 - value, XSSFCell.CELL_TYPE_NUMERIC,  
166 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
167 - BorderStyle.MEDIUM, new Color(0xdedede),  
168 - (short) 13, new Color(0x2765A7), "宋体",  
169 - backgroudColor, FillPatternType.SOLID_FOREGROUND  
170 - );  
171 -  
172 - DataFormat dataFormat = xssfWorkbook.createDataFormat();  
173 - xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0"));  
174 - return xssfCell;  
175 - }  
176 -  
177 - @Override  
178 - public Cell createDoubleCell(  
179 - Workbook workbook, Row row, short columnIndex,  
180 - Double value) {  
181 - XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;  
182 - XSSFRow xssfRow = (XSSFRow) row;  
183 -  
184 - XSSFCell xssfCell = (XSSFCell) createCell(  
185 - xssfWorkbook, xssfRow, columnIndex,  
186 - value, XSSFCell.CELL_TYPE_NUMERIC,  
187 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
188 - BorderStyle.MEDIUM, new Color(0xdedede),  
189 - (short) 13, new Color(0x2765A7), "宋体",  
190 - new Color(0xffffff), FillPatternType.SOLID_FOREGROUND  
191 - );  
192 -  
193 - DataFormat dataFormat = xssfWorkbook.createDataFormat();  
194 - xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0.00"));  
195 - return xssfCell;  
196 - }  
197 -  
198 - @Override  
199 - public Cell createDoubleCell(  
200 - Workbook workbook, Row row, short columnIndex,  
201 - Double value,  
202 - Color backgroudColor) {  
203 - XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;  
204 - XSSFRow xssfRow = (XSSFRow) row;  
205 -  
206 - XSSFCell xssfCell = (XSSFCell) createCell(  
207 - xssfWorkbook, xssfRow, columnIndex,  
208 - value, XSSFCell.CELL_TYPE_NUMERIC,  
209 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
210 - BorderStyle.MEDIUM, new Color(0xdedede),  
211 - (short) 13, new Color(0x2765A7), "宋体",  
212 - backgroudColor, FillPatternType.SOLID_FOREGROUND  
213 - );  
214 -  
215 - DataFormat dataFormat = xssfWorkbook.createDataFormat();  
216 - xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0.00"));  
217 - return xssfCell;  
218 - }  
219 -  
220 - @Override  
221 - public Cell createBlankCell(  
222 - Workbook workbook, Row row, short columnIndex) {  
223 - return createCell(  
224 - workbook, row, columnIndex,  
225 - null, XSSFCell.CELL_TYPE_BLANK,  
226 - HorizontalAlignment.CENTER, VerticalAlignment.CENTER,  
227 - BorderStyle.MEDIUM, new Color(0xdedede),  
228 - (short) 13, new Color(0x2765A7), "宋体",  
229 - new Color(0xffffff), FillPatternType.SOLID_FOREGROUND  
230 - );  
231 - }  
232 -  
233 - @Override  
234 - public Cell setCellDataFormat(Workbook workbook, Cell cell, String fmt) {  
235 - XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;  
236 - DataFormat dataFormat = xssfWorkbook.createDataFormat();  
237 - cell.getCellStyle().setDataFormat(dataFormat.getFormat(fmt));  
238 - return cell;  
239 - }  
240 -  
241 - @Override  
242 - public Cell setCellBackground(Cell cell, Color color) {  
243 - XSSFCell xssfCell = (XSSFCell) cell;  
244 - xssfCell.getCellStyle().setFillForegroundColor(new XSSFColor(color));  
245 - return cell;  
246 - }  
247 -  
248 - @Override  
249 - public Workbook createWorkBook() {  
250 - return new XSSFWorkbook();  
251 - }  
252 -  
253 - @Override  
254 - public Sheet createWorkBookSheet(Workbook workbook, String sheetName) {  
255 - return workbook.createSheet(WorkbookUtil.createSafeSheetName(sheetName));  
256 - }  
257 -  
258 - @Override  
259 - public Row createSheetRow(Sheet sheet, int rowIndex) {  
260 - XSSFSheet xssfSheet = (XSSFSheet) sheet;  
261 - return xssfSheet.createRow(rowIndex);  
262 - }  
263 -  
264 - @Override  
265 - public void writeExcel(File excelFile, Workbook workbook) {  
266 - try {  
267 - XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;  
268 - FileOutputStream fileOutputStream = new FileOutputStream(excelFile);  
269 - xssfWorkbook.write(fileOutputStream);  
270 - } catch (Exception exp) {  
271 - throw new RuntimeException(exp);  
272 - }  
273 -  
274 - }  
275 -} 1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import org.apache.poi.ss.usermodel.*;
  4 +import org.apache.poi.ss.util.WorkbookUtil;
  5 +import org.apache.poi.xssf.usermodel.*;
  6 +
  7 +import java.awt.Color;
  8 +import java.io.File;
  9 +import java.io.FileOutputStream;
  10 +import java.util.Date;
  11 +
  12 +/**
  13 + * Excel2007表格Poi操作类。
  14 + * TODO:以后测style需要重用
  15 + */
  16 +public class Excel2007PoiOperator implements ExcelPoiOperator {
  17 + @Override
  18 + public Cell createCell(
  19 + Workbook workbook, Row row, short columnIndex,
  20 + Object value, int valueType,
  21 + HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment,
  22 + BorderStyle borderStyle, java.awt.Color borderColor,
  23 + short fontSize, java.awt.Color fontColor, String fontName,
  24 + java.awt.Color backgroudColor, FillPatternType fillPatternType) {
  25 +
  26 + XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;
  27 + XSSFRow xssfRow = (XSSFRow) row;
  28 +
  29 + CreationHelper creationHelper = xssfWorkbook.getCreationHelper();
  30 +
  31 + // 1、创建单元格对象
  32 + XSSFCell xssfCell = xssfRow.createCell(columnIndex);
  33 +
  34 + // 2、设定样式
  35 + XSSFCellStyle xssfCellStyle = xssfWorkbook.createCellStyle();
  36 +
  37 + // 设定值及数据格式
  38 + DataFormat dataFormat = xssfWorkbook.createDataFormat();
  39 + if (valueType == XSSFCell.CELL_TYPE_STRING) {
  40 + xssfCellStyle.setDataFormat(dataFormat.getFormat("@"));
  41 + xssfCell.setCellValue(creationHelper.createRichTextString(String.valueOf(value)));
  42 + } else if (valueType == XSSFCell.CELL_TYPE_NUMERIC) {
  43 + if (value instanceof Date) { // 日期
  44 + xssfCellStyle.setDataFormat(dataFormat.getFormat("yyyy-mm-dd"));
  45 + xssfCell.setCellValue((Date) value);
  46 + } else if (value instanceof Double) {
  47 + xssfCellStyle.setDataFormat(dataFormat.getFormat("0.00"));
  48 + xssfCell.setCellValue((Double) value);
  49 + } else if (value instanceof Integer) {
  50 + xssfCellStyle.setDataFormat(dataFormat.getFormat("0"));
  51 + xssfCell.setCellValue(Double.valueOf(value.toString()));
  52 + } else {
  53 + throw new RuntimeException("Excel2007 只支持 String Date Double Integer 单元格类型");
  54 + }
  55 + } else if (valueType == XSSFCell.CELL_TYPE_BLANK) {
  56 + xssfCell.setCellType(Cell.CELL_TYPE_BLANK);
  57 + } else {
  58 + throw new RuntimeException("暂时不支持字符串、日期、数字以外的类型");
  59 + }
  60 +
  61 + // 对齐方式
  62 + xssfCellStyle.setAlignment(horizontalAlignment);
  63 + xssfCellStyle.setVerticalAlignment(verticalAlignment);
  64 +
  65 + // 边框样式
  66 + xssfCellStyle.setBorderTop(borderStyle);
  67 + xssfCellStyle.setTopBorderColor(new XSSFColor(borderColor));
  68 + xssfCellStyle.setBorderBottom(borderStyle);
  69 + xssfCellStyle.setBottomBorderColor(new XSSFColor(borderColor));
  70 + xssfCellStyle.setBorderLeft(borderStyle);
  71 + xssfCellStyle.setLeftBorderColor(new XSSFColor(borderColor));
  72 + xssfCellStyle.setBorderRight(borderStyle);
  73 + xssfCellStyle.setRightBorderColor(new XSSFColor(borderColor));
  74 +
  75 + // 字体颜色
  76 + XSSFFont font = xssfWorkbook.createFont();
  77 + font.setColor(new XSSFColor(fontColor));
  78 + font.setFontHeightInPoints(fontSize);
  79 + font.setFontName(fontName);
  80 + xssfCellStyle.setFont(font);
  81 +
  82 +
  83 + // 单元背景色
  84 + xssfCellStyle.setFillForegroundColor(new XSSFColor(backgroudColor));
  85 + xssfCellStyle.setFillPattern(fillPatternType);
  86 +
  87 + // TODO
  88 +
  89 + xssfCell.setCellStyle(xssfCellStyle);
  90 + return xssfCell;
  91 + }
  92 +
  93 + @Override
  94 + public Cell createStringCell(
  95 + Workbook workbook, Row row, short columnIndex,
  96 + String value) {
  97 + XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;
  98 + XSSFRow xssfRow = (XSSFRow) row;
  99 +
  100 + XSSFCell xssfCell = (XSSFCell) createCell(
  101 + xssfWorkbook, xssfRow, columnIndex,
  102 + value, XSSFCell.CELL_TYPE_STRING,
  103 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  104 + BorderStyle.MEDIUM, new java.awt.Color(0xdedede),
  105 + (short) 13, new java.awt.Color(0x2765A7), "宋体",
  106 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  107 + );
  108 + DataFormat dataFormat = xssfWorkbook.createDataFormat();
  109 + xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("@"));
  110 + return xssfCell;
  111 + }
  112 +
  113 + @Override
  114 + public Cell createStringCell(
  115 + Workbook workbook, Row row, short columnIndex,
  116 + String value,
  117 + Color backgroudColor) {
  118 + XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;
  119 + XSSFRow xssfRow = (XSSFRow) row;
  120 +
  121 + XSSFCell xssfCell = (XSSFCell) createCell(
  122 + xssfWorkbook, xssfRow, columnIndex,
  123 + value, XSSFCell.CELL_TYPE_STRING,
  124 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  125 + BorderStyle.MEDIUM, new java.awt.Color(0xdedede),
  126 + (short) 13, new java.awt.Color(0x2765A7), "宋体",
  127 + backgroudColor, FillPatternType.SOLID_FOREGROUND
  128 + );
  129 + DataFormat dataFormat = xssfWorkbook.createDataFormat();
  130 + xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("@"));
  131 + return xssfCell;
  132 + }
  133 +
  134 + @Override
  135 + public Cell createIntegerCell(
  136 + Workbook workbook, Row row, short columnIndex,
  137 + Integer value) {
  138 + XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;
  139 + XSSFRow xssfRow = (XSSFRow) row;
  140 +
  141 + XSSFCell xssfCell = (XSSFCell) createCell(
  142 + xssfWorkbook, xssfRow, columnIndex,
  143 + value, XSSFCell.CELL_TYPE_NUMERIC,
  144 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  145 + BorderStyle.MEDIUM, new Color(0xdedede),
  146 + (short) 13, new Color(0x2765A7), "宋体",
  147 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  148 + );
  149 +
  150 + DataFormat dataFormat = xssfWorkbook.createDataFormat();
  151 + xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0"));
  152 + return xssfCell;
  153 + }
  154 +
  155 + @Override
  156 + public Cell createIntegerCell(
  157 + Workbook workbook, Row row, short columnIndex,
  158 + Integer value,
  159 + Color backgroudColor) {
  160 + XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;
  161 + XSSFRow xssfRow = (XSSFRow) row;
  162 +
  163 + XSSFCell xssfCell = (XSSFCell) createCell(
  164 + xssfWorkbook, xssfRow, columnIndex,
  165 + value, XSSFCell.CELL_TYPE_NUMERIC,
  166 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  167 + BorderStyle.MEDIUM, new Color(0xdedede),
  168 + (short) 13, new Color(0x2765A7), "宋体",
  169 + backgroudColor, FillPatternType.SOLID_FOREGROUND
  170 + );
  171 +
  172 + DataFormat dataFormat = xssfWorkbook.createDataFormat();
  173 + xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0"));
  174 + return xssfCell;
  175 + }
  176 +
  177 + @Override
  178 + public Cell createDoubleCell(
  179 + Workbook workbook, Row row, short columnIndex,
  180 + Double value) {
  181 + XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;
  182 + XSSFRow xssfRow = (XSSFRow) row;
  183 +
  184 + XSSFCell xssfCell = (XSSFCell) createCell(
  185 + xssfWorkbook, xssfRow, columnIndex,
  186 + value, XSSFCell.CELL_TYPE_NUMERIC,
  187 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  188 + BorderStyle.MEDIUM, new Color(0xdedede),
  189 + (short) 13, new Color(0x2765A7), "宋体",
  190 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  191 + );
  192 +
  193 + DataFormat dataFormat = xssfWorkbook.createDataFormat();
  194 + xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0.00"));
  195 + return xssfCell;
  196 + }
  197 +
  198 + @Override
  199 + public Cell createDoubleCell(
  200 + Workbook workbook, Row row, short columnIndex,
  201 + Double value,
  202 + Color backgroudColor) {
  203 + XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;
  204 + XSSFRow xssfRow = (XSSFRow) row;
  205 +
  206 + XSSFCell xssfCell = (XSSFCell) createCell(
  207 + xssfWorkbook, xssfRow, columnIndex,
  208 + value, XSSFCell.CELL_TYPE_NUMERIC,
  209 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  210 + BorderStyle.MEDIUM, new Color(0xdedede),
  211 + (short) 13, new Color(0x2765A7), "宋体",
  212 + backgroudColor, FillPatternType.SOLID_FOREGROUND
  213 + );
  214 +
  215 + DataFormat dataFormat = xssfWorkbook.createDataFormat();
  216 + xssfCell.getCellStyle().setDataFormat(dataFormat.getFormat("0.00"));
  217 + return xssfCell;
  218 + }
  219 +
  220 + @Override
  221 + public Cell createBlankCell(
  222 + Workbook workbook, Row row, short columnIndex) {
  223 + return createCell(
  224 + workbook, row, columnIndex,
  225 + null, XSSFCell.CELL_TYPE_BLANK,
  226 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  227 + BorderStyle.MEDIUM, new Color(0xdedede),
  228 + (short) 13, new Color(0x2765A7), "宋体",
  229 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  230 + );
  231 + }
  232 +
  233 + @Override
  234 + public Cell setCellDataFormat(Workbook workbook, Cell cell, String fmt) {
  235 + XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;
  236 + DataFormat dataFormat = xssfWorkbook.createDataFormat();
  237 + cell.getCellStyle().setDataFormat(dataFormat.getFormat(fmt));
  238 + return cell;
  239 + }
  240 +
  241 + @Override
  242 + public Cell setCellBackground(Cell cell, Color color) {
  243 + XSSFCell xssfCell = (XSSFCell) cell;
  244 + xssfCell.getCellStyle().setFillForegroundColor(new XSSFColor(color));
  245 + return cell;
  246 + }
  247 +
  248 + @Override
  249 + public Workbook createWorkBook() {
  250 + return new XSSFWorkbook();
  251 + }
  252 +
  253 + @Override
  254 + public Sheet createWorkBookSheet(Workbook workbook, String sheetName) {
  255 + return workbook.createSheet(WorkbookUtil.createSafeSheetName(sheetName));
  256 + }
  257 +
  258 + @Override
  259 + public Row createSheetRow(Sheet sheet, int rowIndex) {
  260 + XSSFSheet xssfSheet = (XSSFSheet) sheet;
  261 + return xssfSheet.createRow(rowIndex);
  262 + }
  263 +
  264 + @Override
  265 + public void writeExcel(File excelFile, Workbook workbook) {
  266 + try {
  267 + XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;
  268 + FileOutputStream fileOutputStream = new FileOutputStream(excelFile);
  269 + xssfWorkbook.write(fileOutputStream);
  270 + } catch (Exception exp) {
  271 + throw new RuntimeException(exp);
  272 + }
  273 +
  274 + }
  275 +}
src/main/java/com/bsth/service/schedule/datatools/ExcelPoiOperator.java
1 -package com.bsth.service.schedule.datatools;  
2 -  
3 -import org.apache.poi.ss.usermodel.*;  
4 -  
5 -import java.awt.Color;  
6 -import java.io.File;  
7 -  
8 -/**  
9 - * Excel表格Poi操作接口。  
10 - */  
11 -public interface ExcelPoiOperator {  
12 -  
13 -  
14 - //---------------- 创建单元格 ---------------//  
15 -  
16 - Cell createCell(  
17 - Workbook workbook, Row row, short columnIndex,  
18 - Object value, int valueType,  
19 - HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment,  
20 - BorderStyle borderStyle, java.awt.Color borderColor,  
21 - short fontSize, java.awt.Color fontColor, String fontName,  
22 - java.awt.Color backgroudColor, FillPatternType fillPatternType  
23 - );  
24 -  
25 - Cell createStringCell(  
26 - Workbook workbook, Row row, short columnIndex,  
27 - String value  
28 - );  
29 -  
30 - Cell createStringCell(  
31 - Workbook workbook, Row row, short columnIndex,  
32 - String value,  
33 - java.awt.Color backgroudColor  
34 - );  
35 -  
36 - Cell createIntegerCell(  
37 - Workbook workbook, Row row, short columnIndex,  
38 - Integer value  
39 - );  
40 -  
41 - Cell createIntegerCell(  
42 - Workbook workbook, Row row, short columnIndex,  
43 - Integer value,  
44 - java.awt.Color backgroudColor  
45 - );  
46 -  
47 - Cell createDoubleCell(  
48 - Workbook workbook, Row row, short columnIndex,  
49 - Double value  
50 - );  
51 -  
52 - Cell createDoubleCell(  
53 - Workbook workbook, Row row, short columnIndex,  
54 - Double value,  
55 - java.awt.Color backgroudColor  
56 - );  
57 -  
58 - Cell createBlankCell(  
59 - Workbook workbook, Row row, short columnIndex  
60 - );  
61 -  
62 - //---------------- 创建单元格数据格式 ---------------//  
63 -  
64 - Cell setCellDataFormat(Workbook workbook, Cell cell, String fmt);  
65 -  
66 - Cell setCellBackground(Cell cell, Color color);  
67 -  
68 - //---------------- 创建workbook,sheet,row ---------------//  
69 - Workbook createWorkBook();  
70 - Sheet createWorkBookSheet(Workbook workbook, String sheetName);  
71 - Row createSheetRow(Sheet sheet, int rowIndex);  
72 -  
73 - //---------------- 生成文件 ---------------//  
74 - void writeExcel(File excelFile, Workbook workbook);  
75 -} 1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import org.apache.poi.ss.usermodel.*;
  4 +
  5 +import java.awt.Color;
  6 +import java.io.File;
  7 +
  8 +/**
  9 + * Excel表格Poi操作接口。
  10 + */
  11 +public interface ExcelPoiOperator {
  12 +
  13 +
  14 + //---------------- 创建单元格 ---------------//
  15 +
  16 + Cell createCell(
  17 + Workbook workbook, Row row, short columnIndex,
  18 + Object value, int valueType,
  19 + HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment,
  20 + BorderStyle borderStyle, java.awt.Color borderColor,
  21 + short fontSize, java.awt.Color fontColor, String fontName,
  22 + java.awt.Color backgroudColor, FillPatternType fillPatternType
  23 + );
  24 +
  25 + Cell createStringCell(
  26 + Workbook workbook, Row row, short columnIndex,
  27 + String value
  28 + );
  29 +
  30 + Cell createStringCell(
  31 + Workbook workbook, Row row, short columnIndex,
  32 + String value,
  33 + java.awt.Color backgroudColor
  34 + );
  35 +
  36 + Cell createIntegerCell(
  37 + Workbook workbook, Row row, short columnIndex,
  38 + Integer value
  39 + );
  40 +
  41 + Cell createIntegerCell(
  42 + Workbook workbook, Row row, short columnIndex,
  43 + Integer value,
  44 + java.awt.Color backgroudColor
  45 + );
  46 +
  47 + Cell createDoubleCell(
  48 + Workbook workbook, Row row, short columnIndex,
  49 + Double value
  50 + );
  51 +
  52 + Cell createDoubleCell(
  53 + Workbook workbook, Row row, short columnIndex,
  54 + Double value,
  55 + java.awt.Color backgroudColor
  56 + );
  57 +
  58 + Cell createBlankCell(
  59 + Workbook workbook, Row row, short columnIndex
  60 + );
  61 +
  62 + //---------------- 创建单元格数据格式 ---------------//
  63 +
  64 + Cell setCellDataFormat(Workbook workbook, Cell cell, String fmt);
  65 +
  66 + Cell setCellBackground(Cell cell, Color color);
  67 +
  68 + //---------------- 创建workbook,sheet,row ---------------//
  69 + Workbook createWorkBook();
  70 + Sheet createWorkBookSheet(Workbook workbook, String sheetName);
  71 + Row createSheetRow(Sheet sheet, int rowIndex);
  72 +
  73 + //---------------- 生成文件 ---------------//
  74 + void writeExcel(File excelFile, Workbook workbook);
  75 +}