Commit c34e29c0cd88eef3025766d866b4485aeedf1063

Authored by 王通
1 parent cd110d9c

1.冲突文件处理

src/main/java/com/bsth/filter/AccessLogFilter.java
1   -<<<<<<< HEAD
2 1 package com.bsth.filter;
3 2  
4 3 import com.alibaba.fastjson.JSON;
... ... @@ -99,105 +98,3 @@ public class AccessLogFilter extends BaseFilter {
99 98 return "[" + msg.toString() + "]";
100 99 }
101 100 }
102   -=======
103   -package com.bsth.filter;
104   -
105   -import com.alibaba.fastjson.JSON;
106   -import com.bsth.entity.sys.SysUser;
107   -import com.bsth.security.util.SecurityUtils;
108   -import com.bsth.util.IpUtils;
109   -import com.google.common.collect.Lists;
110   -import com.google.common.collect.Maps;
111   -import org.slf4j.Logger;
112   -import org.slf4j.LoggerFactory;
113   -import org.springframework.stereotype.Component;
114   -
115   -import javax.servlet.FilterChain;
116   -import javax.servlet.ServletException;
117   -import javax.servlet.http.HttpServletRequest;
118   -import javax.servlet.http.HttpServletResponse;
119   -import java.io.IOException;
120   -import java.util.Enumeration;
121   -import java.util.List;
122   -import java.util.Map;
123   -
124   -/**
125   - *
126   - * @ClassName: AccessLogFilter
127   - * @Description: TODO(记录访问日志)
128   - * @author PanZhao
129   - * @date 2016年3月17日 下午4:28:31
130   - *
131   - */
132   -@Component
133   -public class AccessLogFilter extends BaseFilter {
134   -
135   - Logger logger = LoggerFactory.getLogger(this.getClass());
136   -
137   - @Override
138   - public void doFilter(HttpServletRequest request,
139   - HttpServletResponse response, FilterChain chain)
140   - throws IOException, ServletException {
141   -
142   - SysUser user = null;
143   - if (request.getParameter("token") != null) {
144   - user = new SysUser();
145   - user.setUserName("admin");
146   - } else {
147   - user = SecurityUtils.getCurrentUser();
148   - }
149   - String username = user.getUserName();
150   - String name = user.getName();
151   - String jsessionId = request.getRequestedSessionId();
152   - String ip = IpUtils.getIpAddr(request);
153   - String userAgent = request.getHeader("User-Agent");
154   - String url = request.getRequestURI();
155   - String params = getParams(request);
156   - String headers = getHeaders(request);
157   - String method = request.getMethod();
158   -
159   - StringBuilder s = new StringBuilder();
160   - s.append(getBlock(username + " -" + name));
161   - s.append(getBlock(jsessionId));
162   - s.append(getBlock(ip));
163   - s.append(getBlock(userAgent));
164   - s.append(getBlock(url));
165   - s.append(getBlock(method));
166   - s.append(getBlock(params));
167   - s.append(getBlock(headers));
168   - s.append(getBlock(request.getHeader("Referer")));
169   -
170   - long now = System.currentTimeMillis();
171   - chain.doFilter(request, response);
172   - s.append("<cost time:").append(System.currentTimeMillis() - now).append(">");
173   - logger.info(s.toString());
174   - }
175   -
176   - private static String getParams(HttpServletRequest request) {
177   - Map<String, String[]> params = request.getParameterMap();
178   - return JSON.toJSONString(params);
179   - }
180   -
181   - private static String getHeaders(HttpServletRequest request) {
182   - Map<String, List<String>> headers = Maps.newHashMap();
183   - Enumeration<String> namesEnumeration = request.getHeaderNames();
184   - while (namesEnumeration.hasMoreElements()) {
185   - String name = namesEnumeration.nextElement();
186   - Enumeration<String> valueEnumeration = request.getHeaders(name);
187   - List<String> values = Lists.newArrayList();
188   - while (valueEnumeration.hasMoreElements()) {
189   - values.add(valueEnumeration.nextElement());
190   - }
191   - headers.put(name, values);
192   - }
193   - return JSON.toJSONString(headers);
194   - }
195   -
196   - public static String getBlock(Object msg) {
197   - if (msg == null) {
198   - msg = "";
199   - }
200   - return "[" + msg.toString() + "]";
201   - }
202   -}
203   ->>>>>>> 2021.05.11 历史版本 选择版本 查看历史版本修改当前版本和待更新版本
... ...
src/main/java/com/bsth/service/oil/impl/CwjyServiceImpl.java
1   -<<<<<<< HEAD
2   -package com.bsth.service.oil.impl;
3   -
4   -import java.io.File;
5   -import java.io.FileInputStream;
6   -import java.sql.ResultSet;
7   -import java.sql.SQLException;
8   -import java.text.DecimalFormat;
9   -import java.text.ParseException;
10   -import java.text.SimpleDateFormat;
11   -import java.util.ArrayList;
12   -import java.util.Arrays;
13   -import java.util.Date;
14   -import java.util.HashMap;
15   -import java.util.List;
16   -import java.util.Map;
17   -
18   -import javax.transaction.Transactional;
19   -
20   -import org.apache.commons.lang3.StringEscapeUtils;
21   -import org.apache.poi.hssf.usermodel.HSSFCell;
22   -import org.apache.poi.hssf.usermodel.HSSFRow;
23   -import org.apache.poi.hssf.usermodel.HSSFSheet;
24   -import org.apache.poi.hssf.usermodel.HSSFWorkbook;
25   -import org.apache.poi.poifs.filesystem.POIFSFileSystem;
26   -import org.apache.poi.ss.usermodel.Cell;
27   -import org.slf4j.Logger;
28   -import org.slf4j.LoggerFactory;
29   -import org.springframework.beans.factory.annotation.Autowired;
30   -import org.springframework.jdbc.core.JdbcTemplate;
31   -import org.springframework.jdbc.core.RowMapper;
32   -import org.springframework.stereotype.Service;
33   -
34   -import com.alibaba.fastjson.JSONArray;
35   -import com.alibaba.fastjson.JSONObject;
36   -import com.bsth.common.ResponseCode;
37   -import com.bsth.data.BasicData;
38   -import com.bsth.entity.oil.Cwjy;
39   -import com.bsth.entity.oil.Cyl;
40   -import com.bsth.entity.oil.Ylb;
41   -import com.bsth.entity.oil.Ylxxb;
42   -import com.bsth.repository.oil.CwjyRepository;
43   -import com.bsth.repository.oil.YlxxbRepository;
44   -import com.bsth.service.impl.BaseServiceImpl;
45   -import com.bsth.service.oil.CwjyService;
46   -import com.bsth.util.Arith;
47   -import com.bsth.util.PageHelper;
48   -import com.bsth.util.PageObject;
49   -
50   -@Service
51   -public class CwjyServiceImpl extends BaseServiceImpl<Cwjy,Integer> implements CwjyService
52   -{
53   - @Autowired
54   - CwjyRepository repository;
55   - @Autowired
56   - YlxxbRepository ylxxbRepository;
57   -
58   - @Autowired
59   - JdbcTemplate jdbcTemplate;
60   - Logger logger = LoggerFactory.getLogger(this.getClass());
61   - /*@SuppressWarnings("unchecked")
62   - public PageObject<Ylxxb> Pagequery(Map<String, Object> map) {
63   - int page=Integer.parseInt(map.get("page").toString());
64   - SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
65   -
66   - String rq=map.get("rq").toString();
67   - String nbbm="";
68   - if(map.get("nbbh")!=null){
69   - nbbm=map.get("nbbh").toString();
70   - }
71   -
72   - Object gsdmIn=map.get("gsdm_in");
73   - Object fgsdmIn=map.get("fgsdm_in");
74   - String addSql="";
75   - String gsdmLike="";
76   - String fgsdmLike="";
77   -
78   - //选择了公司
79   - if(gsdmIn==null){
80   - gsdmLike=map.get("gsdm_like").toString();
81   - addSql += " and a.gsdm = '"+gsdmLike+ "' ";
82   -
83   - //选择了分公司
84   - if(fgsdmIn==null){
85   - fgsdmLike=map.get("fgsdm_like").toString();;
86   - addSql += " and a.fgsdm = '"+fgsdmLike+ "' ";
87   - }else{
88   - String fgsdmIns[]= fgsdmIn.toString().split(",");
89   - addSql +=" and a.fgsdm in (";
90   - for(int i=0;i<fgsdmIns.length;i++){
91   - addSql +="'"+fgsdmIns[i]+"'";
92   - if(i<fgsdmIns.length-1){
93   - addSql +=",";
94   - }
95   - }
96   - addSql +=")";
97   - }
98   - }else{
99   - //没有选择公司 (分公司也没有选择)
100   - String gsdmIns[]=gsdmIn.toString().split(",");
101   - addSql += " and a.gsdm in (";
102   - for(int i=0;i<gsdmIns.length;i++){
103   - addSql +="'" +gsdmIns[i]+"'";
104   - if(i<gsdmIns.length-1){
105   - addSql+=",";
106   - }
107   - }
108   - addSql +=")";
109   - String fgsdmIns[]= fgsdmIn.toString().split(",");
110   - addSql +=" and a.fgsdm in (";
111   - for(int i=0;i<fgsdmIns.length;i++){
112   - addSql +="'"+fgsdmIns[i]+"'";
113   - if(i<fgsdmIns.length-1){
114   - addSql +=",";
115   - }
116   - }
117   - addSql +=")";
118   -
119   -
120   - }
121   - String countSql="SELECT ifnull(count(*),0) as countTs FROM bsth_c_cwjy a "+
122   - " left join ( select * from bsth_c_ylxxb b where to_days(b.yyrq)=to_days('"+rq+"') and jylx=1) b " +
123   - " on a.nbbm=b.nbbm left join (select nbbm,group_concat(jsy) as jsy "
124   - + "from bsth_c_ylb where to_days(rq)= to_days('"+rq+"' ) group by nbbm "+
125   - " ) c on a.nbbm=c.nbbm where a.nbbm like '%"+nbbm+"%' " +addSql ;
126   - int listsize=jdbcTemplate.queryForObject(countSql, Integer.class);
127   - // TODO Auto-generated method stub
128   - String sql="SELECT a.gsdm as gsdm,a.fgsdm as fgsdm,a.nbbm as nbbm,b.jsy as jsy,b.jzl as jzl ,b.stationid as stationid,"
129   - + "b.nylx as nylx,b.yj as yj,b.bz as bz,c.jsy as ldgh FROM bsth_c_cwjy a "+
130   - " left join ( select * from bsth_c_ylxxb b where to_days(b.yyrq)=to_days('"+rq+"') and jylx=1) b " +
131   - " on a.nbbm=b.nbbm left join (select nbbm,group_concat(jsy) as jsy "
132   - + "from bsth_c_ylb where to_days(rq)= to_days('"+rq+"' ) group by nbbm "+
133   - " ) c on a.nbbm=c.nbbm where a.nbbm like '%"+nbbm+"%' " +addSql+ " limit "+page*10+","+10;
134   -
135   -
136   - List<Ylxxb> yList= jdbcTemplate.query(sql,
137   - new RowMapper<Ylxxb>(){
138   - @Override
139   - public Ylxxb mapRow(ResultSet rs, int rowNum) throws SQLException {
140   - Ylxxb t=new Ylxxb();
141   - t.setGsdm(rs.getString("gsdm"));
142   - t.setFgsdm(rs.getString("fgsdm"));
143   - t.setNbbm(rs.getString("nbbm"));
144   - t.setJsy(rs.getString("jsy"));
145   - t.setJzl(rs.getDouble("jzl"));
146   - t.setStationid(rs.getString("stationid"));
147   - t.setNylx(rs.getInt("nylx"));
148   - t.setYj(rs.getDouble("yj"));
149   - t.setBz(rs.getString("bz"));
150   - t.setLdgh(rs.getString("ldgh"));
151   - return t;
152   - }
153   - });
154   - List<Object[]> list=repository.obtainCwjycl(rq,nbbm);
155   - for (int i = 0; i < list.size(); i++) {
156   - Ylxxb y=new Ylxxb();
157   - y.setGsdm(list.get(i)[0]==null?"":list.get(i)[0].toString());
158   - y.setNbbm(list.get(i)[1]==null?"":list.get(i)[1].toString());
159   - y.setJsy(list.get(i)[2]==null?"":list.get(i)[2].toString());
160   - y.setJzl(list.get(i)[3]==null?0.0:Double.parseDouble(list.get(i)[3].toString()));
161   - y.setStationid(list.get(i)[4]==null?"":list.get(i)[4].toString());
162   - y.setNylx(list.get(i)[5]==null?0:Integer.parseInt(list.get(i)[5].toString()));
163   - y.setYj(list.get(i)[6]==null?0.0:Double.parseDouble(list.get(i)[6].toString()));
164   - y.setBz(list.get(i)[7]==null?"":list.get(i)[7].toString());
165   - y.setLdgh(list.get(i)[8]==null?"":list.get(i)[8].toString());
166   - try {
167   - y.setYyrq(sdf.parse(rq));
168   - } catch (ParseException e) {
169   - // TODO Auto-generated catch block
170   - e.printStackTrace();
171   - }
172   - yList.add(y);
173   - }
174   - PageHelper pageHelper = new PageHelper(listsize, map);
175   - pageHelper.getMap();
176   - PageObject<Ylxxb> pageObject=pageHelper.getPageObject();
177   - pageObject.setDataList(yList);
178   - return pageObject;
179   - }*/
180   -
181   - @Override
182   - public Ylxxb bynbbm(Map<String, Object> map) {
183   - // TODO Auto-generated method stub
184   - // TODO Auto-generated method stub
185   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
186   - String rq = map.get("rq").toString();
187   - String nbbm = "";
188   - if (map.get("nbbm") != null) {
189   - nbbm = map.get("nbbm").toString();
190   - }
191   - List<Object[]> list = repository.obtainCwjycl(rq, nbbm);
192   - Ylxxb y = new Ylxxb();
193   - if (list.size() > 0) {
194   - y.setGsdm(list.get(0)[0] == null ? "" : list.get(0)[0].toString());
195   - y.setNbbm(list.get(0)[1] == null ? "" : list.get(0)[1].toString());
196   - y.setJsy(list.get(0)[2] == null ? "" : list.get(0)[2].toString());
197   - y.setJzl(list.get(0)[3] == null ? 0.0 : Double.parseDouble(list.get(0)[3].toString()));
198   - y.setStationid(list.get(0)[4] == null ? "" : list.get(0)[4].toString());
199   - y.setNylx(list.get(0)[5] == null ? 0 : Integer.parseInt(list.get(0)[5].toString()));
200   - y.setYj(list.get(0)[6] == null ? 0.0 : Double.parseDouble(list.get(0)[6].toString()));
201   - y.setBz(list.get(0)[7] == null ? "" : list.get(0)[7].toString());
202   - y.setLdgh(list.get(0)[8] == null ? "" : list.get(0)[8].toString());
203   - try {
204   - y.setYyrq(sdf.parse(rq));
205   - } catch (ParseException e) {
206   - // TODO Auto-generated catch block
207   - e.printStackTrace();
208   - }
209   - }
210   - return y;
211   - }
212   -
213   - @Transactional
214   - @Override
215   - public Map<String, Object> savejzl(Map<String, Object> maps) throws Exception {
216   - // TODO Auto-generated method stub
217   - Map<String, Object> map=new HashMap<String,Object>();
218   - try {
219   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
220   -// String rq = sdf.format(t.getYyrq());
221   -// String nbbm=t.getNbbm();
222   -// List<Ylxxb> yList=ylxxbRepository.obtainYlxx2(rq,nbbm);
223   -// if(yList.size()>0){
224   -// t.setId(yList.get(0).getId());
225   -// ylxxbRepository.save(t);
226   -// }else{
227   -// ylxxbRepository.save(t);
228   -// }
229   - String gsbm=maps.get("gsbm").toString();
230   - String fgsbm=maps.get("fgsbm").toString();
231   - String rq=maps.get("rq").toString();
232   - Date date=sdf.parse(rq);
233   - String json =StringEscapeUtils.unescapeHtml4(maps.get("ylbList").toString());
234   - JSONArray jsonArray=JSONArray.parseArray(json);
235   - JSONObject jsonObject;
236   - // 获取车辆存油信息
237   - for (int i = 0; i < jsonArray.size(); i++) {
238   - jsonObject=jsonArray.getJSONObject(i);
239   - Integer id =jsonObject.getInteger("id");
240   - String jsy=jsonObject.getString("jsy");
241   - double jzl=jsonObject.getDoubleValue("jzl");
242   - String stationid=jsonObject.getString("stationid");
243   - String nbbm=jsonObject.getString("nbbm");
244   - int nylx=jsonObject.getIntValue("nylx");
245   - String jyggh=jsonObject.getString("jyggh");
246   - String bz=jsonObject.getString("bz");
247   - Ylxxb y;
248   - if(id>0){
249   - y=ylxxbRepository.findById(id).get();
250   - y.setJsy(jsy);
251   - y.setJzl(jzl);
252   - y.setStationid(stationid);
253   - y.setJyggh(jyggh);
254   - y.setBz(bz);
255   - y.setCreatetime(new Date());
256   - y.setYyrq(date);
257   - ylxxbRepository.save(y);
258   - }else{
259   - if(jsy!="" && jzl>0){
260   - y=new Ylxxb();
261   - y.setGsdm(gsbm);
262   - y.setJsy(jsy);
263   - y.setNbbm(nbbm);
264   - y.setJzl(jzl);
265   - y.setStationid(stationid);
266   - y.setJyggh(jyggh);
267   - y.setBz(bz);
268   - y.setCreatetime(new Date());
269   - y.setYyrq(date);
270   - y.setJylx(1);
271   - y.setNylx(0);
272   - ylxxbRepository.save(y);
273   - }
274   - }
275   - }
276   - map.put("status", ResponseCode.SUCCESS);
277   -
278   - } catch (Exception e) {
279   - map.put("status", ResponseCode.ERROR);
280   - logger.error("save erro.", e);
281   - throw e;
282   - // TODO: handle exception
283   - }
284   - return map;
285   - }
286   -
287   -
288   -
289   - @Override
290   - public List<Ylxxb> Pagequery(Map<String, Object> map) {
291   - // TODO Auto-generated method stub
292   - String rq=map.get("rq").toString();
293   - String nbbm=map.get("nbbh").toString();
294   - String gsdm=map.get("gsdm_like").toString();
295   -
296   - String fgsdm=map.get("fgsdm_like").toString();
297   - String line =map.get("line_like").toString().trim();
298   - /*String sql="SELECT a.gsdm as gsdm,a.fgsdm as fgsdm,a.nbbm as nbbm,"
299   - + "b.jyggh as jyggh,b.jzl as jzl ,b.stationid as stationid,b.jsy as jsy,"
300   - + "b.nylx as nylx,b.yj as yj,b.bz as bz,b.id as id ,c.jsy as ldgh FROM bsth_c_cwjy a "+
301   - " left join ("
302   - + " select * from bsth_c_ylxxb b "
303   - + "where to_days(b.yyrq)=to_days('"+rq+"') and jylx=1 "
304   - + " and gsdm = '"+gsdm+"') b " +
305   - " on a.nbbm=b.nbbm "
306   - + "left join (select nbbm,group_concat(jsy) as jsy "
307   - + "from bsth_c_ylb where to_days(rq)= to_days('"+rq+"' ) "
308   - + " and ssgsdm='"+gsdm+"' and fgsdm ='"+fgsdm+"' group by nbbm "+
309   - " ) c on a.nbbm=c.nbbm "
310   - + "where a.nbbm like '%"+nbbm+"%' and a.gsdm='"+gsdm+"' and a.fgsdm ='"+fgsdm+"'"
311   - + " order by a.nbbm";*/
312   - String sql= " select * from bsth_c_ylxxb b "
313   - + "where to_days(b.yyrq)=to_days('"+rq+"') and jylx=1 "
314   - + " and gsdm = '"+gsdm+"'";
315   -
316   - List<Ylxxb> yList= jdbcTemplate.query(sql,
317   - new RowMapper<Ylxxb>(){
318   - @Override
319   - public Ylxxb mapRow(ResultSet rs, int rowNum) throws SQLException {
320   - Ylxxb t=new Ylxxb();
321   - t.setId(rs.getInt("id"));
322   - t.setGsdm(rs.getString("gsdm"));
323   - t.setFgsdm(rs.getString("fgsdm"));
324   - t.setNbbm(rs.getString("nbbm"));
325   - t.setJyggh(rs.getString("jyggh"));
326   - t.setJsy(rs.getString("jsy"));
327   - t.setJzl(rs.getDouble("jzl"));
328   - t.setStationid(rs.getString("stationid"));
329   - t.setNylx(rs.getInt("nylx"));
330   - t.setYj(rs.getDouble("yj"));
331   - t.setBz(rs.getString("bz"));
332   - return t;
333   - }
334   - });
335   - List<Cwjy> cwList=null;
336   - if(line.equals("")){
337   - cwList = repository.selectAll(nbbm, gsdm, fgsdm);
338   - }else{
339   - cwList = repository.selectAll_s(nbbm, gsdm, fgsdm, line);
340   - }
341   -
342   - String sql_ylb="SELECT nbbm,group_concat(jsy) AS jsy FROM bsth_c_ylb WHERE "
343   - + " rq = '"+rq+"' AND ssgsdm = '"+gsdm+"' AND "
344   - + " fgsdm = '"+fgsdm+"' GROUP BY nbbm";
345   -
346   - List<Map<String, String>> ylbList= jdbcTemplate.query(sql_ylb,
347   - new RowMapper<Map<String, String>>(){
348   - @Override
349   - public Map<String, String> mapRow(ResultSet rs, int rowNum) throws SQLException {
350   - Map<String, String> maps =new HashMap<String, String>();
351   - maps.put("nbbm", rs.getString("nbbm"));
352   - maps.put("ldgh", rs.getString("jsy"));
353   - return maps;
354   - }
355   - });
356   -
357   - List<Ylxxb> ylxxbList= new ArrayList<Ylxxb>();
358   - Ylxxb y=null;
359   - for (int i = 0; i < cwList.size(); i++) {
360   - Cwjy cwjy=cwList.get(i);
361   - y=new Ylxxb();
362   - y.setNylx(0);
363   - y.setId(0);
364   - y.setJzl(0.0);
365   - y.setGsdm(cwjy.getGsdm());
366   - y.setFgsdm(cwjy.getFgsdm());
367   - y.setNbbm(cwjy.getNbbm());
368   - y.setLinename(cwjy.getLinename());
369   - for (int j = 0; j < yList.size(); j++) {
370   - Ylxxb ylxxb=yList.get(j);
371   - if(y.getNbbm().equals(ylxxb.getNbbm())){
372   - y.setId(ylxxb.getId());
373   - y.setJyggh(ylxxb.getJyggh());
374   - y.setJsy(ylxxb.getJsy());
375   - y.setJzl(ylxxb.getJzl());
376   - y.setStationid(ylxxb.getStationid());
377   - y.setNylx(ylxxb.getNylx());
378   - y.setYj(ylxxb.getYj());
379   - y.setBz(ylxxb.getBz());
380   - break;
381   - }
382   - }
383   - for (int j = 0; j < ylbList.size(); j++) {
384   - Map<String, String> m=ylbList.get(j);
385   - if(m.get("nbbm").toString().equals(cwjy.getNbbm())){
386   - y.setLdgh(m.get("ldgh").toString());
387   - break;
388   - }
389   -
390   - }
391   -
392   - ylxxbList.add(y);
393   -
394   - }
395   -
396   - return ylxxbList;
397   - }
398   -
399   - @Override
400   - public int checkNbbm(Cwjy t) {
401   - // TODO Auto-generated method stub
402   - String sql="select count(*) from bsth_c_cwjy where nbbm ='"+t.getNbbm()+"'"
403   - + " and gsdm ='"+t.getFgsdm()+"' and fgsdm ='"+t.getFgsdm()+"'";
404   - int cs=jdbcTemplate.queryForObject(sql, Integer.class);
405   -
406   - return cs;
407   - }
408   -
409   - @Override
410   - public List<Ylxxb> cwjyList(Map<String, Object> map) {
411   - String rq=map.get("rq").toString();
412   - String nbbm=map.get("nbbh").toString();
413   - String gsdm=map.get("gsdm_like").toString();
414   -
415   - String fgsdm=map.get("fgsdm_like").toString();
416   - String line =map.get("line_like").toString().trim();
417   - boolean type=false;
418   - if(map.get("type")!=null){
419   - type=true;
420   - }
421   - String sql="select a.nbbm,a.gsdm,a.fgsdm,IFNULL(b.id,0) as id,IFNULL(b.jzl,0) as jzl,"
422   - + " IFNULL(b.jyggh,0) as jyggh,IFNULL(b.jsy,0) as jsy,IFNULL(b.stationid,0) as stationid ,"
423   - + " IFNULL(b.yj,0) as yj,IFNULL(b.nylx,0) as nylx,IFNULL(b.bz,'') as bz,IFNULL(c.jsy,'') as ldgh ,"
424   - + " IFNULL(c.xlname,c.linename) as xlname from "
425   - + " (select * from bsth_c_cwjy where gsdm='"+gsdm+"' and fgsdm='"+fgsdm+"') a "
426   - + " left join (select * from bsth_c_ylxxb where yyrq='"+rq+"' and gsdm='"+gsdm+"' and jylx=1) b"
427   - + " on a.nbbm=b.nbbm LEFT JOIN (select u.nbbm,u.jsy,v.linename,v.xlname,v.xlbm from(select a.nbbm,GROUP_CONCAT(a.jsy) as jsy "
428   - + " from (select nbbm,jsy from bsth_c_ylb x where x.rq='"+rq+"' "
429   - + " and x.ssgsdm='"+gsdm+"' and x.fgsdm='"+fgsdm+"' group by nbbm,jsy ) a group by a.nbbm) u"
430   - + " LEFT JOIN(select o.nbbm,GROUP_CONCAT(o.xlbm) xlbm ,GROUP_CONCAT(o.linename) as xlname,"
431   - + " GROUP_CONCAT(p.`name`) as linename from (select nbbm,xlbm,linename from bsth_c_ylb "
432   - + " where rq='"+rq+"' and ssgsdm='"+gsdm+"' and fgsdm='"+fgsdm+"' group by nbbm,xlbm,linename) o "
433   - + " LEFT JOIN bsth_c_line p on o.xlbm=p.line_code group by o.nbbm ) v on u.nbbm=v.nbbm) c "
434   - + " on a.nbbm=c.nbbm where 1=1 ";
435   - if(!nbbm.equals("")){
436   - sql +=" and a.nbbm like '%"+nbbm+"%'";
437   - }
438   - if(!line.equals("")){
439   - sql += " and c.xlbm ='"+line+"'";
440   - }
441   - if(type){
442   - sql +=" and c.xlbm is not null";
443   - }
444   - sql +=" order by xlname desc";
445   - List<Ylxxb> yList= jdbcTemplate.query(sql,
446   - new RowMapper<Ylxxb>(){
447   - @Override
448   - public Ylxxb mapRow(ResultSet rs, int rowNum) throws SQLException {
449   - Ylxxb t=new Ylxxb();
450   - t.setId(rs.getInt("id"));
451   - t.setGsdm(rs.getString("gsdm"));
452   - t.setFgsdm(rs.getString("fgsdm"));
453   - t.setNbbm(rs.getString("nbbm"));
454   - t.setJyggh(rs.getString("jyggh"));
455   - t.setJsy(rs.getString("jsy"));
456   - t.setJzl(rs.getDouble("jzl"));
457   - t.setStationid(rs.getString("stationid"));
458   - t.setNylx(rs.getInt("nylx"));
459   - t.setYj(rs.getDouble("yj"));
460   - t.setBz(rs.getString("bz"));
461   - t.setLdgh(rs.getString("ldgh"));
462   - t.setLinename(rs.getString("xlname"));
463   - return t;
464   - }
465   - });
466   - return yList;
467   - }
468   -
469   -
470   - @Override
471   - public String importExcel(File file, String gsbm, String gsName) {
472   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
473   - SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
474   - DecimalFormat df = new DecimalFormat("######0.00");
475   - List<String> textList = new ArrayList<String>();
476   - try {
477   - POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
478   - HSSFWorkbook wb = new HSSFWorkbook(fs);
479   - HSSFSheet sheet = wb.getSheetAt(0);
480   - // 取得总行数
481   - int rowNum = sheet.getLastRowNum() + 1;
482   - // 取得总列数
483   - int cellNum = sheet.getRow(0).getLastCellNum();
484   - HSSFRow row = null;
485   - HSSFCell cell = null;
486   - for(int i = 2; i < rowNum; i++){
487   - row = sheet.getRow(i);
488   - if (row == null){
489   - continue;
490   - }
491   - String text = "";
492   - for(int j = 0; j < cellNum; j++){
493   - cell = row.getCell(j);
494   - if(cell == null){
495   - text += ",";
496   - continue;
497   - }
498   - text += String.valueOf(cell) + ",";
499   - }
500   - String[] split = (text+";").split(",");
501   - String str = "";
502   - for(int j = 0; j < split.length && j < 5; j++){
503   - str += split[j];
504   - }
505   - if(str.trim().length() == 0){
506   - continue;
507   - }
508   - textList.add(text + ";");
509   - }
510   - for(int i = 0; i < textList.size(); i++){
511   - String text = textList.get(i);
512   - System.out.println(text);
513   - String[] split = text.split(",");
514   - String rq = split[0].trim();
515   - String nbbm = split[1].trim();
516   - String jsy = split[2].trim();
517   - double jzl = Double.valueOf(split[3].trim().length()!=0?split[3]:"0");
518   - String jyz = split[4].trim();
519   - String remarks = split[5].trim();
520   - if(rq.trim().length() == 0){
521   - rq = sdf.format(new Date());
522   - }
523   -
524   - List<Double> jzl_ = repository.import_queryBySame(gsbm, rq, nbbm);
525   -//
526   - if(jzl_.size() == 0){
527   - repository.import_insertData(gsbm, rq, nbbm, jsy,
528   - df.format(jzl), jyz, remarks, sd.format(new Date()));
529   - }else{
530   - repository.import_UpdateJzl(df.format(jzl), jsy, jyz, remarks, gsbm, rq, nbbm);
531   - }
532   - }
533   -
534   - /** 以下为测试导入ylxxb用 */
535   -// Date date = new Date();
536   -// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
537   -// for(int i = 1; i < rowNum; i++){
538   -// row = sheet.getRow(i);
539   -// if (row == null){
540   -// continue;
541   -// }
542   -// String text = "";
543   -// for(int j = 0; j < cellNum; j++){
544   -// cell = row.getCell(j);
545   -// if(cell == null){
546   -// text += ",";
547   -// continue;
548   -// }
549   -// if(j == 1 && cell.getCellType() == Cell.CELL_TYPE_NUMERIC){
550   -// text += dateFormat.format(cell.getDateCellValue()) + ",";
551   -// } else if(j == 4 || j == 7){
552   -// text += "0,";
553   -//// } else if(j == 6 && String.valueOf(cell).contains("-")){
554   -//// String str = String.valueOf(cell);
555   -//// text += str.split("-")[1] + ",";
556   -// } else {
557   -// text += String.valueOf(cell) + ",";
558   -// }
559   -// }
560   -// System.out.println(text);
561   -// Ylxxb ylxxb = new Ylxxb();
562   -// String[] split = text.split(",");
563   -// ylxxb.setCreatetime(date);
564   -// ylxxb.setYyrq(sdf.parse(split[0].trim()));
565   -// ylxxb.setJlrq(dateFormat.parse(split[1]));
566   -// ylxxb.setFromgsdm("22");
567   -// ylxxb.setNbbm(split[2]);
568   -// ylxxb.setJzl(Double.valueOf(split[3]));
569   -// ylxxb.setNylx(Integer.valueOf(split[4]));
570   -// ylxxb.setStationid(split[5]);
571   -// if(split[6].contains("-")){
572   -// ylxxb.setJsy(split[6].split("-")[1]);
573   -// }
574   -// ylxxb.setBz(split[6]);
575   -// ylxxb.setJylx(Integer.valueOf(split[7]));
576   -// ylxxbRepository.save(ylxxb);
577   -// }
578   - wb.close();
579   - fs.close();
580   - } catch (Exception e) {
581   - // TODO Auto-generated catch block
582   - e.printStackTrace();
583   - return "文件导入失败";
584   - } finally {
585   - file.delete();
586   - }
587   - return "文件导入成功";
588   - }
589   -
590   -
591   -}
592   -=======
593 1 package com.bsth.service.oil.impl;
594 2  
595 3 import java.io.File;
... ... @@ -1179,5 +587,4 @@ public class CwjyServiceImpl extends BaseServiceImpl&lt;Cwjy,Integer&gt; implements Cw
1179 587 }
1180 588  
1181 589  
1182   -}
1183   ->>>>>>> 2021.05.11 历史版本 选择版本 查看历史版本修改当前版本和待更新版本
  590 +}
1184 591 \ No newline at end of file
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
1   -<<<<<<< HEAD
2 1 package com.bsth.service.realcontrol.impl;
3 2  
4 3 import java.io.*;
... ... @@ -6588,6594 +6587,3 @@ class compareFcsjType implements Comparator&lt;ScheduleRealInfo&gt; {
6588 6587 }
6589 6588  
6590 6589 }
6591   -=======
6592   -package com.bsth.service.realcontrol.impl;
6593   -
6594   -import java.io.*;
6595   -import java.net.HttpURLConnection;
6596   -import java.net.MalformedURLException;
6597   -import java.net.URL;
6598   -import java.net.URLEncoder;
6599   -import java.sql.ResultSet;
6600   -import java.sql.SQLException;
6601   -import java.text.DecimalFormat;
6602   -import java.text.ParseException;
6603   -import java.text.SimpleDateFormat;
6604   -import java.util.ArrayList;
6605   -import java.util.Calendar;
6606   -import java.util.Collection;
6607   -import java.util.Collections;
6608   -import java.util.Comparator;
6609   -import java.util.Date;
6610   -import java.util.GregorianCalendar;
6611   -import java.util.HashMap;
6612   -import java.util.HashSet;
6613   -import java.util.Iterator;
6614   -import java.util.List;
6615   -import java.util.Map;
6616   -import java.util.Queue;
6617   -import java.util.Set;
6618   -import java.util.concurrent.ConcurrentLinkedQueue;
6619   -import java.util.concurrent.Executors;
6620   -import java.util.concurrent.ScheduledExecutorService;
6621   -import java.util.concurrent.ThreadFactory;
6622   -import java.util.concurrent.TimeUnit;
6623   -import java.util.regex.Pattern;
6624   -
6625   -import org.apache.commons.io.IOUtils;
6626   -import org.apache.commons.lang3.StringEscapeUtils;
6627   -import org.apache.commons.lang3.StringUtils;
6628   -import org.joda.time.format.DateTimeFormat;
6629   -import org.joda.time.format.DateTimeFormatter;
6630   -import org.slf4j.Logger;
6631   -import org.slf4j.LoggerFactory;
6632   -import org.springframework.beans.factory.DisposableBean;
6633   -import org.springframework.beans.factory.InitializingBean;
6634   -import org.springframework.beans.factory.annotation.Autowired;
6635   -import org.springframework.jdbc.core.BeanPropertyRowMapper;
6636   -import org.springframework.jdbc.core.JdbcTemplate;
6637   -import org.springframework.jdbc.core.RowMapper;
6638   -import org.springframework.stereotype.Service;
6639   -import org.springframework.transaction.annotation.Transactional;
6640   -
6641   -import com.alibaba.fastjson.JSON;
6642   -import com.alibaba.fastjson.JSONArray;
6643   -import com.alibaba.fastjson.JSONObject;
6644   -import com.bsth.common.Constants;
6645   -import com.bsth.common.ResponseCode;
6646   -import com.bsth.controller.realcontrol.dto.ChangePersonCar;
6647   -import com.bsth.controller.realcontrol.dto.DfsjChange;
6648   -import com.bsth.controller.realcontrol.dto.LpData;
6649   -import com.bsth.data.BasicData;
6650   -import com.bsth.data.LineConfigData;
6651   -import com.bsth.data.Station2ParkBuffer;
6652   -import com.bsth.data.schedule.DayOfSchedule;
6653   -import com.bsth.data.schedule.SchAttrCalculator;
6654   -import com.bsth.data.schedule.ScheduleComparator;
6655   -import com.bsth.data.schedule.edit_logs.FormLogger;
6656   -import com.bsth.data.schedule.edit_logs.ScheduleModifyLogger;
6657   -import com.bsth.data.schedule.edit_logs.loggers.AfterwardsLogger;
6658   -import com.bsth.data.schedule.edit_logs.loggers.FcxxwtLogger;
6659   -import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto;
6660   -import com.bsth.data.schedule.late_adjust.LateAdjustHandle;
6661   -import com.bsth.data.utils.CustomStringUtils;
6662   -import com.bsth.entity.CarDevice;
6663   -import com.bsth.entity.Cars;
6664   -import com.bsth.entity.Line;
6665   -import com.bsth.entity.Personnel;
6666   -import com.bsth.entity.calc.CalcInterval;
6667   -import com.bsth.entity.oil.Dlb;
6668   -import com.bsth.entity.oil.Ylb;
6669   -import com.bsth.entity.oil.Ylxxb;
6670   -import com.bsth.entity.realcontrol.ChildTaskPlan;
6671   -import com.bsth.entity.realcontrol.LineConfig;
6672   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
6673   -import com.bsth.entity.realcontrol.SvgAttribute;
6674   -import com.bsth.entity.report.MileageReport;
6675   -import com.bsth.entity.report.RepairReport;
6676   -import com.bsth.entity.report.ScheduleCorrectionReport;
6677   -import com.bsth.entity.schedule.CarConfigInfo;
6678   -import com.bsth.entity.schedule.EmployeeConfigInfo;
6679   -import com.bsth.entity.schedule.GuideboardInfo;
6680   -import com.bsth.entity.schedule.SchedulePlanInfo;
6681   -import com.bsth.entity.sys.Dictionary;
6682   -import com.bsth.entity.sys.DutyEmployee;
6683   -import com.bsth.entity.sys.SysUser;
6684   -import com.bsth.repository.CarDeviceRepository;
6685   -import com.bsth.repository.CarsRepository;
6686   -import com.bsth.repository.LineRepository;
6687   -import com.bsth.repository.RepairReportRepository;
6688   -import com.bsth.repository.calc.CalcIntervalRepository;
6689   -import com.bsth.repository.oil.DlbRepository;
6690   -import com.bsth.repository.oil.YlbRepository;
6691   -import com.bsth.repository.oil.YlxxbRepository;
6692   -import com.bsth.repository.realcontrol.ChildTaskPlanRepository;
6693   -import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
6694   -import com.bsth.repository.realcontrol.SvgAttributeRepository;
6695   -import com.bsth.repository.schedule.CarConfigInfoRepository;
6696   -import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
6697   -import com.bsth.repository.schedule.GuideboardInfoRepository;
6698   -import com.bsth.security.util.SecurityUtils;
6699   -import com.bsth.service.LineService;
6700   -import com.bsth.service.SectionRouteService;
6701   -import com.bsth.service.directive.DirectiveService;
6702   -import com.bsth.service.impl.BaseServiceImpl;
6703   -import com.bsth.service.realcontrol.ScheduleRealInfoService;
6704   -import com.bsth.service.report.CulateMileageService;
6705   -import com.bsth.service.report.ReportService;
6706   -import com.bsth.service.schedule.SchedulePlanInfoService;
6707   -import com.bsth.service.sys.DictionaryService;
6708   -import com.bsth.service.sys.DutyEmployeeService;
6709   -import com.bsth.util.Arith;
6710   -import com.bsth.util.ComparableChild;
6711   -import com.bsth.util.ComparableLp;
6712   -import com.bsth.util.ComparableReal;
6713   -import com.bsth.util.ConfigUtil;
6714   -import com.bsth.util.DateUtils;
6715   -import com.bsth.util.ReportRelatedUtils;
6716   -import com.bsth.util.ReportUtils;
6717   -import com.bsth.util.TimeUtils;
6718   -import com.bsth.util.TransGPS;
6719   -import com.bsth.websocket.handler.SendUtils;
6720   -import com.fasterxml.jackson.databind.ObjectMapper;
6721   -import com.github.stuxuhai.jpinyin.PinyinException;
6722   -import com.github.stuxuhai.jpinyin.PinyinFormat;
6723   -import com.github.stuxuhai.jpinyin.PinyinHelper;
6724   -import com.google.common.base.Splitter;
6725   -import com.google.common.collect.Lists;
6726   -
6727   -import javax.ws.rs.HEAD;
6728   -
6729   -@Service
6730   -public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInfo, Long>
6731   - implements ScheduleRealInfoService, InitializingBean, DisposableBean {
6732   - @Autowired
6733   - JdbcTemplate jdbcTemplate;
6734   - @Autowired
6735   - ScheduleRealInfoRepository scheduleRealInfoRepository;
6736   -
6737   - @Autowired
6738   - EmployeeConfigInfoRepository employeeConfigInfoRepository;
6739   -
6740   - @Autowired
6741   - CarConfigInfoRepository carConfigInfoRepository;
6742   -
6743   - @Autowired
6744   - SectionRouteService sectionRouteService;
6745   -
6746   - @Autowired
6747   - CulateMileageService culateMieageService;
6748   -
6749   - @Autowired
6750   - DictionaryService dictionaryService;
6751   -
6752   - @Autowired
6753   - CalcIntervalRepository calcIntervalRepository;
6754   - /*@Autowired
6755   - BorrowCenter borrowCenter;*/
6756   -
6757   - @Autowired
6758   - LineRepository lineRepository;
6759   - @Autowired
6760   - LineService lineService;
6761   - @Autowired
6762   - GuideboardInfoRepository guideboardInfoRepository;
6763   -
6764   - @Autowired
6765   - ChildTaskPlanRepository cTaskPlanRepository;
6766   -
6767   - @Autowired
6768   - SendUtils sendUtils;
6769   -
6770   - @Autowired
6771   - DayOfSchedule dayOfSchedule;
6772   -
6773   - @Autowired
6774   - SchAttrCalculator schAttrCalculator;
6775   -
6776   - @Autowired
6777   - LineConfigData lineConfigData;
6778   -
6779   - @Autowired
6780   - DutyEmployeeService dutyEmployeeService;
6781   -
6782   - @Autowired
6783   - YlxxbRepository ylxxbRepository;
6784   -
6785   - @Autowired
6786   - YlbRepository ylbRepository;
6787   -
6788   - @Autowired
6789   - DlbRepository dlbRepository;
6790   -
6791   - @Autowired
6792   - ReportService reposrService;
6793   -
6794   - @Autowired
6795   - CulateMileageService culateService;
6796   -
6797   - @Autowired
6798   - FormLogger schModifyLog;
6799   -
6800   - @Autowired
6801   - DirectiveService directiveService;
6802   -
6803   - @Autowired
6804   - CarDeviceRepository carDeviceRepository;
6805   -
6806   - @Autowired
6807   - CarsRepository carsRepository;
6808   -
6809   - @Autowired
6810   - RepairReportRepository repairReportRepository;
6811   - Logger logger = LoggerFactory.getLogger(this.getClass());
6812   -
6813   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
6814   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
6815   -
6816   - public static Map<String,String> DIRMAP ; // dvr电话
6817   - private Queue<RepairReport> queue = new ConcurrentLinkedQueue<>();
6818   -
6819   - private ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
6820   -
6821   - @Override
6822   - public Thread newThread(Runnable r) {
6823   - // TODO Auto-generated method stub
6824   - Thread t = new Thread(r);
6825   - t.setName("RepairReportReissuer");
6826   -
6827   - return t;
6828   - }
6829   - });
6830   -
6831   -
6832   -
6833   - private static Map<String, String> report2repair = new HashMap<String, String>();
6834   -
6835   - static {
6836   - report2repair.put("9101", "9109");
6837   - report2repair.put("9102", "9102");
6838   - report2repair.put("9103", "9103");
6839   - report2repair.put("9104", "9104");
6840   - report2repair.put("9109", "9109");
6841   - report2repair.put("9201", "9201");
6842   - report2repair.put("9202", "9202");
6843   - report2repair.put("9203", "9203");
6844   - report2repair.put("9204", "9204");
6845   - report2repair.put("9209", "9209");
6846   - report2repair.put("9301", "9301");
6847   - report2repair.put("9302", "9302");
6848   - report2repair.put("9303", "9303");
6849   - report2repair.put("9304", "9304");
6850   - report2repair.put("9305", "9305");
6851   - report2repair.put("9306", "9306");
6852   - report2repair.put("9309", "9309");
6853   - }
6854   -
6855   -
6856   - /**
6857   - * 校验人车 和 班次的公司和分公司归属
6858   - *
6859   - * @param schId
6860   - * @param jGh
6861   - * @param sGh
6862   - * @param nbbm
6863   - * @return -2 跨营运公司,校验不过
6864   - * -1 跨分公司,二次确认
6865   - * 1 校验通过
6866   - */
6867   - @Override
6868   - public Map<String, Object> checkPCFgsAscription(Long schId, String jGh, String sGh, String nbbm) {
6869   - Map<String, Object> rs = new HashMap<>();
6870   - try {
6871   - rs.put("status", ResponseCode.SUCCESS);
6872   - rs.put("checkStatus", -2);
6873   -
6874   - String msg = null;
6875   - ScheduleRealInfo sch = dayOfSchedule.get(schId);
6876   - String gsbm = sch.getGsBm(), fgsbm = sch.getFgsBm();
6877   -
6878   - if (nbbm != null && !carExist(gsbm, nbbm)) {
6879   - msg = sch.getGsName() + "没有自编号为" + "[" + nbbm + "]的车辆";
6880   - rs.put("msg", msg);
6881   - return rs;
6882   - }
6883   -
6884   - if (nbbm != null && !sch.getGsBm().equals(BasicData.nbbm2CompanyCodeMap.get(nbbm))) {
6885   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到自编号为【" + nbbm + "】的车辆");
6886   - return rs;
6887   - }
6888   -
6889   - if (nbbm != null && !(fgsbm + "_" + gsbm).equals(BasicData.nbbm2FgsCompanyCodeMap.get(nbbm))) {
6890   -
6891   - String clFgsName = BasicData.businessFgsCodeNameMap.get(BasicData.nbbm2FgsCompanyCodeMap.get(nbbm));
6892   -
6893   - msg = ("【" + nbbm + "】" + "是" + clFgsName + "的车辆!");
6894   - rs.put("msg", msg);
6895   - rs.put("checkStatus", -1);
6896   - return rs;
6897   - }
6898   -
6899   - if(null != jGh && !"/".equals(StringUtils.trim(jGh))){
6900   - Personnel jsy = BasicData.perMap.get(gsbm + "-" + jGh);
6901   -
6902   - if (null == jsy) {
6903   - msg = "【驾驶员】:" + sch.getGsName() + "暂无工号为" + "【" + jGh + "】的人员";
6904   - rs.put("msg", msg);
6905   - return rs;
6906   - }
6907   - else if (!fgsbm.equals(jsy.getBrancheCompanyCode())) {
6908   - //校验分公司
6909   - msg = ("【驾驶员】:" + jGh + "/" + jsy.getPersonnelName() + "是" + jsy.getBrancheCompany() + "的人员");
6910   - rs.put("msg", msg);
6911   - rs.put("checkStatus", -1);
6912   - return rs;
6913   - }
6914   - }
6915   -
6916   - if (null != sGh && !"/".equals(StringUtils.trim(sGh))) {
6917   - Personnel spy = BasicData.perMap.get(gsbm + "-" + sGh);
6918   - if (null == spy) {
6919   - msg = "【售票员】: " + sch.getGsName() + "暂无工号为" + "【" + sGh + "】的人员";
6920   - rs.put("msg", msg);
6921   - return rs;
6922   - }
6923   - else if (!fgsbm.equals(spy.getBrancheCompanyCode())) {
6924   - msg = ("【售票员】: " + sGh + "/" + spy.getPersonnelName() + "是" + spy.getBrancheCompany() + "的人员");
6925   - rs.put("msg", msg);
6926   - rs.put("checkStatus", -1);
6927   - return rs;
6928   - }
6929   - }
6930   -
6931   - rs.put("checkStatus", 1);
6932   - } catch (Exception e) {
6933   - logger.error("", e);
6934   - rs.put("status", ResponseCode.ERROR);
6935   - }
6936   - return rs;
6937   - }
6938   -
6939   -
6940   - /**
6941   - * 车辆是否存在
6942   - *
6943   - * @param gsbm 公司编码
6944   - * @param nbbm 车辆自编号
6945   - * @return
6946   - */
6947   - private boolean carExist(String gsbm, String nbbm) {
6948   - return BasicData.nbbm2CompanyCodeMap.containsKey(nbbm);
6949   - }
6950   -
6951   - /**
6952   - * 获取人员姓名
6953   - *
6954   - * @param gsbm 公司编码
6955   - * @param gh 人员工号
6956   - * @return
6957   - */
6958   - private String getPersonName(String gsbm, String gh) {
6959   - return BasicData.allPerson.get(gsbm + '-' + gh);
6960   - }
6961   -
6962   - @Override
6963   - public Iterable<ScheduleRealInfo> list(Map<String, Object> map) {
6964   - Iterator<ScheduleRealInfo> iterator = super.list(map).iterator();
6965   - Set<ScheduleRealInfo> set = new HashSet<>(100);
6966   -
6967   - DateTimeFormatter fmtyyyyMMddHHmm = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm");
6968   - //计算时间戳
6969   - ScheduleRealInfo sch;
6970   - while (iterator.hasNext()) {
6971   - sch = iterator.next();
6972   - //待发时间戳
6973   - sch.setDfsjT(fmtyyyyMMddHHmm.parseMillis(sch.getRealExecDate() + sch.getDfsj()));
6974   - //实发时间戳
6975   - if (StringUtils.isNotEmpty(sch.getFcsjActual())) {
6976   - sch.setFcsjActualTime(fmtyyyyMMddHHmm.parseMillis(sch.getRealExecDate() + sch.getFcsjActual()));
6977   - }
6978   - set.add(sch);
6979   - }
6980   - return set;
6981   - }
6982   -
6983   - @Override
6984   - public Map<String, Collection<ScheduleRealInfo>> findByLines(String lines) {
6985   - List<String> lineList = Lists.newArrayList(Splitter.on(',').trimResults().omitEmptyStrings().split(lines));
6986   -
6987   - /*Multimap<String, ScheduleRealInfo> mMap = ArrayListMultimap.create();
6988   -
6989   - for (String lineCode : lineList) {
6990   - mMap.putAll(lineCode, dayOfSchedule.findByLineCode(lineCode));
6991   - }*/
6992   - return dayOfSchedule.findByLineCodes(lineList);
6993   - }
6994   -
6995   - private final static long DAY_TIME = 1000 * 60 * 60 * 24L;
6996   -
6997   - private static int BUF_SIZE = 1024;
6998   -
6999   - private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd");
7000   - private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");
7001   -
7002   - @Override
7003   - public Map<String, Object> outgoAdjust(Long id, String remarks, String dfsj, String bcType, String opType, String userId) {
7004   - Map<String, Object> map = new HashMap<>();
7005   - try {
7006   -
7007   - ScheduleRealInfo schedule = dayOfSchedule.get(id);
7008   -
7009   - if (schedule.getStatus() > 0) {
7010   - map.put("status", ResponseCode.SUCCESS);
7011   - map.put("flag", "4008");
7012   - map.put("t", schedule);
7013   - return map;
7014   - }
7015   -
7016   - LineConfig config = lineConfigData.get(schedule.getXlBm());
7017   - //小于线路开始运营时间,则默认跨过24点
7018   - if (dfsj.compareTo(config.getStartOpt()) < 0) {
7019   - schedule.setRealExecDate(fmtyyyyMMdd.print(schedule.getScheduleDate().getTime() + DAY_TIME));
7020   - } else {
7021   - schedule.setRealExecDate(schedule.getScheduleDateStr());
7022   - }
7023   -
7024   - //记录日志
7025   - ScheduleModifyLogger.dftz(schedule, opType, schedule.getDfsj(), dfsj, remarks, userId);
7026   -
7027   - schedule.setDfsjAll(dfsj);
7028   - schedule.setDfAuto(false);
7029   - if ("1".equals(opType))
7030   - schedule.setRemarks(remarks);
7031   -
7032   - List<ScheduleRealInfo> ts = new ArrayList<>();
7033   - ts.add(schedule);
7034   - //调整终点时间和下一个班次的应到时间
7035   - //schedule.calcEndTime();
7036   - /*ScheduleRealInfo nextSch = dayOfSchedule.nextByLp2(schedule);
7037   - if (null != nextSch) {
7038   - nextSch.setQdzArrDatejh(schedule.getZdsj());
7039   - ts.add(nextSch);
7040   - }*/
7041   -
7042   - //调整班次类型
7043   - if (StringUtils.isNotEmpty(bcType) && !bcType.equals(schedule.getBcType())) {
7044   - if ((schedule.getBcType().equals("major")
7045   - || schedule.getBcType().equals("venting"))
7046   - && bcType.equals("normal")) {
7047   - //清空备注
7048   - schedule.setRemarks("");
7049   - }
7050   - schedule.setBcType(bcType);
7051   - }
7052   -
7053   - //如果正在执行该班次
7054   - //ScheduleRealInfo exec = dayOfSchedule.executeCurr(schedule.getClZbh());
7055   - //if(exec != null && exec == schedule){
7056   - //重新计算正在执行班次
7057   - dayOfSchedule.reCalcExecPlan(schedule.getClZbh());
7058   - //}
7059   -
7060   - //重新计算是否误点
7061   - schedule.reCalcLate();
7062   - //取消应发未到标记,不再自动调整待发
7063   - //if(schedule.isLate2()){
7064   - // schedule.setLate2(false);
7065   - //LateAdjustHandle.remove(schedule);
7066   - //}
7067   -
7068   - try {
7069   - if (!schedule.getDirectiveState().equals(-1) && schedule.getStatus() == 0) {
7070   - //重新下发调度指令
7071   - directiveService.send60Dispatch(schedule.getId(), "待发@系统");
7072   - }
7073   - } catch (Exception e) {
7074   - logger.error("", e);
7075   - }
7076   -
7077   - // 持久化到数据库
7078   - dayOfSchedule.save(schedule);
7079   -
7080   - map.put("status", ResponseCode.SUCCESS);
7081   - map.put("ts", ts);
7082   - } catch (Exception e) {
7083   - logger.error("", e);
7084   - map.put("status", ResponseCode.ERROR);
7085   - }
7086   - return map;
7087   - }
7088   -
7089   - @Override
7090   - public Map<String, Object> destroy(String idsStr, String remarks, String reason, String userId) {
7091   -
7092   - Map<String, Object> map = new HashMap<>();
7093   - List<ScheduleRealInfo> rsList = new ArrayList<>();
7094   - map.put("ts", rsList);
7095   - try {
7096   - List<String> idList = Lists.newArrayList(Splitter.on(',').trimResults().omitEmptyStrings().split(idsStr));
7097   -
7098   - ScheduleRealInfo schedule = null;
7099   - for (String id : idList) {
7100   - schedule = dayOfSchedule.get(Long.parseLong(id));
7101   - if (schedule.isDestroy()) {
7102   - map.put("status", ResponseCode.ERROR);
7103   - map.put("msg", "不必要的重复烂班!");
7104   - return map;
7105   - }
7106   - //记录日志
7107   - ScheduleModifyLogger.jhlb(schedule, remarks, userId);
7108   -
7109   - schedule.setAdjustExps(reason);
7110   - schedule.destroy();
7111   - schedule.addRemarks(remarks);
7112   -
7113   - dayOfSchedule.save(schedule);
7114   - rsList.add(schedule);
7115   - }
7116   -
7117   - //重新计算当前执行班次
7118   - dayOfSchedule.reCalcExecPlan(schedule.getClZbh());
7119   -
7120   - map.put("status", ResponseCode.SUCCESS);
7121   - } catch (Exception e) {
7122   - logger.error("", e);
7123   - map.put("status", ResponseCode.ERROR);
7124   - }
7125   - return map;
7126   - }
7127   -
7128   - // 线路id获取驾驶员
7129   - @Override
7130   - public List<Map<String, String>> findDriverByLine(String lineCode) {
7131   - List<EmployeeConfigInfo> list = employeeConfigInfoRepository.findBylineCode(lineCode);
7132   -
7133   - List<Map<String, String>> rsList = new ArrayList<>();
7134   - Map<String, String> map = null;
7135   - Personnel driver = null;
7136   - String code = null;
7137   -
7138   - for (EmployeeConfigInfo employee : list) {
7139   - driver = employee.getJsy();
7140   - if (driver != null) {
7141   - map = new HashMap<>();
7142   - code = driver.getJobCode();
7143   - map.put("id", code + "/" + driver.getPersonnelName());
7144   - map.put("text", code + "/" + driver.getPersonnelName());
7145   - rsList.add(map);
7146   - }
7147   - }
7148   - return rsList;
7149   - }
7150   -
7151   - // 线路id获取售票员
7152   - @Override
7153   - public List<Map<String, String>> findConductorByLine(String lineCode) {
7154   - List<EmployeeConfigInfo> list = employeeConfigInfoRepository.findBylineCode(lineCode);
7155   -
7156   - List<Map<String, String>> rsList = new ArrayList<>();
7157   - Map<String, String> map = null;
7158   - Personnel conductor = null;
7159   - String code = null;
7160   -
7161   - for (EmployeeConfigInfo employee : list) {
7162   - conductor = employee.getSpy();
7163   - if (conductor != null) {
7164   - code = conductor.getJobCode();
7165   - map = new HashMap<>();
7166   - map.put("id", code + "/" + conductor.getPersonnelName());
7167   - map.put("text", code + "/" + conductor.getPersonnelName());
7168   - rsList.add(map);
7169   - }
7170   - }
7171   - return rsList;
7172   - }
7173   -
7174   - @Override
7175   - public List<Map<String, String>> findCarByLine(String lineCode) {
7176   -
7177   - List<CarConfigInfo> list = carConfigInfoRepository.findBylineCode(lineCode);
7178   -
7179   - List<Map<String, String>> rsList = new ArrayList<>();
7180   - Map<String, String> map = null;
7181   - Cars car = null;
7182   - String code = null;
7183   -
7184   - for (CarConfigInfo cci : list) {
7185   - car = cci.getCl();
7186   - if (car != null) {
7187   - code = car.getInsideCode();
7188   - map = new HashMap<>();
7189   - map.put("id", code);
7190   - map.put("text", code);
7191   - rsList.add(map);
7192   - }
7193   - }
7194   - return rsList;
7195   - }
7196   -
7197   - /**
7198   - * 添加到历史库
7199   - *
7200   - * @param t
7201   - * @return
7202   - */
7203   - @Override
7204   - public Map<String, Object> addToHistory(ScheduleRealInfo t) {
7205   - Map<String, Object> rs = new HashMap<>();
7206   - try {
7207   - if (!carExist(t.getGsBm(), t.getClZbh())) {
7208   - rs.put("msg", "车辆 " + t.getClZbh() + " <a href=\"/#/busInfoManage\" target=_blank>车辆基础信息</a> 里找不到!");
7209   - rs.put("status", ResponseCode.ERROR);
7210   - return rs;
7211   - }
7212   -
7213   - SysUser user = SecurityUtils.getCurrentUser();
7214   - //String schDate = DayOfSchedule.currSchDateMap.get(t.getXlBm());
7215   -
7216   - SimpleDateFormat sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd"), sdfyyyyMMddHHmm = new SimpleDateFormat("yyyy-MM-ddHH:mm");
7217   -
7218   - if (StringUtils.isEmpty(t.getjGh())) {
7219   - rs.put("status", ResponseCode.ERROR);
7220   - rs.put("msg", "驾驶员工号不能为空!");
7221   - return rs;
7222   - }
7223   - //截取驾驶员工号
7224   - if (t.getjGh().indexOf("-") != -1) {
7225   - t.setjGh(t.getjGh().split("-")[1]);
7226   - }
7227   - //检查驾驶员工号
7228   - String jName = getPersonName(t.getGsBm(), t.getjGh());
7229   - if (StringUtils.isEmpty(jName)) {
7230   - rs.put("msg", t.getXlName() + "所属的公司编码下找不到工号为【" + t.getjGh() + "】的驾驶员");
7231   - rs.put("status", ResponseCode.ERROR);
7232   - return rs;
7233   - } else if (StringUtils.isEmpty(t.getjName())) {
7234   - t.setjName(jName);//补上驾驶员名称
7235   - }
7236   -
7237   - //有售票员
7238   - if (StringUtils.isNotEmpty(t.getsGh())) {
7239   - String sName = getPersonName(t.getGsBm(), t.getsGh());
7240   - if (StringUtils.isEmpty(sName)) {
7241   - rs.put("msg", t.getXlName() + "所属的公司编码下找不到工号为【" + t.getjGh() + "】的售票员");
7242   - rs.put("status", ResponseCode.ERROR);
7243   - return rs;
7244   - } else if (StringUtils.isEmpty(t.getsName())) {
7245   - t.setsName(sName);//补上售票员名称
7246   - }
7247   - } else {
7248   - t.setsGh("");
7249   - t.setsName("");
7250   - }
7251   -
7252   - //公司 和 分公司名称
7253   - t.setGsName(BasicData.businessCodeNameMap.get(t.getGsBm()));
7254   - t.setFgsName(BasicData.businessFgsCodeNameMap.get(t.getFgsBm()+ "_" + t.getGsBm() ));
7255   -
7256   - //t.setScheduleDateStr(schDate);
7257   - t.setScheduleDate(sdfyyyyMMdd.parse(t.getScheduleDateStr()));
7258   - t.setRealExecDate(t.getScheduleDateStr());
7259   - t.setCreateBy(user);
7260   - t.setSflj(true);
7261   - t.setLate(false);
7262   - t.setDfsj(t.getFcsj());
7263   - t.setZdsjT(sdfyyyyMMddHHmm.parse(t.getScheduleDateStr() + t.getZdsj()).getTime());
7264   - t.setJhlcOrig(t.getJhlc());
7265   -
7266   - //班次历时
7267   - t.setBcsj(DateUtils.calcHHmmDiff(t.getFcsj(), t.getZdsj()) / 1000 / 60);
7268   -
7269   - //起终点名称
7270   - String prefix = t.getXlBm() + "_" + t.getXlDir() + "_";
7271   - t.setQdzName(BasicData.getStationNameByCode(t.getQdzCode(), prefix));
7272   - t.setZdzName(BasicData.getStationNameByCode(t.getZdzCode(), prefix));
7273   -
7274   - //计算班次实际执行时间
7275   - schAttrCalculator.calcRealDate(t).calcAllTimeByFcsj(t);
7276   - //处理计达跨24点
7277   - LineConfig conf = lineConfigData.get(t.getXlBm());
7278   - if (t.getZdsj().compareTo(conf.getStartOpt()) < 0) {
7279   - t.setZdsjT(sdfyyyyMMddHHmm.parse(t.getScheduleDateStr() + t.getZdsj()).getTime() + (1000 * 60 * 60 * 24));
7280   - }
7281   - if (t.getZdsjT() < t.getFcsjT()) {
7282   - rs.put("status", ResponseCode.ERROR);
7283   - rs.put("msg", "起终点时间异常!");
7284   - return rs;
7285   - }
7286   -
7287   - t.setId(dayOfSchedule.getId());
7288   - //实时入库
7289   - rs = super.save(t);
7290   - } catch (Exception e) {
7291   - logger.error("", e);
7292   - rs.put("status", ResponseCode.ERROR);
7293   - }
7294   - return rs;
7295   - }
7296   -
7297   -
7298   - /**
7299   - * 临加班次
7300   - */
7301   - @Override
7302   - public Map<String, Object> save(ScheduleRealInfo sch) {
7303   - Map<String, Object> rs = new HashMap<>();
7304   - try {
7305   - String clZbh = sch.getClZbh();
7306   - if (StringUtils.isNotEmpty(clZbh)) {
7307   - //检测
7308   - if (!carExist(sch.getGsBm(), clZbh)) {
7309   - rs.put("status", ResponseCode.ERROR);
7310   - rs.put("msg", "车辆 " + clZbh + " 不存在!");
7311   - return rs;
7312   - } else if (!sch.getGsBm().equals(BasicData.nbbm2CompanyCodeMap.get(clZbh))) {
7313   - rs.put("status", ResponseCode.ERROR);
7314   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到自编号为【" + clZbh + "】的车辆");
7315   - return rs;
7316   - }
7317   - }
7318   -
7319   - SysUser user = SecurityUtils.getCurrentUser();
7320   - String schDate = DayOfSchedule.currSchDateMap.get(sch.getXlBm());
7321   -
7322   - SimpleDateFormat sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd"), sdfyyyyMMddHHmm = new SimpleDateFormat("yyyy-MM-ddHH:mm");
7323   -
7324   - if (StringUtils.isEmpty(sch.getjGh())) {
7325   - rs.put("status", ResponseCode.ERROR);
7326   - rs.put("msg", "驾驶员工号不能为空!");
7327   - return rs;
7328   - }
7329   - //截取驾驶员工号
7330   - if (sch.getjGh().indexOf("-") != -1) {
7331   - sch.setjGh(sch.getjGh().split("-")[1]);
7332   - }
7333   - //检查驾驶员工号
7334   - String jName = getPersonName(sch.getGsBm(), sch.getjGh());
7335   - if (StringUtils.isEmpty(jName)) {
7336   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + sch.getjGh() + "】的驾驶员");
7337   - rs.put("status", ResponseCode.ERROR);
7338   - return rs;
7339   - } else if (StringUtils.isEmpty(sch.getjName())) {
7340   - sch.setjName(jName);//补上驾驶员名称
7341   - }
7342   -
7343   - //有售票员
7344   - if (StringUtils.isNotEmpty(sch.getsGh())) {
7345   - String sName = getPersonName(sch.getGsBm(), sch.getsGh());
7346   - if (StringUtils.isEmpty(sName)) {
7347   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + sch.getjGh() + "】的售票员");
7348   - rs.put("status", ResponseCode.ERROR);
7349   - return rs;
7350   - } else if (StringUtils.isEmpty(sch.getsName())) {
7351   - sch.setsName(sName);//补上售票员名称
7352   - }
7353   - } else {
7354   - sch.setsGh("");
7355   - sch.setsName("");
7356   - }
7357   -
7358   - //公司 和 分公司名称
7359   - sch.setGsName(BasicData.businessCodeNameMap.get(sch.getGsBm()));
7360   - sch.setFgsName(BasicData.businessFgsCodeNameMap.get(sch.getFgsBm() + "_" + sch.getGsBm()));
7361   - sch.setCreateDate(new Date());
7362   - sch.setScheduleDateStr(schDate);
7363   - sch.setScheduleDate(sdfyyyyMMdd.parse(schDate));
7364   - sch.setRealExecDate(schDate);
7365   -
7366   - sch.setCreateBy(user);
7367   - sch.setSflj(true);
7368   - sch.setLate(false);
7369   - sch.setDfsj(sch.getFcsj());
7370   - sch.setZdsjT(sdfyyyyMMddHHmm.parse(schDate + sch.getZdsj()).getTime());
7371   - sch.setJhlcOrig(sch.getJhlc());
7372   - sch.setCreateDate(new Date());
7373   - sch.setUpdateDate(new Date());
7374   - sch.setSpId(-1L);
7375   - //起终点名称
7376   - String prefix = sch.getXlBm() + "_" + sch.getXlDir() + "_";
7377   - sch.setQdzName(BasicData.getStationNameByCode(sch.getQdzCode(), prefix));
7378   - sch.setZdzName(BasicData.getStationNameByCode(sch.getZdzCode(), prefix));
7379   -
7380   - //计算班次实际执行时间
7381   - schAttrCalculator.calcRealDate(sch).calcAllTimeByFcsj(sch);
7382   -
7383   - //处理计达跨24点
7384   - LineConfig conf = lineConfigData.get(sch.getXlBm());
7385   - if (sch.getZdsj().compareTo(conf.getStartOpt()) < 0) {
7386   - sch.setZdsjT(sdfyyyyMMddHHmm.parse(sch.getScheduleDateStr() + sch.getZdsj()).getTime() + (1000 * 60 * 60 * 24));
7387   - }
7388   -
7389   - //班次历时
7390   - sch.setBcsj((int) ((sch.getZdsjT() - sch.getDfsjT()) / 1000 / 60));
7391   - if (sch.getZdsjT() < sch.getFcsjT()) {
7392   - rs.put("status", ResponseCode.ERROR);
7393   - rs.put("msg", "起终点时间异常!");
7394   - return rs;
7395   - }
7396   -
7397   - sch.setId(dayOfSchedule.getId());
7398   - //实时入库
7399   - super.save(sch);
7400   -
7401   - // 加入缓存
7402   - dayOfSchedule.put(sch);
7403   -
7404   - //更新起点应到时间
7405   - List<ScheduleRealInfo> ts = dayOfSchedule.updateQdzTimePlan(sch);
7406   -
7407   - //重新计算车辆当前执行班次
7408   - dayOfSchedule.reCalcExecPlan(sch.getClZbh());
7409   -
7410   - //记录站到场历时数据
7411   - Station2ParkBuffer.put(sch);
7412   -
7413   - rs.put("ts", ts);
7414   - rs.put("t", sch);
7415   - } catch (Exception e) {
7416   - logger.error("", e);
7417   - rs.put("status", ResponseCode.ERROR);
7418   - }
7419   - return rs;
7420   - }
7421   -
7422   - /**
7423   - * 删除历史表临加班次
7424   - *
7425   - * @param id
7426   - * @return
7427   - */
7428   - @Override
7429   - public Map<String, Object> deleteToHistory(Long id) {
7430   - Map<String, Object> rs = new HashMap<>();
7431   - rs.put("status", ResponseCode.ERROR);
7432   -
7433   - try {
7434   - ScheduleRealInfo sch = super.findById(id);
7435   - if (sch == null) {
7436   - rs.put("msg", "无效的id号");
7437   - return rs;
7438   - }
7439   -
7440   - if (!sch.isSflj()) {
7441   - rs.put("msg", "你只能删除临加班次");
7442   - return rs;
7443   - }
7444   -
7445   - //解除和调度指令的外键约束
7446   - jdbcTemplate.update(Constants.REMOVE_DIRECTIVE_SCH_FK, id);
7447   -
7448   - //数据库删除
7449   - rs = super.delete(id);
7450   - } catch (Exception e) {
7451   - logger.error("", e);
7452   - rs.put("msg", e.getMessage());
7453   - }
7454   -
7455   - return rs;
7456   - }
7457   -
7458   - @Override
7459   - public Map<String, Object> delete(Long id) {
7460   - Map<String, Object> rs = new HashMap<>();
7461   - rs.put("status", ResponseCode.ERROR);
7462   -
7463   - ScheduleRealInfo sch = null;
7464   - try {
7465   - sch = dayOfSchedule.get(id);
7466   - if (sch == null) {
7467   - rs.put("msg", "无效的id号");
7468   - return rs;
7469   - }
7470   -
7471   - if (!sch.isSflj()) {
7472   - rs.put("msg", "你只能删除临加班次");
7473   - return rs;
7474   - }
7475   -
7476   - sch.setDeleted(true);
7477   - //解除和调度指令的外键约束
7478   - jdbcTemplate.update(Constants.REMOVE_DIRECTIVE_SCH_FK, id);
7479   -
7480   - //数据库删除
7481   - rs = super.delete(id);
7482   - if (rs.get("status").equals(ResponseCode.SUCCESS)) {
7483   - dayOfSchedule.delete(sch);
7484   - //更新起点应到时间
7485   - List<ScheduleRealInfo> ts = dayOfSchedule.updateQdzTimePlan(sch);
7486   - rs.put("ts", ts);
7487   - rs.put("delete", sch);
7488   - } else
7489   - sch.setDeleted(false);
7490   - } catch (Exception e) {
7491   - logger.error("", e);
7492   - rs.put("msg", e.getMessage());
7493   - sch.setDeleted(false);
7494   - }
7495   -
7496   - return rs;
7497   - }
7498   -
7499   - @Override
7500   - public List<Map<String, String>> sreachVehic(String nbbm) {
7501   - // 转大写
7502   - nbbm = nbbm.toUpperCase();
7503   -
7504   - List<Map<String, String>> list = new ArrayList<>();
7505   - Map<String, String> map;
7506   - Set<String> allSet = BasicData.nbbm2CompanyCodeMap.keySet();
7507   -
7508   - Line line;
7509   - for (String k : allSet) {
7510   - if (k.indexOf(nbbm) != -1) {
7511   - // 所属线路
7512   - map = new HashMap<>();
7513   - line = BasicData.nbbm2LineMap.get(k);
7514   - map.put("id", k);
7515   - map.put("text", k);
7516   - if (null != line) {
7517   - map.put("lineName", line.getName());
7518   - map.put("lineCode", line.getLineCode());
7519   - }
7520   -
7521   - list.add(map);
7522   - }
7523   -
7524   - if (list.size() > 20)
7525   - break;
7526   - }
7527   - return list;
7528   - }
7529   -
7530   - @Override
7531   - public void adjustCar(ScheduleRealInfo schedule, String car) {
7532   - schedule.setClZbh(car);
7533   - }
7534   -
7535   - @Override
7536   - public void adjustDriver(ScheduleRealInfo schedule, String driver, String driverName) {
7537   - if (driver.indexOf("-") != -1)
7538   - driver = driver.split("-")[1];
7539   - schedule.setjGh(driver);
7540   - schedule.setjName(driverName);
7541   - }
7542   -
7543   - @Override
7544   - public void adjustConductor(ScheduleRealInfo schedule, String conductor, String conductorName) {
7545   - if (conductor.indexOf("-") != -1)
7546   - conductor = conductor.split("-")[1];
7547   - schedule.setsGh(conductor);
7548   - schedule.setsName(conductorName);
7549   - }
7550   -
7551   - @Override
7552   - public List<ScheduleRealInfo> queryUserInfo(String line, String date, String state) {
7553   - List<ScheduleRealInfo> scheduleRealInfos = new ArrayList<>();
7554   - List<Object[]> objects = null;
7555   - if (state.equals("2")) {
7556   - objects = scheduleRealInfoRepository.queryUserInfo2(line, date);
7557   - for (Object[] objs : objects) {
7558   - ScheduleRealInfo scheduleRealInfo = new ScheduleRealInfo();
7559   - scheduleRealInfo.setId((Long)objs[0]);
7560   - scheduleRealInfo.setjGh((String)objs[1]);
7561   - scheduleRealInfo.setClZbh((String)objs[2]);
7562   - scheduleRealInfo.setLpName((String)objs[3]);
7563   - scheduleRealInfo.setjName((String)objs[4]);
7564   -
7565   - scheduleRealInfos.add(scheduleRealInfo);
7566   - }
7567   - } else {
7568   - objects = scheduleRealInfoRepository.queryUserInfo3(line, date);
7569   - for (Object[] objs : objects) {
7570   - ScheduleRealInfo scheduleRealInfo = new ScheduleRealInfo();
7571   - scheduleRealInfo.setId((Long)objs[0]);
7572   - scheduleRealInfo.setClZbh((String)objs[1]);
7573   -
7574   - scheduleRealInfos.add(scheduleRealInfo);
7575   - }
7576   - }
7577   -
7578   - return scheduleRealInfos;
7579   - }
7580   -
7581   - @Override
7582   - public List<ScheduleRealInfo> queryUserInfoPx(String line, String date, String state, String type) {
7583   -// List<ScheduleRealInfo> list=new ArrayList<ScheduleRealInfo>();
7584   - state = state + "";
7585   - String lpname = state;
7586   - String px = type;
7587   - if (state.equals("lpName")) {
7588   - state = state + "+1";
7589   - type = "ASC";
7590   - }
7591   - String minfcsj = "02:00";
7592   - List<Line> lineList = lineRepository.findLineByCode(line);
7593   - if (lineList.size() > 0) {
7594   - String sqlMinYysj = "select start_opt from bsth_c_line_config where "
7595   - + " id = ("
7596   - + "select max(id) from bsth_c_line_config where line ='" + lineList.get(0).getId() + "'"
7597   - + ")";
7598   - minfcsj = jdbcTemplate.queryForObject(sqlMinYysj, String.class);
7599   - }
7600   - String sqlPlan = "select * from (select * from ("
7601   - + " select min(s.id) as id,s.j_Gh as jGh,s.cl_Zbh as clZbh, "
7602   - + " s.lp_Name as lpName,min(s.j_Name) as jName,max(s.schedule_date_str) as dateStr ,"
7603   - + " min(s.fcsj) as fcsj,1 as px from bsth_c_s_sp_info_real s where "
7604   - + " s.xl_Bm = '" + line + "' and s.schedule_date_str ='" + date + "'"
7605   - + " GROUP BY s.j_Gh,s.cl_Zbh,s.lp_Name) x where x.fcsj >'" + minfcsj + "'"
7606   - + " UNION "
7607   - + " select * from ( select min(s.id) as id,s.j_Gh as jGh,s.cl_Zbh as clZbh, "
7608   - + " s.lp_Name as lpName,min(s.j_Name) as jName, max(s.schedule_date_str) as dateStr,"
7609   - + " min(s.fcsj) as fcsj,2 as px from bsth_c_s_sp_info_real s "
7610   - + " where s.xl_Bm = '" + line + "' and s.schedule_date_str ='" + date + "'"
7611   - + " GROUP BY s.j_Gh,s.cl_Zbh,s.lp_Name"
7612   - + " ) y where y.fcsj <='" + minfcsj + "') z order by (" + state + "),dateStr,px,fcsj " + type;
7613   - List<ScheduleRealInfo> list = jdbcTemplate.query(sqlPlan,
7614   - new RowMapper<ScheduleRealInfo>() {
7615   - @Override
7616   - public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
7617   - ScheduleRealInfo t = new ScheduleRealInfo();
7618   - t.setId(rs.getLong("id"));
7619   - t.setjGh(rs.getString("jGh"));
7620   - t.setClZbh(rs.getString("clZbh"));
7621   - t.setLpName(rs.getString("lpName"));
7622   - t.setjName(rs.getString("jName"));
7623   - t.setFcsj(rs.getString("fcsj"));
7624   - return t;
7625   - }
7626   - });
7627   - if (lpname.equals("lpName")) {
7628   -
7629   - List<ScheduleRealInfo> listNew = new ArrayList<ScheduleRealInfo>();
7630   - Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
7631   -// if (px.equals("desc")) {
7632   - int zt = 0;
7633   - for (int l = 0; l < 2; l++) {
7634   - for (int i = 0; i < list.size(); i++) {
7635   - ScheduleRealInfo t = list.get(i);
7636   - if (t.getLpName().indexOf("+") != -1) {
7637   - if (zt == 0) {
7638   - listNew.add(t);
7639   - }
7640   - } else if (pattern.matcher(t.getLpName()).matches()) {
7641   - if (zt == 1) {
7642   - listNew.add(t);
7643   - }
7644   - } else {
7645   - continue;
7646   - }
7647   - }
7648   - zt++;
7649   - }
7650   -
7651   - Collections.sort(list, new ComparableLp());
7652   - for (int i = 0; i < list.size(); i++) {
7653   - ScheduleRealInfo t = list.get(i);
7654   - if (t.getLpName().indexOf("+") != -1) {
7655   - continue;
7656   - } else if (pattern.matcher(t.getLpName()).matches()) {
7657   - continue;
7658   - } else {
7659   - listNew.add(t);
7660   - }
7661   - }
7662   - return listNew;
7663   - } else {
7664   - return list;
7665   - }
7666   -
7667   - }
7668   -
7669   - /**
7670   - *
7671   - */
7672   - @Override
7673   - public List<ScheduleRealInfo> exportWaybill(String jName,String jGh, String clZbh, String lpName, String date, String line) {
7674   - ReportUtils ee = new ReportUtils();
7675   - ReportRelatedUtils rru = new ReportRelatedUtils();
7676   - List<Iterator<?>> list = new ArrayList<Iterator<?>>();
7677   - List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.queryListWaybillXcld(jGh, clZbh, lpName, date, line);
7678   - List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
7679   -// List<ScheduleRealInfo> scheduleRealInfos=scheduleRealInfoRepository.queryListWaybillXcld(jName, clZbh, lpName, date, line);
7680   - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
7681   - for (int i = 0; i < scheduleRealInfos.size(); i++) {
7682   - ScheduleRealInfo s = scheduleRealInfos.get(i);
7683   - Set<ChildTaskPlan> cts = s.getcTasks();
7684   - if (cts != null && cts.size() > 0) {
7685   - lists.add(s);
7686   - } else {
7687   - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
7688   - lists.add(s);
7689   - }
7690   - }
7691   - }
7692   - DecimalFormat format = new DecimalFormat("0.00");
7693   -// int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName);
7694   -// int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName);
7695   - //计算里程和班次数,并放入Map里
7696   - Map<String, Object> map = this.MapById(scheduleRealInfos.get(0).getId());
7697   -
7698   - map.put("jhlc", Arith.add(culateMieageService.culateJhgl(scheduleRealInfos), culateMieageService.culateJhJccgl(scheduleRealInfos)));
7699   - map.put("remMileage", culateMieageService.culateLbgl(scheduleRealInfos));
7700   - map.put("addMileage", culateMieageService.culateLjgl(lists));
7701   - double yygl = Arith.add(culateMieageService.culateSjgl(lists), culateMieageService.culateLjgl(lists));
7702   - map.put("yygl", yygl);
7703   - double ksgl = Arith.add(culateMieageService.culateKsgl(scheduleRealInfos), culateMieageService.culateJccgl(lists));
7704   - map.put("ksgl", ksgl);
7705   - map.put("realMileage", Arith.add(yygl, ksgl));
7706   - map.put("jhbc", culateMieageService.culateJhbc(scheduleRealInfos, ""));
7707   - map.put("cjbc", culateMieageService.culateLbbc(scheduleRealInfos));
7708   - map.put("ljbc", culateMieageService.culateLjbc(lists, ""));
7709   - int sjbc = culateMieageService.culateLjbc(lists, "") + culateMieageService.culateSjbc(lists, "");
7710   - map.put("sjbc", sjbc);
7711   -// map=new HashMap<String,Object>();
7712   -
7713   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
7714   - String minfcsj = "02:00";
7715   - List<Line> lineList = lineRepository.findLineByCode(line);
7716   - if (lineList.size() > 0) {
7717   - String sqlMinYysj = "select start_opt from bsth_c_line_config where "
7718   - + " id = ("
7719   - + "select max(id) from bsth_c_line_config where line ='" + lineList.get(0).getId() + "'"
7720   - + ")";
7721   - minfcsj = jdbcTemplate.queryForObject(sqlMinYysj, String.class);
7722   - }
7723   - String[] minSjs = minfcsj.split(":");
7724   - Long minSj = Long.parseLong(minSjs[0]) * 60 + Long.parseLong(minSjs[1]);
7725   -
7726   -
7727   - for (int i = 0; i < scheduleRealInfos.size(); i++) {
7728   - ScheduleRealInfo s = scheduleRealInfos.get(i);
7729   - String[] fcsj = s.getFcsj().split(":");
7730   - Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
7731   -
7732   - Long fscjT = 0L;
7733   - if (fcsjL < minSj) {
7734   - Calendar calendar = new GregorianCalendar();
7735   - calendar.setTime(s.getScheduleDate());
7736   - calendar.add(calendar.DATE, 1);
7737   - s.setScheduleDate(calendar.getTime());
7738   - try {
7739   - fscjT = sdf.parse(sdf.format(s.getScheduleDate()) + " " + s.getFcsj()).getTime();
7740   - } catch (ParseException e) {
7741   - // TODO Auto-generated catch block
7742   - e.printStackTrace();
7743   - }
7744   -
7745   - } else {
7746   - try {
7747   - fscjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();
7748   - } catch (ParseException e) {
7749   - // TODO Auto-generated catch block
7750   - e.printStackTrace();
7751   - }
7752   - ;
7753   - }
7754   - s.setFcsjT(fscjT);
7755   - }
7756   - List<ScheduleRealInfo> listSchedule = new ArrayList<ScheduleRealInfo>();
7757   - Collections.sort(scheduleRealInfos, new ComparableReal());
7758   - for (int i = 0; i < scheduleRealInfos.size(); i++) {
7759   - ScheduleRealInfo s = scheduleRealInfos.get(i);
7760   - s.setAdjustExps(i + 1 + "");
7761   - String remarks = "";
7762   - if (s.getRemarks() != null) {
7763   - remarks += s.getRemarks();
7764   - }
7765   -
7766   - Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
7767   - if (!childTaskPlans.isEmpty()) {
7768   - s.setFcsjActual("");
7769   - s.setZdsjActual("");
7770   - s.setJhlc(0.0);
7771   - }
7772   -
7773   - if (s.isDestroy()) {
7774   - s.setFcsjActual("");
7775   - s.setZdsjActual("");
7776   - s.setJhlc(0.0);
7777   - remarks += "(烂班)";
7778   - s.setRemarks(remarks);
7779   - }
7780   -
7781   - listSchedule.add(s);
7782   - //计算营运里程,空驶里程
7783   - if (!childTaskPlans.isEmpty()) {
7784   -// Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
7785   - List<ChildTaskPlan> listit = new ArrayList<ChildTaskPlan>(childTaskPlans);
7786   - Collections.sort(listit, new ComparableChild());
7787   - for (int j = 0; j < listit.size(); j++) {
7788   - ScheduleRealInfo t = new ScheduleRealInfo();
7789   - ChildTaskPlan childTaskPlan = listit.get(j);
7790   - if (childTaskPlan.isDestroy()) {
7791   - t.setFcsjActual("");
7792   - t.setZdsjActual("");
7793   - t.setJhlc(0.0);
7794   - } else {
7795   - t.setFcsjActual(childTaskPlan.getStartDate());
7796   - t.setZdsjActual(childTaskPlan.getEndDate());
7797   - t.setJhlc(Double.parseDouble(String.valueOf(childTaskPlan.getMileage())));
7798   - }
7799   - t.setQdzName(childTaskPlan.getStartStationName());
7800   - t.setZdzName(childTaskPlan.getEndStationName());
7801   - t.setRemarks(childTaskPlan.getRemarks());
7802   - t.setAdjustExps("子");
7803   - t.setjGh("");
7804   - t.setjName("");
7805   - t.setsGh("");
7806   - t.setsName("");
7807   - listSchedule.add(t);
7808   - }
7809   - }
7810   - }
7811   - Map<String, Object> maps;
7812   - for (ScheduleRealInfo scheduleRealInfo : listSchedule) {
7813   - maps = new HashMap<String, Object>();
7814   - try {
7815   - scheduleRealInfo.setjName(scheduleRealInfo.getjGh() + scheduleRealInfo.getjName());
7816   - scheduleRealInfo.setsName(scheduleRealInfo.getsGh() + scheduleRealInfo.getsName());
7817   - maps = rru.getMapValue(scheduleRealInfo);
7818   - maps.put("bcs", scheduleRealInfo.getAdjustExps());
7819   - String zdsj = scheduleRealInfo.getZdsj();
7820   - String zdsjActual = scheduleRealInfo.getZdsjActual();
7821   - if (zdsj != null && zdsjActual != null &&
7822   - !zdsj.equals(zdsjActual) &&
7823   - !zdsj.equals("") &&
7824   - !zdsjActual.equals("")) {
7825   - int zdsjT = Integer.valueOf(zdsj.split(":")[0]) * 60 + Integer.valueOf(zdsj.split(":")[1]);
7826   - int zdsjAT = Integer.valueOf(zdsjActual.split(":")[0]) * 60 + Integer.valueOf(zdsjActual.split(":")[1]);
7827   - if (zdsj.compareTo(zdsjActual) > 0) {
7828   - if (zdsjT - zdsjAT > 1000) {
7829   - maps.put("fast", "");
7830   - maps.put("slow", zdsjAT - zdsjT + 1440);
7831   - } else {
7832   - maps.put("fast", TimeUtils.getTimeDifference(zdsj, zdsjActual));
7833   - maps.put("slow", "");
7834   - }
7835   - } else {
7836   - if (zdsjAT - zdsjT > 1000) {
7837   - maps.put("fast", zdsjT - zdsjAT + 1440);
7838   - maps.put("slow", "");
7839   - } else {
7840   - maps.put("fast", "");
7841   - maps.put("slow", TimeUtils.getTimeDifference(zdsj, zdsjActual));
7842   - }
7843   - }
7844   - } else {
7845   - maps.put("fast", "");
7846   - maps.put("slow", "");
7847   - }
7848   - listMap.add(maps);
7849   - } catch (Exception e) {
7850   - e.printStackTrace();
7851   - }
7852   - }
7853   -
7854   - String xls = "";
7855   - if (map.get("type").toString().equals("0")) {
7856   - xls = "waybill_minhang.xls";
7857   - } else {
7858   - xls = "waybill_minhang_dl.xls";
7859   - }
7860   -
7861   -
7862   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
7863   -
7864   - list.add(listMap.iterator());
7865   - ee.excelReplace(list, new Object[]{scheduleRealInfos.get(0), map}, path + "mould/" + xls,
7866   - path + "export/" + date + "-" + jName + "-" + clZbh + "-" + lpName + "-行车路单.xls");
7867   - return scheduleRealInfos;
7868   - }
7869   -
7870   - @Override
7871   - public List<Map<String, Object>> dailyInfo(String line, String date, String type) {
7872   - DecimalFormat format = new DecimalFormat("0.00");
7873   - ReportUtils ee = new ReportUtils();
7874   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
7875   - List<Map<String, Object>> list = scheduleRealInfoRepository.dailyInfo(line, date);
7876   -
7877   - double totalZGL = 0, totalKSGL = 0, totalYH = 0;
7878   - int totalBCS = 0;
7879   - for (int i = 0; i < list.size(); i++) {
7880   - String zgl = format.format(Double.parseDouble(list.get(i).get("zgl") == null ? "0" : list.get(i).get("zgl").toString()));
7881   - String ksgl = format.format(Double.parseDouble(list.get(i).get("ksgl") == null ? "0" : list.get(i).get("ksgl").toString()));
7882   - if (type.equals("export")) {
7883   - totalZGL += Double.parseDouble(zgl);
7884   - totalKSGL += Double.parseDouble(ksgl);
7885   - totalBCS += Integer.parseInt(list.get(i).get("bcs").toString());
7886   - }
7887   - list.get(i).put("zgl", zgl);
7888   - list.get(i).put("ksgl", ksgl);
7889   - }
7890   - if (type.equals("export")) {
7891   - Map<String, Object> map = new HashMap<String, Object>();
7892   - map.put("line", line);
7893   - map.put("date", date);
7894   - map.put("totalZGL", totalZGL);
7895   - map.put("totalKSGL", totalKSGL);
7896   - map.put("totalYH", totalYH);
7897   - map.put("totalBCS", totalBCS);
7898   -
7899   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
7900   -
7901   - listI.add(list.iterator());
7902   - try {
7903   - ee.excelReplace(listI, new Object[]{map}, path + "mould/daily.xls",
7904   - path + "export/班次日报" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
7905   - } catch (ParseException e) {
7906   - e.printStackTrace();
7907   - }
7908   - }
7909   - return list;
7910   - }
7911   -
7912   - @Override
7913   - public List<Object[]> historyMessage(String line, String date, String code, String type) {
7914   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
7915   -
7916   - long d = 0;
7917   - long t = 0;
7918   - if (date.length() > 0) {
7919   - try {
7920   - d = sdf.parse(date + " 00:00:00").getTime();
7921   - t = sdf.parse(date + " 23:59:59").getTime();
7922   - } catch (ParseException e) {
7923   - // TODO Auto-generated catch block
7924   - e.printStackTrace();
7925   - }
7926   -
7927   - }
7928   - String device = "";
7929   - String device2 ="";
7930   - long qyrqTime=0l;
7931   - if (!code.equals("")) {
7932   - try {
7933   - List<CarDevice> deviceList=carDeviceRepository.findCarCode(code, sdf.parse(date+ " 00:00:00"));
7934   - if(deviceList.size()>0){
7935   - device=deviceList.get(0).getOldDeviceNo();
7936   - Date qyrq=deviceList.get(0).getQyrq();
7937   - qyrqTime=qyrq.getTime();
7938   - if(qyrqTime<t){
7939   - device2=deviceList.get(0).getNewDeviceNo();
7940   - }
7941   - }else{
7942   - device = BasicData.deviceId2NbbmMap.inverse().get(code);
7943   - }
7944   - } catch (ParseException e) {
7945   - // TODO Auto-generated catch block
7946   - e.printStackTrace();
7947   - }
7948   - }
7949   - List<Object[]> list=new ArrayList<Object[]>();
7950   -
7951   - List<Object[]> list0 =scheduleRealInfoRepository.historyMessage(line, d, t, device);
7952   - for (Object[] obj : list0) {
7953   - if (obj != null) {
7954   - if(code.equals("")){
7955   - if (BasicData.deviceId2NbbmMap.get(obj[0].toString()) == null) {
7956   - List<CarDevice> carDeviceList = new ArrayList<CarDevice>();
7957   - try {
7958   - carDeviceList = carDeviceRepository.findCarDevice(obj[0].toString(), new Date(Long.parseLong(obj[3].toString())));
7959   - //启用日期大于营运日期 还是根据旧设备号查询
7960   - if(carDeviceList.size()==0){
7961   - carDeviceList = carDeviceRepository.findCarOldDevice(obj[0].toString(), new Date(Long.parseLong(obj[3].toString())));
7962   - }
7963   - } catch (Exception e) {
7964   - // TODO Auto-generated catch block
7965   - e.printStackTrace();
7966   - }
7967   - if (carDeviceList.size() > 0) {
7968   - obj[0] = carDeviceList.get(0).getClZbh();
7969   - } else {
7970   - obj[0] = BasicData.deviceId2NbbmMap.get(obj[0].toString());
7971   - }
7972   - } else {
7973   - obj[0] = BasicData.deviceId2NbbmMap.get(obj[0].toString());
7974   - }
7975   - }else{
7976   - obj[0]=code;
7977   - }
7978   -
7979   - obj[3] = sdf.format(new Date(Long.parseLong(obj[3].toString())));
7980   - obj[4] = BasicData.lineCode2NameMap.get(line);
7981   - }
7982   - }
7983   - list.addAll(list0);
7984   - if(!device2.equals("")){
7985   - List<Object[]> list1 =scheduleRealInfoRepository.historyMessage(line, d, t, device2);
7986   - for (Object[] obj : list1) {
7987   - if (obj != null) {
7988   - obj[0] =code;
7989   - obj[3] = sdf.format(new Date(Long.parseLong(obj[3].toString())));
7990   - obj[4] = BasicData.lineCode2NameMap.get(line);
7991   - }
7992   - }
7993   - list.addAll(list1);
7994   - }
7995   -
7996   - if (type != null && type.length() != 0 && type.equals("export")) {
7997   - String lineName = BasicData.lineCode2NameMap.get(line);
7998   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
7999   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
8000   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
8001   - Map<String, Object> m = new HashMap<String, Object>();
8002   - ReportUtils ee = new ReportUtils();
8003   - List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
8004   - for (int i = 0; i < list.size(); i++) {
8005   - Map<String, Object> map = new HashMap<String, Object>();
8006   - Object[] obj = list.get(i);
8007   - map.put("num", i + 1);
8008   - map.put("line", obj[4]);
8009   - map.put("clZbh", obj[0]);
8010   - map.put("sender", obj[1]);
8011   - map.put("date", obj[3]);
8012   - map.put("text", obj[2]);
8013   - newList.add(map);
8014   - }
8015   - try {
8016   - listI.add(newList.iterator());
8017   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
8018   - ee.excelReplace(listI, new Object[]{m}, path + "mould/historyMessage.xls",
8019   - path + "export/" + sdfSimple.format(sdfMonth.parse(date))
8020   - + "-" + lineName + "-调度历史消息.xls");
8021   - } catch (Exception e) {
8022   - // TODO: handle exception
8023   - e.printStackTrace();
8024   - }
8025   - }
8026   -
8027   - if (type != null && type.length() != 0 && type.equals("export_msg")) {
8028   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
8029   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
8030   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
8031   - Map<String, Object> m = new HashMap<String, Object>();
8032   - ReportUtils ee = new ReportUtils();
8033   - List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
8034   - for (int i = 0; i < list.size(); i++) {
8035   - Map<String, Object> map = new HashMap<String, Object>();
8036   - Object[] obj = list.get(i);
8037   - map.put("num", i + 1);
8038   - map.put("line", obj[4]);
8039   - map.put("clZbh", obj[0]);
8040   - map.put("sender", obj[1]);
8041   - map.put("date", obj[3]);
8042   - map.put("text", obj[2]);
8043   - newList.add(map);
8044   - }
8045   - try {
8046   - listI.add(newList.iterator());
8047   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
8048   - ee.excelReplace(listI, new Object[]{m}, path + "mould/message.xls",
8049   - path + "export/调度消息分析" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
8050   - } catch (Exception e) {
8051   - // TODO: handle exception
8052   - e.printStackTrace();
8053   - }
8054   - }
8055   - return list;
8056   - }
8057   -
8058   - @Override
8059   - public Map<Integer, Integer> trustStatus(String lineStr) {
8060   - List<String> lineList = Lists.newArrayList(Splitter.on(',').trimResults().omitEmptyStrings().split(lineStr));
8061   -
8062   - Map<Integer, Integer> map = new HashMap<>();
8063   - return map;
8064   - }
8065   -
8066   - @Override
8067   - public Map<String, Object> realOutAdjust(Map<String, String> map) {
8068   - Map<String, Object> rs = new HashMap<>();
8069   - List<ScheduleRealInfo> ts = new ArrayList<>();
8070   - try {
8071   - // 维修上报
8072   - if (StringUtils.isNotBlank(map.get("reportTypes"))) {
8073   - Map<String, Object> param = new HashMap<String, Object>();
8074   - param.putAll(map);
8075   - rs = repairReport(param, false);
8076   - }
8077   -
8078   - Long id = Long.parseLong(map.get("id"));
8079   - String remarks = map.get("remarks"), fcsjActual = map.get("fcsjActual");
8080   -
8081   - ScheduleRealInfo sch = dayOfSchedule.get(id);
8082   -
8083   - LineConfig config = lineConfigData.get(sch.getXlBm());
8084   - //小于线路开始运营时间,则默认跨过24点
8085   - if (fcsjActual.compareTo(config.getStartOpt()) < 0) {
8086   - sch.setRealExecDate(fmtyyyyMMdd.print(sch.getScheduleDate().getTime() + DAY_TIME));
8087   - } else {
8088   - sch.setRealExecDate(sch.getScheduleDateStr());
8089   - }
8090   -
8091   - //日志记录
8092   - ScheduleModifyLogger.sftz(sch, fcsjActual, remarks);
8093   -
8094   - sch.setFcsjActualAll(fcsjActual);
8095   - sch.setRemarks(remarks);
8096   - sch.calcStatus();
8097   - //if(sch.isLate2()){
8098   - //取消应发未到标记
8099   - // sch.setLate2(false);
8100   - LateAdjustHandle.remove(sch);
8101   - //}
8102   -
8103   - dayOfSchedule.save(sch);
8104   -
8105   - ts.add(sch);
8106   -
8107   - rs.put("status", ResponseCode.SUCCESS);
8108   - rs.put("ts", ts);
8109   -
8110   - //通知页面刷新
8111   - sendUtils.refreshSch(ts);
8112   - } catch (Exception e) {
8113   - logger.error("", e);
8114   - rs.put("status", ResponseCode.ERROR);
8115   - }
8116   -
8117   - return rs;
8118   - }
8119   -
8120   - @Override
8121   - public Map<String, Object> revokeDestroy(Long id) {
8122   - Map<String, Object> rs = new HashMap<>();
8123   - try {
8124   - ScheduleRealInfo sch = dayOfSchedule.get(id);
8125   - if (sch.getStatus() != -1) {
8126   - rs.put("status", ResponseCode.ERROR);
8127   - rs.put("msg", "未烂班,无法撤销!");
8128   - } else {
8129   - //日志记录
8130   - ScheduleModifyLogger.cxlb(sch);
8131   -
8132   - sch.setStatus(0);
8133   - sch.setRemarks("");//清空备注
8134   - sch.setJhlc(sch.getJhlcOrig());
8135   -
8136   - //入库
8137   - dayOfSchedule.save(sch);
8138   - //重新计算当前执行班次
8139   - dayOfSchedule.reCalcExecPlan(sch.getClZbh());
8140   - rs.put("status", ResponseCode.SUCCESS);
8141   - rs.put("t", sch);
8142   -
8143   - }
8144   - } catch (Exception e) {
8145   - logger.error("", e);
8146   - rs.put("status", ResponseCode.ERROR);
8147   - }
8148   - return rs;
8149   - }
8150   -
8151   - @Override
8152   - public Map<String, Object> revokeRealOutgo(Long id) {
8153   - Map<String, Object> rs = new HashMap<>();
8154   - List<ScheduleRealInfo> ts = new ArrayList<>();
8155   -
8156   - try {
8157   - ScheduleRealInfo sch = dayOfSchedule.get(id);
8158   - if (sch.getFcsjActual() == null) {
8159   - rs.put("status", ResponseCode.ERROR);
8160   - rs.put("msg", "无实发时间,无法撤销!");
8161   - } else {
8162   - //日志记录
8163   - ScheduleModifyLogger.cxsf(sch);
8164   -
8165   - sch.clearFcsjActual();
8166   - rs.put("status", ResponseCode.SUCCESS);
8167   -
8168   - ts.add(sch);
8169   - rs.put("ts", ts);
8170   -
8171   - dayOfSchedule.save(sch);
8172   -
8173   - }
8174   - } catch (Exception e) {
8175   - logger.error("", e);
8176   - rs.put("status", ResponseCode.ERROR);
8177   - }
8178   - return rs;
8179   - }
8180   -
8181   - @Override
8182   - public Map<String, Object> spaceAdjust(Long[] ids, Integer space) {
8183   -
8184   - List<ScheduleRealInfo> list = new ArrayList<>(), ts = new ArrayList<>(), tempTs = null;
8185   - Map<String, Object> rs = new HashMap<>(), tempRs = new HashMap<>();
8186   - try {
8187   - ScheduleRealInfo sch, next;
8188   - for (Long id : ids) {
8189   - sch = dayOfSchedule.get(id);
8190   - if (null != sch)
8191   - list.add(sch);
8192   - }
8193   -
8194   - int size = list.size();
8195   - if (size == 0) {
8196   - rs.put("status", ResponseCode.ERROR);
8197   - } else {
8198   - // 按发车时间排序
8199   - Collections.sort(list, new ScheduleComparator.FCSJ());
8200   -
8201   - // 以第一个实际发车/待发时间为起点,调整间隔
8202   - sch = list.get(0);
8203   - Long st = sch.getFcsjActualTime() == null ? sch.getDfsjT() : sch.getFcsjActualTime(), plus = space * 60 * 1000L;
8204   -
8205   - for (int i = 1; i < size; i++) {
8206   - st += plus;
8207   - sch = list.get(i);
8208   -
8209   - //调整待发
8210   - tempRs = outgoAdjust(sch.getId(), null, fmtHHmm.print(st), null, "3", null);
8211   -
8212   - if (null != tempRs && tempRs.get("ts") != null)
8213   - tempTs = (List<ScheduleRealInfo>) tempRs.get("ts");
8214   -
8215   - ts.addAll(tempTs);
8216   - }
8217   -
8218   - rs.put("status", ResponseCode.SUCCESS);
8219   - //返回最后一个班次,页面会全量刷新
8220   - rs.put("ts", ts);
8221   - }
8222   -
8223   - } catch (Exception e) {
8224   - logger.error("", e);
8225   - rs.put("status", ResponseCode.ERROR);
8226   - }
8227   - return rs;
8228   - }
8229   -
8230   - private static DateTimeFormatter fmtyyyyMMddHHmm = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm");
8231   -
8232   - @Transactional
8233   - @Override
8234   - public Map<String, Object> schInfoFineTune(Map<String, String> map) {
8235   - Map<String, Object> rs = new HashMap<>();
8236   - List<ScheduleRealInfo> ts = new ArrayList<>();
8237   - try {
8238   - // 维修上报
8239   - if (StringUtils.isNotBlank(map.get("reportTypes"))) {
8240   - Map<String, Object> param = new HashMap<String, Object>();
8241   - param.putAll(map);
8242   - rs = repairReport(param, false);
8243   - }
8244   -
8245   - Long id = Long.parseLong(map.get("id"));
8246   - String remarks = map.get("remarks");
8247   -
8248   - ScheduleRealInfo sch = dayOfSchedule.get(id);
8249   -
8250   - if (null == sch) {
8251   - rs.put("status", ResponseCode.ERROR);
8252   - rs.put("msg", "不存在的班次!");
8253   - return rs;
8254   - }
8255   -
8256   - //日志记录器
8257   - FcxxwtLogger fLog = FcxxwtLogger.start(sch, remarks);
8258   -
8259   - String clZbh = map.get("clZbh");
8260   - String jsy = map.get("jsy");
8261   - if (!clZbh.equals(sch.getClZbh())
8262   - || !jsy.equals(sch.getjGh() + "/" + sch.getjName()))
8263   - schModifyLog.saveChangetochange(sch, clZbh, jsy);//为换人换车情况表写入数据
8264   - /**
8265   - * 换车
8266   - */
8267   - if (StringUtils.isNotEmpty(clZbh) && !clZbh.equals(sch.getClZbh())) {
8268   - //换车
8269   - if (!carExist(sch.getGsBm(), clZbh)) {
8270   - rs.put("status", ResponseCode.ERROR);
8271   - rs.put("msg", "车辆 " + clZbh + " 不存在!");
8272   - return rs;
8273   - } else if (!sch.getGsBm().equals(BasicData.nbbm2CompanyCodeMap.get(clZbh))) {
8274   - rs.put("status", ResponseCode.ERROR);
8275   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到自编号为【" + clZbh + "】的车辆");
8276   - return rs;
8277   - } else {
8278   - fLog.log("换车", sch.getClZbh(), clZbh);
8279   - dayOfSchedule.changeCar(sch, clZbh);
8280   - }
8281   - }
8282   -
8283   - if(StringUtils.isBlank(jsy) || "/".equals(StringUtils.trim(jsy))){
8284   - rs.put("status", ResponseCode.ERROR);
8285   - rs.put("msg", "无效的参数【驾驶员】");
8286   - return rs;
8287   - }
8288   -
8289   - /**
8290   - * 换驾驶员
8291   - */
8292   - if (StringUtils.isNotEmpty(jsy)) {
8293   - String jGh = jsy.split("/")[0];
8294   - String jName = getPersonName(sch.getGsBm(), jGh);
8295   - if (StringUtils.isEmpty(jName)) {
8296   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + jGh + "】的驾驶员");
8297   - rs.put("status", ResponseCode.ERROR);
8298   - return rs;
8299   - } else if (!jGh.equals(sch.getjGh())) {
8300   - fLog.log("换驾驶员", sch.getjGh() + "/" + sch.getjName(), jsy);
8301   - persoChange(sch, jGh);
8302   - }
8303   - }
8304   -
8305   - /**
8306   - * 换售票员
8307   - */
8308   - String spy = map.get("spy");
8309   - if (StringUtils.isNotEmpty(spy) && !StringUtils.trim(spy).equals("/")) {
8310   - String sGh = spy.split("/")[0];
8311   -
8312   - String sName = getPersonName(sch.getGsBm(), sGh);
8313   - if (StringUtils.isEmpty(sName)) {
8314   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + sGh + "】的售票员");
8315   - rs.put("status", ResponseCode.ERROR);
8316   - return rs;
8317   - } else if (!sGh.equals(sch.getsGh())) {
8318   - fLog.log("换售票员", sch.getsGh() + "/" + sch.getsName(), spy);
8319   - persoChangeSPY(sch, sGh);
8320   - }
8321   - } else if (StringUtils.isNotEmpty(sch.getsGh())) {
8322   - fLog.log("撤销售票员");
8323   - sch.setsGh("");
8324   - sch.setsName("");
8325   - }
8326   -
8327   - LineConfig config = lineConfigData.get(sch.getXlBm());
8328   - /**
8329   - * 调整实发
8330   - */
8331   - String fcsjActual = map.get("fcsjActual");
8332   - if (StringUtils.isNotBlank(fcsjActual)
8333   - && !fcsjActual.equals(sch.getFcsjActual())) {
8334   -
8335   - //long t = 0L;
8336   - //小于线路开始运营时间,则默认跨过24点
8337   - long t = schAttrCalculator.getTime(sch.getScheduleDateStr(), fcsjActual, config);
8338   - /* if (fcsjActual.compareTo(config.getStartOpt()) < 0)
8339   - t = fmtyyyyMMddHHmm.parseMillis(fmtyyyyMMdd.print(sch.getScheduleDate().getTime() + DAY_TIME) + fcsjActual);
8340   - else
8341   - t = fmtyyyyMMddHHmm.parseMillis(sch.getScheduleDateStr() + fcsjActual);*/
8342   -
8343   - fLog.log("调整实发时间", sch.getFcsjActual(), fcsjActual);
8344   - sch.setFcsjActualAll(t);
8345   - //取消应发未到标记
8346   - //if(sch.isLate2()){
8347   - // sch.setLate2(false);
8348   - LateAdjustHandle.remove(sch);
8349   - //}
8350   - } else if (StringUtils.isNotEmpty(sch.getFcsjActual()) && StringUtils.isEmpty(fcsjActual)) {
8351   - fLog.log("撤销实发时间", sch.getFcsjActual(), "");
8352   - //撤销实发
8353   - revokeRealOutgo(sch.getId());
8354   - }
8355   -
8356   - /**
8357   - * 调整实达
8358   - */
8359   - String zdsjActual = map.get("zdsjActual");
8360   - if (StringUtils.isNotBlank(zdsjActual)
8361   - && !zdsjActual.equals(sch.getZdsjActual())) {
8362   -
8363   - //调整实达
8364   - fLog.log("调整实达时间", sch.getZdsjActual(), zdsjActual);
8365   -
8366   - long t = schAttrCalculator.getTime(sch.getScheduleDateStr(), zdsjActual, config);
8367   - sch.setZdsjActualAll(t);
8368   - //路牌下一班起点到达时间
8369   - ScheduleRealInfo next = dayOfSchedule.nextByLp2(sch);
8370   - if (null != next) {
8371   - next.setQdzArrDatesj(zdsjActual);
8372   - next.setLate2(false);
8373   - ts.add(next);
8374   - }
8375   -
8376   - //重新计算车辆执行班次
8377   - dayOfSchedule.reCalcExecPlan(sch.getClZbh());
8378   - //取消应发未到标记
8379   - LateAdjustHandle.remove(sch);
8380   - } else if (StringUtils.isNotEmpty(sch.getZdsjActual()) && StringUtils.isEmpty(zdsjActual)) {
8381   - //清除实达时间
8382   - fLog.log("撤销实达时间", sch.getZdsjActual(), "");
8383   - sch.clearZdsjActual();
8384   - //清除路牌下一班起点到达时间
8385   - ScheduleRealInfo next = dayOfSchedule.nextByLp(sch);
8386   - if (null != next) {
8387   - next.setQdzArrDatesj(null);
8388   - ts.add(next);
8389   - }
8390   - //重新计算车辆执行班次
8391   - dayOfSchedule.reCalcExecPlan(sch.getClZbh());
8392   - }
8393   -
8394   - /**
8395   - * 备注
8396   - */
8397   - sch.setRemarks(remarks);
8398   -
8399   - /**
8400   - * 烂班
8401   - */
8402   - if (map.get("status") != null
8403   - && Integer.parseInt(map.get("status").toString()) == -1) {
8404   - destroy(sch.getId() + "", "", map.get("adjustExps").toString(), null);
8405   - fLog.log("烂班");
8406   - }
8407   -
8408   - /**
8409   - * 修改班次里程
8410   - */
8411   - String jhlc = map.get("jhlc");
8412   - if (StringUtils.isNotEmpty(jhlc)) {
8413   - double jhlcNum = Double.parseDouble(jhlc);
8414   - //烂班
8415   - if (jhlcNum == 0 && sch.getJhlcOrig() != 0 && !sch._isInout() && !sch.isDestroy()) {
8416   - destroy(sch.getId() + "", "", map.get("adjustExps").toString(), null);
8417   - fLog.log("里程设置为0,自动烂班");
8418   - } else if (jhlcNum != sch.getJhlc()) {
8419   - fLog.log("设置里程", sch.getJhlc(), jhlcNum);
8420   - sch.setJhlc(jhlcNum);
8421   - //临加班次,实际计划一起改
8422   - if (sch.isSflj())
8423   - sch.setJhlcOrig(jhlcNum);
8424   - }
8425   - }
8426   -
8427   - /**
8428   - * 修改班次类型
8429   - */
8430   - String bcType = map.get("bcType");
8431   - if (StringUtils.isNotEmpty(bcType) && !bcType.equals(sch.getBcType())) {
8432   - fLog.log("修改班次类型", sch.getBcType(), bcType);
8433   - sch.setBcType(bcType);
8434   - }
8435   -
8436   - //重新计算班次状态
8437   - sch.calcStatus();
8438   - dayOfSchedule.save(sch);
8439   - //页面需要更新的班次信息
8440   - ts.add(sch);
8441   -
8442   - rs.put("status", ResponseCode.SUCCESS);
8443   - rs.put("ts", ts);
8444   -
8445   - //日志记录结束
8446   - fLog.end();
8447   - } catch (Exception e) {
8448   - logger.error("", e);
8449   - rs.put("status", ResponseCode.ERROR);
8450   - }
8451   - return rs;
8452   - }
8453   -
8454   - @Override
8455   - public Map<String, Object> outgoAdjustAll(String params) {
8456   - Map<String, Object> rs = new HashMap<>();
8457   - try {
8458   - JSONArray jsonArray = JSONArray.parseArray(params);
8459   -
8460   - ScheduleRealInfo schedule = null;
8461   - JSONObject jsonObj;
8462   - String dfsj;
8463   - long id;
8464   - for (int i = 0; i < jsonArray.size(); i++) {
8465   - jsonObj = jsonArray.getJSONObject(i);
8466   - dfsj = jsonObj.getString("t");
8467   - id = jsonObj.getLong("id");
8468   - schedule = dayOfSchedule.get(id);
8469   -
8470   - if (schedule != null)
8471   - outgoAdjust(id, null, dfsj, null, "2", null);
8472   - }
8473   -
8474   - rs.put("status", ResponseCode.SUCCESS);
8475   - //将更新的最后一个班次返回,页面会做全量刷新
8476   - rs.put("t", schedule);
8477   - } catch (Exception e) {
8478   - logger.error("", e);
8479   - rs.put("status", ResponseCode.ERROR);
8480   - }
8481   - return rs;
8482   - }
8483   -
8484   - @Override
8485   - public Map<String, Object> findRouteByLine(String lineCode) {
8486   - Map<String, Object> map = new HashMap<>();
8487   - //上行
8488   - Integer lineId = BasicData.lineId2CodeMap.inverse().get(lineCode);
8489   - map.put("line.id_eq", lineId);
8490   - map.put("directions_eq", 0);
8491   - List<Map<String, Object>> upList = sectionRouteService.getSectionRoute(map);
8492   -
8493   - //下行
8494   - map.put("directions_eq", 1);
8495   - List<Map<String, Object>> downList = sectionRouteService.getSectionRoute(map);
8496   -
8497   - Map<String, Object> rs = new HashMap<>();
8498   -
8499   - String upVectors = "", vec;
8500   - //拼接上行路段
8501   - for (Map<String, Object> temp : upList) {
8502   - vec = temp.get("sectionBsectionVector").toString();
8503   - upVectors += vec.subSequence(11, vec.length() - 2) + " ";
8504   - }
8505   -
8506   - //拼接下行路段
8507   - String downVectors = "";
8508   - for (Map<String, Object> temp : downList) {//LINESTRING(
8509   - vec = temp.get("sectionBsectionVector").toString();
8510   - downVectors += vec.subSequence(11, vec.length() - 2) + " ";
8511   - }
8512   -
8513   -
8514   - rs.put("up", upVectors);
8515   - //上行gcj
8516   - rs.put("up_gcj", BdToGcjString(upVectors));
8517   - rs.put("down", downVectors);
8518   - //下行gcj
8519   - rs.put("down_gcj", BdToGcjString(downVectors));
8520   - rs.put("lineId", lineId);
8521   -
8522   - return rs;
8523   - }
8524   -
8525   - /**
8526   - * @param @param bdStr
8527   - * @throws
8528   - * @Title: BdToGcjString
8529   - * @Description: TODO(将百度路由字符串 转 成GCJ 字符串)
8530   - */
8531   - public String BdToGcjString(String bdStr) {
8532   - String[] array = bdStr.split(","), subArray;
8533   - if (array.length == 0 || bdStr.length() < 2)
8534   - return "";
8535   -
8536   - String gcjStr = "";
8537   - TransGPS.Location location;
8538   - for (String crd : array) {
8539   - subArray = crd.split(" ");
8540   - if (subArray.length != 2)
8541   - continue;
8542   - location = TransGPS.bd_decrypt(TransGPS.LocationMake(Double.parseDouble(subArray[0]), Double.parseDouble(subArray[1])));
8543   -
8544   - gcjStr += location.getLng() + " " + location.getLat() + ",";
8545   - }
8546   -
8547   - return gcjStr.substring(0, gcjStr.length() - 1);
8548   - }
8549   -
8550   - public List<Map<String, String>> findLine(String line) {
8551   - List<Line> listLine = lineRepository.findLine("%" + line + "%");
8552   - List<Map<String, String>> list = new ArrayList<Map<String, String>>();
8553   - Map<String, String> map;
8554   - for (Line temp : listLine) {
8555   - if (temp != null) {
8556   - String xlName = temp.getName();
8557   - if (xlName.indexOf(line) != -1) {
8558   - map = new HashMap<String, String>();
8559   - map.put("id", temp.getLineCode());
8560   - map.put("text", xlName);
8561   - list.add(map);
8562   - }
8563   - }
8564   - }
8565   - return list;
8566   - }
8567   -
8568   - public List<Map<String, String>> findLpName(String lpName) {
8569   - List<GuideboardInfo> listLpName = guideboardInfoRepository.findLpName("%" + lpName + "%");
8570   - List<Map<String, String>> list = new ArrayList<Map<String, String>>();
8571   - Map<String, String> map;
8572   - for (GuideboardInfo temp : listLpName) {
8573   - if (temp != null) {
8574   - String lp = temp.getLpName();
8575   - if (lp.indexOf(lpName) != -1) {
8576   - map = new HashMap<String, String>();
8577   - map.put("id", lp);
8578   - map.put("text", lp);
8579   - list.add(map);
8580   - }
8581   - }
8582   - }
8583   - return list;
8584   - }
8585   -
8586   - @Override
8587   - public Map<String, Object> findKMBC2(String jName, String clZbh, String date) {
8588   - List<ScheduleRealInfo> list = scheduleRealInfoRepository.queryListWaybill3(jName, clZbh, date, "", "");
8589   -
8590   - DecimalFormat format = new DecimalFormat("0.00");
8591   -// int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName);
8592   -// int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName);
8593   - int jhbc = 0, cjbc = 0, ljbc = 0;
8594   - double jhlc = 0, yygl = 0, ksgl = 0, tempJhlc = 0;
8595   - float addMileage = 0l, remMileage = 0l;
8596   - String j_Name = "";
8597   - Map<String, Object> map = new HashMap<String, Object>();
8598   - for (ScheduleRealInfo scheduleRealInfo : list) {
8599   - if (scheduleRealInfo != null) {
8600   - j_Name = scheduleRealInfo.getjName();
8601   - //计划里程(主任务过滤掉临加班次),
8602   - //烂班里程(主任务烂班),
8603   - //临加里程(主任务临加),
8604   - //计划班次,烂班班次,增加班次
8605   - tempJhlc = scheduleRealInfo.getJhlc() == null ? 0 : scheduleRealInfo.getJhlc();
8606   - if (scheduleRealInfo.isSflj()) {
8607   - addMileage += tempJhlc;
8608   - ljbc++;
8609   - } else {
8610   - jhlc += tempJhlc;
8611   - jhbc++;
8612   - if (scheduleRealInfo.getStatus() == -1) {
8613   - remMileage += tempJhlc;
8614   - cjbc++;
8615   - }
8616   - }
8617   - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
8618   - //计算营运里程,空驶里程
8619   - if (childTaskPlans.isEmpty()) {
8620   - if (scheduleRealInfo.getBcType().equals("in") || scheduleRealInfo.getBcType().equals("out")
8621   - || scheduleRealInfo.getBcType().equals("venting")) {
8622   - ksgl += tempJhlc;
8623   - } else {
8624   - yygl += tempJhlc;
8625   - }
8626   - } else {
8627   - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
8628   - while (it.hasNext()) {
8629   - ChildTaskPlan childTaskPlan = it.next();
8630   - if (childTaskPlan.getMileageType().equals("empty")) {
8631   - ksgl += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
8632   - } else {
8633   - yygl += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
8634   - }
8635   - }
8636   - }
8637   - }
8638   - }
8639   - map.put("j_name", j_Name);
8640   - map.put("jhlc", format.format(jhlc));
8641   - map.put("remMileage", format.format(remMileage));
8642   - map.put("addMileage", format.format(addMileage));
8643   - map.put("yygl", format.format(yygl));
8644   - map.put("ksgl", format.format(ksgl));
8645   - map.put("realMileage", format.format(yygl + ksgl));
8646   - map.put("jhbc", jhbc);
8647   - map.put("cjbc", cjbc);
8648   - map.put("ljbc", ljbc);
8649   - map.put("sjbc", jhbc - cjbc + ljbc);
8650   - return map;
8651   - }
8652   -
8653   -
8654   - public Map<String, Object> findKMBC(String jGh, String clZbh,
8655   - String lpName, String date, String line) {
8656   - Map<String, Object> map = new HashMap<String, Object>();
8657   - List<ScheduleRealInfo> list = scheduleRealInfoRepository.queryListWaybillXcld(jGh, clZbh, lpName, date, line);
8658   - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
8659   - for (int i = 0; i < list.size(); i++) {
8660   - ScheduleRealInfo s = list.get(i);
8661   - Set<ChildTaskPlan> cts = s.getcTasks();
8662   - if (cts != null && cts.size() > 0) {
8663   - lists.add(s);
8664   - } else {
8665   - if (s.getFcsjActual() != null && s.getZdsjActual() != null) {
8666   - lists.add(s);
8667   - }
8668   - }
8669   - }
8670   - map.put("jhbc", culateService.culateJhbc(list, ""));//计划班次
8671   - map.put("jhlc", Arith.add(culateService.culateJhgl(list),
8672   - culateService.culateJhJccgl(list))); //计划总里程
8673   - map.put("cjbc", culateService.culateLbbc(list));//烂班班次
8674   - map.put("remMileage", culateService.culateLbgl(list)); //烂班公里
8675   - map.put("ljbc", culateService.culateLjbc(lists, ""));//临加班次
8676   - double ljgl = culateService.culateLjgl(lists);
8677   - map.put("addMileage", ljgl); //临加公里
8678   - map.put("sjbc", culateService.culateSjbc(lists, "") + culateService.culateLjbc(lists, ""));
8679   - double ksgl = culateService.culateKsgl(list);//子任务空驶公里
8680   - double jccgl = culateService.culateJccgl(lists);//空驶班次公里
8681   - map.put("ksgl", ksgl);//空驶公里
8682   - double sjgl = culateService.culateSjgl(lists);//实际营运公里
8683   - map.put("realMileage", Arith.add(Arith.add(ksgl, jccgl), Arith.add(sjgl, ljgl)));//总公里
8684   - map.put("zkslc", Arith.add(ksgl, jccgl));
8685   - map.put("jcclc", jccgl);
8686   - map.put("yygl", Arith.add(sjgl, ljgl)); //总营运公里
8687   - return map;
8688   - }
8689   -
8690   - public Map<String, Object> findKMBC_mh_2(String jGh, String clZbh,
8691   - String lpName, String date, String line) {
8692   - Map<String, Object> map = new HashMap<String, Object>();
8693   - List<ScheduleRealInfo> list = scheduleRealInfoRepository.queryListWaybillXcld(jGh, clZbh, lpName, date, line);
8694   - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
8695   - for (int i = 0; i < list.size(); i++) {
8696   - ScheduleRealInfo s = list.get(i);
8697   - if (s.isDestroy() && s.isReissue()) {
8698   - s.setRemark("");
8699   - s.setFcsjActual(s.getDfsj());
8700   - s.setZdsjActual(s.getZdsj());
8701   - s.setStatus(2);
8702   - s.setJhlc(s.getJhlcOrig());
8703   - }
8704   -
8705   - Set<ChildTaskPlan> cts = s.getcTasks();
8706   - if (cts != null && cts.size() > 0) {
8707   - lists.add(s);
8708   - } else {
8709   - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
8710   - lists.add(s);
8711   - }
8712   - }
8713   - }
8714   - double ksgl = culateService.culateKsgl(list);
8715   - double sjgl = culateService.culateSjgl(lists);
8716   - double jccgl = culateService.culateJccgl(lists);
8717   - double ljgl = culateService.culateLjgl(lists);
8718   -
8719   - map.put("jhlc", Arith.add(culateService.culateJhgl(list), culateService.culateJhJccgl(list))); //计划里程
8720   - map.put("remMileage", culateService.culateLbgl(list)); //烂班公里
8721   - map.put("addMileage", ljgl); //临加公里
8722   - map.put("yygl", Arith.add(sjgl, ljgl)); //实际公里
8723   - map.put("ksgl", ksgl);//空驶公里
8724   - map.put("realMileage", Arith.add(Arith.add(ksgl, jccgl), Arith.add(sjgl, ljgl)));
8725   -// map.put("realMileage", format.format(yygl + ksgl + jcclc+addMileage));
8726   - map.put("jhbc", culateService.culateJhbc(list, ""));
8727   - map.put("cjbc", culateService.culateLbbc(list));
8728   - map.put("ljbc", culateService.culateLjbc(lists, ""));
8729   - map.put("sjbc", culateService.culateJhbc(lists, "") - culateService.culateLbbc(lists) + culateService.culateLjbc(lists, ""));
8730   - map.put("jcclc", jccgl);
8731   - map.put("zkslc", Arith.add(ksgl, jccgl));
8732   -// map.put("zkslc", format.format(ksgl + jcclc+addMileageJc));
8733   - return map;
8734   - }
8735   -
8736   -
8737   - @Override
8738   - public List<Map<String, Object>> accountPx(String line, String date,
8739   - String code, String xlName, String px) {
8740   -// List<Object[]> lsitObj = scheduleRealInfoRepository.accountPx(line, date, code,px);
8741   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
8742   - if (!code.trim().equals("")) {
8743   - code = BasicData.deviceId2NbbmMap.inverse().get(code);
8744   - }
8745   - String fgs = "";
8746   - List<Line> lineList = lineRepository.findLineByCode(line);
8747   - if (lineList.size() > 0) {
8748   - Line l = lineList.get(0);
8749   - fgs = BasicData.businessFgsCodeNameMap.get(l.getBrancheCompany() + "_" + l.getCompany());
8750   - }
8751   - List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
8752   - String sql = "SELECT request_code,FROM_UNIXTIME(TIMESTAMP / 1000,'%Y-%m-%d %T') as TIMESTAMP ,"
8753   - + " device_id FROM bsth_v_report_80 WHERE "
8754   - + " FROM_UNIXTIME( TIMESTAMP / 1000,'%Y-%m-%d') = '" + date + "' AND"
8755   - + " line_id = '" + line + "' and device_id like '%" + code + "%'";
8756   - Map<String, Object> map;
8757   - List<Object[]> lsitObj = jdbcTemplate.query(sql,
8758   - new RowMapper<Object[]>() {
8759   - @Override
8760   - public Object[] mapRow(ResultSet rs, int rowNum) throws SQLException {
8761   - Object[] t = new Object[3];
8762   - t[0] = rs.getString("request_code");
8763   - t[1] = rs.getString("TIMESTAMP");
8764   - t[2] = rs.getString("device_id");
8765   - return t;
8766   - }
8767   - });
8768   - int i = 1;
8769   - for (Object[] obj : lsitObj) {
8770   - if (obj != null) {
8771   - map = new HashMap<String, Object>();
8772   - map.put("num", i++);
8773   - map.put("xlName", xlName);
8774   - if (BasicData.deviceId2NbbmMap.get(obj[2]) == null) {
8775   - List<CarDevice> carDeviceList = new ArrayList<CarDevice>();
8776   - try {
8777   - carDeviceList = carDeviceRepository.findCarDevice(obj[2].toString(), sdf.parse(obj[1].toString()));
8778   - } catch (Exception e) {
8779   - // TODO Auto-generated catch block
8780   - e.printStackTrace();
8781   - }
8782   - if (carDeviceList.size() > 0) {
8783   - map.put("clZbh", carDeviceList.get(0).getClZbh());
8784   -
8785   - } else {
8786   - map.put("clZbh", BasicData.deviceId2NbbmMap.get(obj[2]));
8787   - }
8788   - } else {
8789   - map.put("clZbh", BasicData.deviceId2NbbmMap.get(obj[2]));
8790   -
8791   - }
8792   - map.put("company", fgs);
8793   - map.put("requestType", "0x" + Integer.toHexString(Integer.parseInt(obj[0] + "")).toUpperCase());
8794   - map.put("requestTime", obj[1]);
8795   - listMap.add(map);
8796   - }
8797   - }
8798   - if (listMap.size() > 1) {
8799   - if (px.equals("asc")) {
8800   - Collections.sort(listMap, new AccountMap());
8801   - } else {
8802   - Collections.sort(listMap, new AccountMap2());
8803   - }
8804   - }
8805   - return listMap;
8806   - }
8807   -
8808   - @Override
8809   - public List<Map<String, Object>> account(String line, String date,
8810   - String code, String xlName, String type) {
8811   - if (!code.trim().equals("")) {
8812   - code = BasicData.deviceId2NbbmMap.inverse().get(code);
8813   - }
8814   - String fgs = "";
8815   - List<Line> lineList = lineRepository.findLineByCode(line);
8816   - if (lineList.size() > 0) {
8817   - Line l = lineList.get(0);
8818   - fgs = BasicData.businessFgsCodeNameMap.get(l.getBrancheCompany() + "_" + l.getCompany());
8819   - }
8820   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
8821   - List<Object[]> lsitObj = scheduleRealInfoRepository.account(line, date, code);
8822   - List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
8823   - Map<String, Object> map;
8824   - int i = 1;
8825   - for (Object[] obj : lsitObj) {
8826   - if (obj != null) {
8827   - map = new HashMap<String, Object>();
8828   - map.put("num", i++);
8829   - map.put("xlName", xlName);
8830   - if (BasicData.deviceId2NbbmMap.get(obj[2]) == null) {
8831   - List<CarDevice> carDeviceList = new ArrayList<CarDevice>();
8832   - try {
8833   - carDeviceList = carDeviceRepository.findCarDevice(obj[2].toString(), sdf.parse(obj[1].toString()));
8834   - } catch (Exception e) {
8835   - // TODO Auto-generated catch block
8836   - e.printStackTrace();
8837   - }
8838   - if (carDeviceList.size() > 0) {
8839   - map.put("clZbh", carDeviceList.get(0).getClZbh());
8840   -
8841   - } else {
8842   - map.put("clZbh", BasicData.deviceId2NbbmMap.get(obj[2]));
8843   - }
8844   - } else {
8845   - map.put("clZbh", BasicData.deviceId2NbbmMap.get(obj[2]));
8846   -
8847   - }
8848   - map.put("company", fgs);
8849   - map.put("requestType", "0x" + Integer.toHexString(Integer.parseInt(obj[0] + "")).toUpperCase());
8850   - map.put("requestTime", obj[1]);
8851   - listMap.add(map);
8852   - }
8853   - }
8854   -
8855   - if (type != null && type.length() != 0 && type.equals("export")) {
8856   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
8857   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
8858   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
8859   - Map<String, Object> m = new HashMap<String, Object>();
8860   - ReportUtils ee = new ReportUtils();
8861   - Map<String, Object> typeMap = new HashMap<String, Object>();
8862   - typeMap.put("0xA1", "请求恢复运营");
8863   - typeMap.put("0xA2", "申请调档");
8864   - typeMap.put("0xA3", "出场请求");
8865   - typeMap.put("0xA5", "进场请求");
8866   - typeMap.put("0xA7", "加油请求");
8867   - typeMap.put("0x50", "车辆故障");
8868   - typeMap.put("0x70", "路阻报告");
8869   - typeMap.put("0x60", "事故报告");
8870   - typeMap.put("0x11", "扣证纠纷");
8871   - typeMap.put("0x12", "报警");
8872   - for (Map<String, Object> map1 : listMap) {
8873   - map1.put("requestText", typeMap.get(map1.get("requestType")));
8874   - }
8875   - try {
8876   - listI.add(listMap.iterator());
8877   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
8878   - ee.excelReplace(listI, new Object[]{m}, path + "mould/account.xls",
8879   - path + "export/" + sdfSimple.format(sdfMonth.parse(date))
8880   - + "-" + xlName + "-驾驶员请求台账.xls");
8881   - } catch (Exception e) {
8882   - // TODO: handle exception
8883   - e.printStackTrace();
8884   - }
8885   - }
8886   -
8887   - return listMap;
8888   - }
8889   -
8890   - @Override
8891   - public List<SchEditInfoDto> correctForm(String line, String date, String endDate,
8892   - String lpName, String code, String type, String changType) {
8893   -
8894   -// var types = {'DFTZ': '待发调整', 'FCXXWT':'发车信息微调', 'JHLB': '计划烂班', 'CXLB': '撤销烂班',
8895   -// 'CXZX': '撤销执行', 'CXSF': '撤销实发', 'SFTZ': '实发调整', 'TZRC': '调整人车'};
8896   - Map<String, Object> map = new HashMap<String, Object>();
8897   - map.put("DFTZ", "待发调整");
8898   - map.put("FCXXWT", "发车信息微调");
8899   - map.put("JHLB", "计划烂班");
8900   - map.put("CXLB", "撤销烂班");
8901   - map.put("CXZX", "撤销执行");
8902   - map.put("CXSF", "撤销实发");
8903   - map.put("SFTZ", "实发调整");
8904   - map.put("TZRC", "调整人车");
8905   -
8906   - SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm");
8907   - SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
8908   - String cont = "";
8909   - cont = " and xl_bm ='" + line + "'";
8910   - if (!lpName.equals("")) {
8911   - cont += " and lp_name = '" + lpName + "'";
8912   - }
8913   - if (!code.equals("")) {
8914   - cont += " and cl_zbh ='" + code + "'";
8915   - }
8916   - String sql = "select t1.*, t2.real_exec_date,"
8917   - + "t2.fcsj,t2.lp_name,t2.cl_zbh,t2.j_gh,t2.j_name,"
8918   - + "t2.xl_dir,t2.real_exec_date from (select * from "
8919   - + "logger_sch_modify where rq BETWEEN ? and ? and line_code=? )"
8920   - + " t1 INNER JOIN bsth_c_s_sp_info_real t2 on "
8921   - + "t1.sch_id=t2.id where 1=1 " + cont;
8922   -
8923   - List<SchEditInfoDto> list = jdbcTemplate.query(sql,
8924   - new BeanPropertyRowMapper(SchEditInfoDto.class), date, endDate, line);
8925   - List<SchEditInfoDto> lists = new ArrayList<SchEditInfoDto>();
8926   - for (int i = 0; i < list.size(); i++) {
8927   - Long fcsjs = 0l;
8928   - Long updsj = 0l;
8929   - SchEditInfoDto t = list.get(i);
8930   - if (map.get(t.getType()) != null) {
8931   -
8932   - if (changType.equals("")) {
8933   - t.setType2(t.getUser() + "于" + t.getTimeStr() + "进行" + map.get(t.getType()).toString() + ";");
8934   - } else {
8935   - String fcsj = "";
8936   - String updtime = "";
8937   - try {
8938   - fcsj = sdf1.format(sdf1.parse(t.getFcsj()));
8939   - updtime = sdf1.format(sdf1.parse(t.getTimeStr()));
8940   - fcsjs = sdf2.parse(t.getRealExecDate() + " " + fcsj).getTime();
8941   - updsj = sdf2.parse(t.getRq() + " " + updtime).getTime();
8942   - } catch (ParseException e) {
8943   - // TODO Auto-generated catch block
8944   - e.printStackTrace();
8945   - }
8946   - if (changType.equals("1")) {
8947   - if (fcsjs > updsj) {
8948   - t.setType2(t.getUser() + "于" + t.getTimeStr() + "进行" + map.get(t.getType()).toString() + ";");
8949   - } else {
8950   - t.setType2("");
8951   - }
8952   - } else if (changType.equals("2")) {
8953   - if (fcsjs < updsj) {
8954   - t.setType2(t.getUser() + "于" + t.getTimeStr() + "进行" + map.get(t.getType()).toString() + ";");
8955   - } else {
8956   - t.setType2("");
8957   - }
8958   - }
8959   - }
8960   - } else {
8961   - t.setType2("");
8962   - }
8963   - boolean fage = true;
8964   - for (int j = 0; j < lists.size(); j++) {
8965   - SchEditInfoDto s = lists.get(j);
8966   - if (s.getSchId() == t.getSchId()) {
8967   - s.setType2(s.getType2() + " " + t.getType2());
8968   - fage = false;
8969   - }
8970   - }
8971   -
8972   - if (fage) {
8973   - if (changType.equals("")) {
8974   - lists.add(t);
8975   - } else {
8976   - if (changType.equals("1")) {
8977   - if (fcsjs > updsj) {
8978   - lists.add(t);
8979   - }
8980   - } else if (changType.equals("2")) {
8981   - if (fcsjs < updsj) {
8982   - lists.add(t);
8983   - }
8984   - }
8985   - }
8986   - }
8987   - }
8988   -
8989   - if (type != null && type.length() != 0 && type.equals("export")) {
8990   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
8991   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
8992   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
8993   - Map<String, Object> m = new HashMap<String, Object>();
8994   - m.put("dates", date);
8995   - ReportUtils ee = new ReportUtils();
8996   - List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>();
8997   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
8998   - for (SchEditInfoDto d : lists) {
8999   - Map<String, Object> tempMap = new HashMap<String, Object>();
9000   - tempMap.put("lpName", d.getLpName());
9001   - tempMap.put("rq", d.getRq());
9002   - tempMap.put("clZbh", d.getClZbh());
9003   - tempMap.put("jName", d.getjName() + "/" + d.getjGh());
9004   - tempMap.put("fcsj", d.getFcsj());
9005   - tempMap.put("type", d.getType2());
9006   - tempList.add(tempMap);
9007   - }
9008   - try {
9009   - String dateTime = sdfSimple.format(sdfMonth.parse(date));
9010   - if(!endDate.equals(date)){
9011   - dateTime += "-" + sdfSimple.format(sdfMonth.parse(endDate));
9012   - }
9013   - String lineName = BasicData.lineCode2NameMap.get(line);
9014   - listI.add(tempList.iterator());
9015   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
9016   - ee.excelReplace(listI, new Object[]{m}, path + "mould/correctForm.xls",
9017   - path + "export/" + dateTime + "-" + lineName + "-修正报表.xls");
9018   - } catch (Exception e) {
9019   - // TODO: handle exception
9020   - e.printStackTrace();
9021   - }
9022   -// Map<String, Object> maps = tempList.get(tempList.size() - 1);
9023   - }
9024   - return lists;
9025   - }
9026   -
9027   - @Override
9028   - public List<ScheduleRealInfo> queryListWaybill(String jGh, String clZbh,
9029   - String lpName, String date, String line) {
9030   - List<ScheduleRealInfo> listSchedule = new ArrayList<ScheduleRealInfo>();
9031   - List<ScheduleRealInfo> list = null;
9032   - list = scheduleRealInfoRepository.queryListWaybillXcld(jGh, clZbh, lpName, date, line);
9033   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
9034   - String minfcsj = "02:00";
9035   - List<Line> lineList = lineRepository.findLineByCode(line);
9036   - if (lineList.size() > 0) {
9037   - String sqlMinYysj = "select start_opt from bsth_c_line_config where "
9038   - + " id = ("
9039   - + "select max(id) from bsth_c_line_config where line ='" + lineList.get(0).getId() + "'"
9040   - + ")";
9041   - minfcsj = jdbcTemplate.queryForObject(sqlMinYysj, String.class);
9042   - }
9043   - String[] minSjs = minfcsj.split(":");
9044   - Long minSj = Long.parseLong(minSjs[0]) * 60 + Long.parseLong(minSjs[1]);
9045   -
9046   - for (int i = 0; i < list.size(); i++) {
9047   - ScheduleRealInfo s = list.get(i);
9048   - if (s.getBcType().equals("out")) {
9049   - s.setRemark("1");
9050   - } else if (s.getBcType().equals("in")) {
9051   - s.setRemark("3");
9052   - } else {
9053   - s.setRemark("2");
9054   - }
9055   - String[] fcsj = s.getFcsj().split(":");
9056   - Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
9057   -
9058   - Long fscjT = 0L;
9059   - if (fcsjL < minSj) {
9060   - Calendar calendar = new GregorianCalendar();
9061   - calendar.setTime(s.getScheduleDate());
9062   - calendar.add(calendar.DATE, 1);
9063   - s.setScheduleDate(calendar.getTime());
9064   - try {
9065   - fscjT = sdf.parse(sdf.format(s.getScheduleDate()) + " " + s.getFcsj()).getTime();
9066   - } catch (ParseException e) {
9067   - // TODO Auto-generated catch block
9068   - e.printStackTrace();
9069   - }
9070   -
9071   - } else {
9072   - try {
9073   - fscjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();
9074   - } catch (ParseException e) {
9075   - // TODO Auto-generated catch block
9076   - e.printStackTrace();
9077   - }
9078   - ;
9079   - }
9080   - s.setFcsjT(fscjT);
9081   - }
9082   - Collections.sort(list, new compareFcsjType());
9083   - for (int i = 0; i < list.size(); i++) {
9084   - ScheduleRealInfo s = list.get(i);
9085   - s.setAdjustExps(i + 1 + "");
9086   - String remarks = "";
9087   - if (s.getRemarks() != null) {
9088   - remarks += s.getRemarks();
9089   - }
9090   -
9091   - Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
9092   - if (!childTaskPlans.isEmpty()) {
9093   - s.setFcsjActual("");
9094   - s.setZdsjActual("");
9095   - s.setJhlc(0.0);
9096   - }
9097   -
9098   - if (s.isDestroy()) {
9099   - s.setFcsjActual("");
9100   - s.setZdsjActual("");
9101   - s.setJhlc(0.0);
9102   - remarks += "(烂班)";
9103   - s.setRemarks(remarks);
9104   - }
9105   -
9106   - listSchedule.add(s);
9107   - //计算营运里程,空驶里程
9108   - if (!childTaskPlans.isEmpty()) {
9109   -// Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
9110   - List<ChildTaskPlan> listit = new ArrayList<ChildTaskPlan>(childTaskPlans);
9111   - Collections.sort(listit, new ComparableChild());
9112   - for (int j = 0; j < listit.size(); j++) {
9113   - ScheduleRealInfo t = new ScheduleRealInfo();
9114   - ChildTaskPlan childTaskPlan = listit.get(j);
9115   - if (childTaskPlan.getCcId() == null) {
9116   - if (childTaskPlan.isDestroy()) {
9117   - t.setFcsjActual("");
9118   - t.setZdsjActual("");
9119   - t.setJhlc(0.0);
9120   - } else {
9121   - t.setFcsjActual(childTaskPlan.getStartDate());
9122   - t.setZdsjActual(childTaskPlan.getEndDate());
9123   - t.setJhlc(Double.parseDouble(String.valueOf(childTaskPlan.getMileage())));
9124   - }
9125   - t.setFcsj(childTaskPlan.getStartDate());
9126   - t.setZdsj(childTaskPlan.getEndDate());
9127   - t.setQdzName(childTaskPlan.getStartStationName());
9128   - t.setZdzName(childTaskPlan.getEndStationName());
9129   - t.setRemarks(childTaskPlan.getRemarks());
9130   - t.setAdjustExps("子");
9131   - listSchedule.add(t);
9132   - }
9133   - }
9134   - }
9135   - }
9136   -
9137   - return listSchedule;
9138   - }
9139   -
9140   - @Override
9141   - public List<ScheduleRealInfo> queryListWaybill2(String jName, String clZbh,
9142   - String lpName, String date, String line) {
9143   - List<ScheduleRealInfo> listSchedule = new ArrayList<ScheduleRealInfo>();
9144   - List<ScheduleRealInfo> list = null;
9145   - list = scheduleRealInfoRepository.queryListWaybill(jName, clZbh, lpName, date, line);
9146   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
9147   - String minfcsj = "02:00";
9148   - List<Line> lineList = lineRepository.findLineByCode(line);
9149   - if (lineList.size() > 0) {
9150   - String sqlMinYysj = "select start_opt from bsth_c_line_config where "
9151   - + " id = ("
9152   - + "select max(id) from bsth_c_line_config where line ='" + lineList.get(0).getId() + "'"
9153   - + ")";
9154   - minfcsj = jdbcTemplate.queryForObject(sqlMinYysj, String.class);
9155   - }
9156   - String[] minSjs = minfcsj.split(":");
9157   - Long minSj = Long.parseLong(minSjs[0]) * 60 + Long.parseLong(minSjs[1]);
9158   -
9159   - for (int i = 0; i < list.size(); i++) {
9160   - ScheduleRealInfo s = list.get(i);
9161   - String[] fcsj = s.getFcsj().split(":");
9162   - Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
9163   -
9164   - Long fscjT = 0L;
9165   - if (fcsjL < minSj) {
9166   - Calendar calendar = new GregorianCalendar();
9167   - calendar.setTime(s.getScheduleDate());
9168   - calendar.add(calendar.DATE, 1);
9169   - s.setScheduleDate(calendar.getTime());
9170   - try {
9171   - fscjT = sdf.parse(sdf.format(s.getScheduleDate()) + " " + s.getFcsj()).getTime();
9172   - } catch (ParseException e) {
9173   - // TODO Auto-generated catch block
9174   - e.printStackTrace();
9175   - }
9176   -
9177   - } else {
9178   - try {
9179   - fscjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();
9180   - } catch (ParseException e) {
9181   - // TODO Auto-generated catch block
9182   - e.printStackTrace();
9183   - }
9184   - ;
9185   - }
9186   - s.setFcsjT(fscjT);
9187   - }
9188   - Collections.sort(list, new ComparableReal());
9189   - for (int i = 0; i < list.size(); i++) {
9190   - ScheduleRealInfo s = list.get(i);
9191   - s.setAdjustExps(i + 1 + "");
9192   - String remarks = "";
9193   - if (s.getRemarks() != null) {
9194   - remarks += s.getRemarks();
9195   - }
9196   -
9197   - Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
9198   - if (!childTaskPlans.isEmpty()) {
9199   - s.setFcsjActual("");
9200   - s.setZdsjActual("");
9201   - s.setJhlc(0.0);
9202   - }
9203   -
9204   - if (s.isDestroy()) {
9205   - if (s.isReissue()) {
9206   - s.setFcsjActual(s.getDfsj());
9207   - s.setZdsjActual(s.getZdsj());
9208   - s.setRemarks("");
9209   - s.setStatus(2);
9210   - s.setJhlc(s.getJhlcOrig());
9211   - } else {
9212   - s.setFcsjActual("");
9213   - s.setZdsjActual("");
9214   - s.setJhlc(0.0);
9215   - remarks += "(烂班)";
9216   - s.setRemarks(remarks);
9217   - }
9218   - }
9219   -
9220   - listSchedule.add(s);
9221   - //计算营运里程,空驶里程
9222   - if (!childTaskPlans.isEmpty()) {
9223   -// Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
9224   - List<ChildTaskPlan> listit = new ArrayList<ChildTaskPlan>(childTaskPlans);
9225   - Collections.sort(listit, new ComparableChild());
9226   - for (int j = 0; j < listit.size(); j++) {
9227   - ScheduleRealInfo t = new ScheduleRealInfo();
9228   - ChildTaskPlan childTaskPlan = listit.get(j);
9229   - if (childTaskPlan.isDestroy()) {
9230   - t.setFcsjActual("");
9231   - t.setZdsjActual("");
9232   - t.setJhlc(0.0);
9233   - } else {
9234   - t.setFcsjActual(childTaskPlan.getStartDate());
9235   - t.setZdsjActual(childTaskPlan.getEndDate());
9236   - t.setJhlc(Double.parseDouble(String.valueOf(childTaskPlan.getMileage())));
9237   - }
9238   - t.setQdzName(childTaskPlan.getStartStationName());
9239   - t.setZdzName(childTaskPlan.getEndStationName());
9240   - t.setRemarks(childTaskPlan.getRemarks());
9241   - t.setAdjustExps("子");
9242   - listSchedule.add(t);
9243   - }
9244   - }
9245   - }
9246   -
9247   - return listSchedule;
9248   - }
9249   -
9250   - @Override
9251   - public Map<String, Object> removeChildTask(Long taskId) {
9252   - Map<String, Object> rs = new HashMap<>();
9253   - ChildTaskPlan chTask = cTaskPlanRepository.findById(taskId).get();
9254   -
9255   - ScheduleRealInfo sch = dayOfSchedule.get(chTask.getSchedule().getId());
9256   - try {
9257   -
9258   - sch.getcTasks().remove(chTask);
9259   - scheduleRealInfoRepository.save(sch);
9260   - rs.put("status", ResponseCode.SUCCESS);
9261   - } catch (Exception e) {
9262   - logger.error("", e);
9263   - rs.put("status", ResponseCode.ERROR);
9264   - }
9265   - return rs;
9266   - }
9267   -
9268   - @Override
9269   - public List<Map<String, Object>> statisticsDaily(String line, String date,
9270   - String xlName, String type) {
9271   - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
9272   - List<ScheduleRealInfo> list_s = scheduleRealInfoRepository.scheduleByDateAndLine2(line, date);
9273   - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
9274   - for (int i = 0; i < list_s.size(); i++) {
9275   - ScheduleRealInfo s = list_s.get(i);
9276   - Set<ChildTaskPlan> cts = s.getcTasks();
9277   - if (cts != null && cts.size() > 0) {
9278   - lists.add(s);
9279   - } else {
9280   - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
9281   - lists.add(s);
9282   - }
9283   - }
9284   - }
9285   - Map<String, Object> map = new HashMap<String, Object>();
9286   - map.put("xlName", xlName);
9287   - double jhlc = culateService.culateJhgl(list_s);
9288   - map.put("jhlc", jhlc);
9289   - map.put("sjgl", Arith.add(culateService.culateSjgl(lists), culateService.culateLjgl(lists)));
9290   - double lbgl = culateService.culateLbgl(list_s);
9291   - map.put("ssgl", lbgl);
9292   - map.put("ssgl_lz", culateService.culateCJLC(list_s, "路阻"));
9293   - map.put("ssgl_dm", culateService.culateCJLC(list_s, "吊慢"));
9294   - map.put("ssgl_gz", culateService.culateCJLC(list_s, "故障"));
9295   - map.put("ssgl_jf", culateService.culateCJLC(list_s, "纠纷"));
9296   - map.put("ssgl_zs", culateService.culateCJLC(list_s, "肇事"));
9297   - map.put("ssgl_qr", culateService.culateCJLC(list_s, "缺人"));
9298   - map.put("ssgl_qc", culateService.culateCJLC(list_s, "缺车"));
9299   - map.put("ssgl_kx", culateService.culateCJLC(list_s, "客稀"));
9300   - map.put("ssgl_qh", culateService.culateCJLC(list_s, "气候"));
9301   - map.put("ssgl_yw", culateService.culateCJLC(list_s, "援外"));
9302   - double ssgl_pc = culateService.culateCJLC(list_s, "配车");
9303   - double ssgl_by = culateService.culateCJLC(list_s, "保养");
9304   - double ssgl_cj = culateService.culateCJLC(list_s, "抽减");
9305   - double ssgl_qt = culateService.culateCJLC(list_s, "其他");
9306   - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
9307   - map.put("ssbc", culateService.culateLbbc(list_s));
9308   - double ljgl = culateService.culateLjgl(lists);
9309   - map.put("ljgl", ljgl);
9310   - map.put("jhbc", culateService.culateJhbc(list_s, ""));
9311   - map.put("jhbc_m", culateService.culateJhbc(list_s, "zgf"));
9312   - map.put("jhbc_a", culateService.culateJhbc(list_s, "wgf"));
9313   - map.put("sjbc", culateService.culateSjbc(lists, ""));
9314   - map.put("sjbc_m", culateService.culateSjbc(lists, "zgf"));
9315   - map.put("sjbc_a", culateService.culateSjbc(lists, "wgf"));
9316   - map.put("ljbc", culateService.culateLjbc(lists, ""));
9317   - map.put("ljbc_m", culateService.culateLjbc(lists, "zgf"));
9318   - map.put("ljbc_a", culateService.culateLjbc(lists, "wgf"));
9319   - map.put("fzbc", culateService.culateFzbc(lists, ""));
9320   - map.put("fzbc_m", culateService.culateFzbc(lists, "zgf"));
9321   - map.put("fzbc_a", culateService.culateFzbc(lists, "wgf"));
9322   - map.put("dtbc", 0);
9323   - map.put("dtbc_m", 0);
9324   - map.put("dtbc_a", 0);
9325   - List<CalcInterval> intervalList=calcIntervalRepository.selectByDateAndLine(line, date,"");
9326   - if(intervalList.size()>0){
9327   - CalcInterval c=intervalList.get(0);
9328   - map.put("djg",c.getDjgAll());
9329   - map.put("djg_m", c.getDjgZgf());
9330   - map.put("djg_a", c.getDjgWgf());
9331   - map.put("djg_time", c.getDjgTime());
9332   - }else{
9333   - Map<String, Object> m = culateService.culateDjg(list_s, line);
9334   - map.put("djg", m.get("djgcsq"));
9335   - map.put("djg_m", m.get("djgcsz"));
9336   - map.put("djg_a", m.get("djgcsw"));
9337   - map.put("djg_time", m.get("djgsj"));
9338   - }
9339   -
9340   - map.put("jls", Arith.sub(Arith.add(jhlc, ljgl), lbgl));
9341   - lMap.add(map);
9342   -
9343   - if (date.length() == 10) {
9344   - List<DutyEmployee> list = dutyEmployeeService.getDutyEmployee(line, date + "00:01", date + "23:59");
9345   - String dbdp = "";
9346   - try {
9347   - for (int i = 0; i < list.size(); i++) {
9348   - DutyEmployee t = list.get(i);
9349   - if (dbdp.indexOf(t.getuName()) == -1) {
9350   - if (!(dbdp.length() > 0)) {
9351   - dbdp = t.getuName();
9352   - } else {
9353   - dbdp += "," + t.getuName();
9354   - }
9355   - }
9356   - }
9357   - } catch (Exception e) {
9358   - // TODO: handle exception
9359   - e.printStackTrace();
9360   - }
9361   - map.put("dbdp", dbdp);
9362   - }
9363   -
9364   - return lMap;
9365   - }
9366   -
9367   - @Override
9368   - public List<Map<String, Object>> statisticsDaily_mh_2(String line, String date,
9369   - String xlName, String type) {
9370   - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
9371   - List<ScheduleRealInfo> list_s = scheduleRealInfoRepository.scheduleByDateAndLine2(line, date);
9372   - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
9373   - for (int i = 0; i < list_s.size(); i++) {
9374   - ScheduleRealInfo s = list_s.get(i);
9375   - if (s.isDestroy() && s.isReissue()) {
9376   - s.setRemark("");
9377   - s.setFcsjActual(s.getDfsj());
9378   - s.setZdsjActual(s.getZdsj());
9379   - s.setStatus(2);
9380   - s.setJhlc(s.getJhlcOrig());
9381   - }
9382   -
9383   - Set<ChildTaskPlan> cts = s.getcTasks();
9384   - if (cts != null && cts.size() > 0) {
9385   - lists.add(s);
9386   - } else {
9387   - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
9388   - lists.add(s);
9389   - }
9390   - }
9391   - }
9392   - Map<String, Object> map = new HashMap<String, Object>();
9393   - map.put("xlName", xlName);
9394   - double jhlc = culateService.culateJhgl(list_s);
9395   - map.put("jhlc", jhlc);
9396   - map.put("sjgl", Arith.add(culateService.culateSjgl(lists), culateService.culateLjgl(lists)));
9397   - double lbgl = culateService.culateLbgl(list_s);
9398   - map.put("ssgl", lbgl);
9399   - map.put("ssgl_lz", culateService.culateCJLC(list_s, "路阻"));
9400   - map.put("ssgl_dm", culateService.culateCJLC(list_s, "吊慢"));
9401   - map.put("ssgl_gz", culateService.culateCJLC(list_s, "故障"));
9402   - map.put("ssgl_jf", culateService.culateCJLC(list_s, "纠纷"));
9403   - map.put("ssgl_zs", culateService.culateCJLC(list_s, "肇事"));
9404   - map.put("ssgl_qr", culateService.culateCJLC(list_s, "缺人"));
9405   - map.put("ssgl_qc", culateService.culateCJLC(list_s, "缺车"));
9406   - map.put("ssgl_kx", culateService.culateCJLC(list_s, "客稀"));
9407   - map.put("ssgl_qh", culateService.culateCJLC(list_s, "气候"));
9408   - map.put("ssgl_yw", culateService.culateCJLC(list_s, "援外"));
9409   - double ssgl_pc = culateService.culateCJLC(list_s, "配车");
9410   - double ssgl_by = culateService.culateCJLC(list_s, "保养");
9411   - double ssgl_cj = culateService.culateCJLC(list_s, "抽减");
9412   - double ssgl_qt = culateService.culateCJLC(list_s, "其他");
9413   - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
9414   - map.put("ssbc", culateService.culateLbbc(list_s));
9415   - double ljgl = culateService.culateLjgl(lists);
9416   - map.put("ljgl", ljgl);
9417   - map.put("jhbc", culateService.culateJhbc(list_s, ""));
9418   - map.put("jhbc_m", culateService.culateJhbc(list_s, "zgf"));
9419   - map.put("jhbc_a", culateService.culateJhbc(list_s, "wgf"));
9420   - map.put("sjbc", culateService.culateSjbc(lists, ""));
9421   - map.put("sjbc_m", culateService.culateSjbc(lists, "zgf"));
9422   - map.put("sjbc_a", culateService.culateSjbc(lists, "wgf"));
9423   - map.put("ljbc", culateService.culateLjbc(lists, ""));
9424   - map.put("ljbc_m", culateService.culateLjbc(lists, "zgf"));
9425   - map.put("ljbc_a", culateService.culateLjbc(lists, "wgf"));
9426   - map.put("fzbc", culateService.culateFzbc(lists, ""));
9427   - map.put("fzbc_m", culateService.culateFzbc(lists, "zgf"));
9428   - map.put("fzbc_a", culateService.culateFzbc(lists, "wgf"));
9429   - map.put("dtbc", 0);
9430   - map.put("dtbc_m", 0);
9431   - map.put("dtbc_a", 0);
9432   - map.put("djg", 0);
9433   - map.put("djg_m", 0);
9434   - map.put("djg_a", 0);
9435   - map.put("djg_time", 0);
9436   - map.put("jls", Arith.sub(Arith.add(jhlc, ljgl), lbgl));
9437   - lMap.add(map);
9438   - return lMap;
9439   - }
9440   -
9441   - public final Map<String, Object> staticTj(List<ScheduleRealInfo> list,Map<String, Object> m) {
9442   -
9443   - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
9444   - for (int i = 0; i < list.size(); i++) {
9445   - ScheduleRealInfo s = list.get(i);
9446   - Set<ChildTaskPlan> cts = s.getcTasks();
9447   - if (cts != null && cts.size() > 0) {
9448   - lists.add(s);
9449   - } else {
9450   - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
9451   - lists.add(s);
9452   - }
9453   - }
9454   - }
9455   - Map<String, Object> map = new HashMap<String, Object>();
9456   - if (list.size() > 0) {
9457   - map.put("fgsBm", list.get(0).getFgsBm());
9458   - map.put("xlBm", list.get(0).getXlBm());
9459   - map.put("xlName", list.get(0).getXlName());
9460   - map.put("fgsName", list.get(0).getFgsName());
9461   - try {
9462   - map.put("xlNamePy", PinyinHelper.convertToPinyinString(list.get(0).getFgsBm()+list.get(0).getXlName(), "", PinyinFormat.WITHOUT_TONE));
9463   - } catch (PinyinException e) {
9464   - // TODO Auto-generated catch block
9465   - e.printStackTrace();
9466   - }
9467   - double jhyygl = culateService.culateJhgl(list);//计划营运公里
9468   - double jhjcclc = culateService.culateJhJccgl(list);//计划进出场公里(计划空驶公里)
9469   - map.put("jhlc", jhyygl);
9470   - map.put("jcclc", jhjcclc);
9471   - map.put("jhzlc", Arith.add(jhyygl, jhjcclc));
9472   - double ljks=culateService.culateLjksgl(lists);
9473   - map.put("ljks", ljks);
9474   - double ljgl = culateService.culateLjgl(lists);
9475   - double sjyygl = culateService.culateSjgl(lists);
9476   - double zyygl = Arith.add(sjyygl, ljgl);
9477   -
9478   - double sjjccgl = culateService.culateJccgl(lists);
9479   - double sjksgl = culateService.culateKsgl(lists);
9480   - double zksgl = Arith.add(sjjccgl, sjksgl);
9481   - map.put("sjzgl", Arith.add(zyygl, zksgl));
9482   - map.put("sjgl", zyygl);
9483   - map.put("sjksgl", zksgl);
9484   - double ssgl = culateService.culateLbgl(list);
9485   - map.put("ssgl", ssgl);
9486   -
9487   - //计划+临加-少驶=实驶
9488   - double jl = Arith.sub(Arith.add(jhyygl, ljgl), ssgl);
9489   - if (jl == zyygl) {
9490   - map.put("zt", 0);
9491   - } else {
9492   - map.put("zt", 1);
9493   - }
9494   -
9495   - map.put("ssgl_lz", culateService.culateCJLC(list, "路阻"));
9496   - map.put("ssgl_dm", culateService.culateCJLC(list, "吊慢"));
9497   - map.put("ssgl_gz", culateService.culateCJLC(list, "故障"));
9498   - map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷"));
9499   - map.put("ssgl_zs", culateService.culateCJLC(list, "肇事"));
9500   - map.put("ssgl_qr", culateService.culateCJLC(list, "缺人"));
9501   - map.put("ssgl_qc", culateService.culateCJLC(list, "缺车"));
9502   - map.put("ssgl_kx", culateService.culateCJLC(list, "客稀"));
9503   - map.put("ssgl_qh", culateService.culateCJLC(list, "气候"));
9504   - map.put("ssgl_yw", culateService.culateCJLC(list, "援外"));
9505   - double ssgl_pc = culateService.culateCJLC(list, "配车");
9506   - double ssgl_by = culateService.culateCJLC(list, "保养");
9507   - double ssgl_cj = culateService.culateCJLC(list, "抽减");
9508   - double ssgl_qt = culateService.culateCJLC(list, "其他");
9509   - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
9510   - map.put("ssbc", culateService.culateLbbc(list));
9511   - map.put("ljgl", ljgl);
9512   - map.put("jhbc", culateService.culateJhbc(list, ""));
9513   - map.put("jhbc_m", culateService.culateJhbc(list, "zgf"));
9514   - map.put("jhbc_a", culateService.culateJhbc(list, "wgf"));
9515   - map.put("sjbc", culateService.culateSjbc(lists, ""));
9516   - map.put("sjbc_m", culateService.culateSjbc(lists, "zgf"));
9517   - map.put("sjbc_a", culateService.culateSjbc(lists, "wgf"));
9518   - map.put("ljbc", culateService.culateLjbc(lists, ""));
9519   - map.put("ljbc_m", culateService.culateLjbc(lists, "zgf"));
9520   - map.put("ljbc_a", culateService.culateLjbc(lists, "wgf"));
9521   - map.put("fzbc", culateService.culateFzbc(lists, ""));
9522   - map.put("fzbc_m", culateService.culateFzbc(lists, "zgf"));
9523   - map.put("fzbc_a", culateService.culateFzbc(lists, "wgf"));
9524   - map.put("dtbc", 0);
9525   - map.put("dtbc_m", 0);
9526   - map.put("dtbc_a", 0);
9527   - if(m.get("xl")==null){
9528   - Map<String, Object> m_ = culateService.culateDjg(lists, list.get(0).getXlBm());
9529   - map.put("djg", m_.get("djgcsq"));
9530   - map.put("djg_m", m_.get("djgcsz"));
9531   - map.put("djg_a", m_.get("djgcsw"));
9532   - map.put("djg_time", m_.get("djgsj"));
9533   - }else{
9534   - map.put("djg", m.get("djgAll")==null?"0":m.get("djgAll"));
9535   - map.put("djg_m", m.get("djgZgf")==null?"0":m.get("djgZgf"));
9536   - map.put("djg_a", m.get("djgWgf")==null?"0":m.get("djgWgf"));
9537   - map.put("djg_time", m.get("djgTime")==null?"0":m.get("djgTime"));
9538   - }
9539   - }
9540   - return map;
9541   - }
9542   -
9543   - @Override
9544   - public List<Map<String, Object>> statisticsDailyTj(String gsdm, String fgsdm, String line, String date, String date2,
9545   - String xlName, String type,String nature) {
9546   - List<ScheduleRealInfo> listAll = new ArrayList<ScheduleRealInfo>();
9547   - List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
9548   - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
9549   - List<Object[]> listInterval=new ArrayList<Object[]>();
9550   - line = line.trim();
9551   - if (line.equals("")) {
9552   - //查询所有线路
9553   - listAll = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date, date2, gsdm, fgsdm);
9554   - listInterval = calcIntervalRepository.countByDateAndLine(gsdm, fgsdm, date, date2);
9555   - } else {
9556   - //查询单条线路
9557   - listAll = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date, date2);
9558   - listInterval = calcIntervalRepository.countByDateAndLine(line, date, date2);
9559   - }
9560   - Map<String, Map<String,Object>> mapInterval=new HashMap<String, Map<String,Object>>();
9561   - for (int i = 0; i < listInterval.size(); i++) {
9562   - Object[] interval=listInterval.get(i);
9563   - String gs=interval[0].toString();
9564   - String fgs=interval[1].toString();
9565   - String xl=interval[2].toString();
9566   - Map<String, Object> m=new HashMap<String,Object>();
9567   - m.put("gs", gs);
9568   - m.put("fgs", fgs);
9569   - m.put("xl", xl);
9570   - m.put("djgAll", interval[3]);
9571   - m.put("djgZgf", interval[6]);
9572   - m.put("djgWgf", interval[7]);
9573   - m.put("djgTime", interval[8]);
9574   - mapInterval.put(gs+"-"+fgs+"-"+xl, m);
9575   - }
9576   - Map<String, Boolean> lineMap=lineService.lineNature();
9577   - List<ScheduleRealInfo> list=new ArrayList<ScheduleRealInfo>();
9578   - for (int i = 0; i < listAll.size(); i++) {
9579   - ScheduleRealInfo s=listAll.get(i);
9580   - if (nature.equals("0")) {
9581   - list.add(s);
9582   - }else if(nature.equals("1")){
9583   - if(lineMap.get(s.getXlBm())){
9584   - list.add(s);
9585   - }
9586   - }else{
9587   - if(!lineMap.get(s.getXlBm())){
9588   - list.add(s);
9589   - }
9590   - }
9591   - }
9592   - for (int i = 0; i < list.size(); i++) {
9593   - ScheduleRealInfo s = list.get(i);
9594   - Set<ChildTaskPlan> cts = s.getcTasks();
9595   - if (cts != null && cts.size() > 0) {
9596   - list_s.add(s);
9597   - } else {
9598   - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
9599   - list_s.add(s);
9600   - }
9601   - }
9602   - }
9603   - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
9604   - for (int i = 0; i < list.size(); i++) {
9605   - if (i < list.size() - 1) {
9606   - if ((list.get(i+1).getFgsBm()+list.get(i + 1).getXlBm()).equals(list.get(i).getFgsBm()+list.get(i).getXlBm())) {
9607   - lists.add(list.get(i));
9608   - } else {
9609   - lists.add(list.get(i));
9610   - Map<String, Object> mm=new HashMap<String,Object>();
9611   - if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
9612   - mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
9613   - }
9614   - Map<String, Object> map = staticTj(lists,mm);
9615   - lMap.add(map);
9616   - lists = new ArrayList<ScheduleRealInfo>();
9617   - }
9618   - } else {
9619   - if ((list.get(i).getFgsBm()+list.get(i).getXlBm()).equals(list.get(i - 1).getFgsBm()+list.get(i - 1).getXlBm())) {
9620   - lists.add(list.get(i));
9621   - Map<String, Object> mm=new HashMap<String,Object>();
9622   - if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
9623   - mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
9624   - }
9625   - Map<String, Object> map = staticTj(lists,mm);
9626   - lMap.add(map);
9627   - } else {
9628   - lists = new ArrayList<ScheduleRealInfo>();
9629   - lists.add(list.get(i));
9630   - Map<String, Object> mm=new HashMap<String,Object>();
9631   - if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
9632   - mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
9633   - }
9634   - Map<String, Object> map = staticTj(lists,mm);
9635   - lMap.add(map);
9636   - }
9637   - }
9638   - }
9639   - /*if(!line.equals("")){
9640   - List<Line> l=lineRepository.findLineByCode(line);
9641   - if(l.size()>0)
9642   - lMap.get(0).put("fgsName", BasicData.businessFgsCodeNameMap.get(l.get(0).getBrancheCompany()+"_"+l.get(0).getCompany()));
9643   - }*/
9644   - Collections.sort(lMap, new AccountXlbm());
9645   - Map<String, Object> map = new HashMap<String, Object>();
9646   - map.put("xlName", "合计");
9647   - map.put("fgsName", "");
9648   - double jhyygl = culateService.culateJhgl(list);//计划营运公里
9649   - double jhjcclc = culateService.culateJhJccgl(list);//计划进出场公里(计划空驶公里)
9650   - map.put("jhlc", jhyygl);
9651   - map.put("jcclc", jhjcclc);
9652   - map.put("jhzlc", Arith.add(jhyygl, jhjcclc));
9653   -
9654   - double ljgl = culateService.culateLjgl(list_s);
9655   - double sjyygl = culateService.culateSjgl(list_s);
9656   - double zyygl = Arith.add(sjyygl, ljgl);
9657   - double ljks=culateService.culateLjksgl(list_s);
9658   - map.put("ljks", ljks);
9659   - double sjjccgl = culateService.culateJccgl(list_s);
9660   - double sjksgl = culateService.culateKsgl(list_s);
9661   - double zksgl = Arith.add(sjjccgl, sjksgl);
9662   - map.put("sjzgl", Arith.add(zyygl, zksgl));
9663   - map.put("sjgl", zyygl);
9664   - map.put("sjksgl", zksgl);
9665   -
9666   - double ssgl = culateService.culateLbgl(list);
9667   - map.put("ssgl", ssgl);
9668   - //计划+临加-少驶=实驶
9669   - double jl = Arith.sub(Arith.add(jhyygl, ljgl), ssgl);
9670   - if (jl == zyygl) {
9671   - map.put("zt", 0);
9672   - } else {
9673   - map.put("zt", 1);
9674   - }
9675   - map.put("ssgl_lz", culateService.culateCJLC(list, "路阻"));
9676   - map.put("ssgl_dm", culateService.culateCJLC(list, "吊慢"));
9677   - map.put("ssgl_gz", culateService.culateCJLC(list, "故障"));
9678   - map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷"));
9679   - map.put("ssgl_zs", culateService.culateCJLC(list, "肇事"));
9680   - map.put("ssgl_qr", culateService.culateCJLC(list, "缺人"));
9681   - map.put("ssgl_qc", culateService.culateCJLC(list, "缺车"));
9682   - map.put("ssgl_kx", culateService.culateCJLC(list, "客稀"));
9683   - map.put("ssgl_qh", culateService.culateCJLC(list, "气候"));
9684   - map.put("ssgl_yw", culateService.culateCJLC(list, "援外"));
9685   - double ssgl_pc = culateService.culateCJLC(list, "配车");
9686   - double ssgl_by = culateService.culateCJLC(list, "保养");
9687   - double ssgl_cj = culateService.culateCJLC(list, "抽减");
9688   - double ssgl_qt = culateService.culateCJLC(list, "其他");
9689   - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
9690   -
9691   - map.put("ssbc", culateService.culateLbbc(list));
9692   - map.put("ljgl", ljgl);
9693   - map.put("jhbc", culateService.culateJhbc(list, ""));
9694   - map.put("jhbc_m", culateService.culateJhbc(list, "zgf"));
9695   - map.put("jhbc_a", culateService.culateJhbc(list, "wgf"));
9696   - map.put("sjbc", culateService.culateSjbc(list_s, ""));
9697   - map.put("sjbc_m", culateService.culateSjbc(list_s, "zgf"));
9698   - map.put("sjbc_a", culateService.culateSjbc(list_s, "wgf"));
9699   - map.put("ljbc", culateService.culateLjbc(list_s, ""));
9700   - map.put("ljbc_m", culateService.culateLjbc(list_s, "zgf"));
9701   - map.put("ljbc_a", culateService.culateLjbc(list_s, "wgf"));
9702   - map.put("fzbc", culateService.culateFzbc(list_s, ""));
9703   - map.put("fzbc_m", culateService.culateFzbc(list_s, "zgf"));
9704   - map.put("fzbc_a", culateService.culateFzbc(list_s, "wgf"));
9705   - map.put("dtbc", 0);
9706   - map.put("dtbc_m", 0);
9707   - map.put("dtbc_a", 0);
9708   - if (list.size() > 0) {
9709   - int djg = 0, djg_m = 0, djg_a = 0, djg_time = 0;
9710   - for (Map<String, Object> m : lMap) {
9711   - if (m.containsKey("djg") && m.get("djg") != null)
9712   - djg += Integer.valueOf(m.get("djg").toString());
9713   - if (m.containsKey("djg_m") && m.get("djg_m") != null)
9714   - djg_m += Integer.valueOf(m.get("djg_m").toString());
9715   - if (m.containsKey("djg_a") && m.get("djg_a") != null)
9716   - djg_a += Integer.valueOf(m.get("djg_a").toString());
9717   - if (m.containsKey("djg_time") && m.get("djg_time") != null) {
9718   - int t = Integer.valueOf(m.get("djg_time").toString());
9719   - if (t > djg_time)
9720   - djg_time = t;
9721   - }
9722   - }
9723   - map.put("djg", djg);
9724   - map.put("djg_m", djg_m);
9725   - map.put("djg_a", djg_a);
9726   - map.put("djg_time", djg_time);
9727   -// Map<String, Object> m_=culateService.culateDjg(list_s, list.get(0).getXlBm());
9728   -// map.put("djg", m_.get("djgcsq"));
9729   -// map.put("djg_m", m_.get("djgcsz"));
9730   -// map.put("djg_a", m_.get("djgcsw"));
9731   -// map.put("djg_time", m_.get("djgsj"));
9732   - } else {
9733   - map.put("djg", "0");
9734   - map.put("djg_m", "0");
9735   - map.put("djg_a", "0");
9736   - map.put("djg_time", "0");
9737   - }
9738   - lMap.add(map);
9739   - if (type != null && type.length() != 0 && type.equals("export")) {
9740   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
9741   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
9742   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
9743   - Map<String, Object> m = new HashMap<String, Object>();
9744   - m.put("date", date + "至" + date2);
9745   - ReportUtils ee = new ReportUtils();
9746   - try {
9747   - String dateTime = "";
9748   - if (date.equals(date2)) {
9749   - dateTime = sdfSimple.format(sdfMonth.parse(date));
9750   - } else {
9751   - dateTime = sdfSimple.format(sdfMonth.parse(date))
9752   - + "-" + sdfSimple.format(sdfMonth.parse(date2));
9753   - }
9754   - listI.add(lMap.iterator());
9755   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
9756   - ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_2.xls",
9757   - path + "export/" + dateTime + "-" + xlName + "-统计日报.xls");
9758   - } catch (Exception e) {
9759   - // TODO: handle exception
9760   - //e.printStackTrace();
9761   - logger.info("", e);
9762   - }
9763   - }
9764   -
9765   - return lMap;
9766   - }
9767   -
9768   - @Override
9769   - public List<Map<String, Object>> statisticsDailyTjHb(String gsdm, String fgsdm, String line, String date, String date2,
9770   - String xlName, String type,String nature) {
9771   - List<ScheduleRealInfo> listAll = new ArrayList<ScheduleRealInfo>();
9772   - List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
9773   - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
9774   - List<Object[]> listInterval=new ArrayList<Object[]>();
9775   -
9776   - line = line.trim();
9777   - if (line.equals("")) {
9778   - //查询所有线路
9779   - listAll = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date, date2, gsdm, fgsdm);
9780   - listInterval = calcIntervalRepository.countByDateAndLine(gsdm, fgsdm, date, date2);
9781   - } else {
9782   - //查询单条线路
9783   - listAll = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date, date2);
9784   - listInterval = calcIntervalRepository.countByDateAndLine(line, date, date2);
9785   - }
9786   - Map<String, Map<String,Object>> mapInterval=new HashMap<>();
9787   - for (int i = 0; i < listInterval.size(); i++) {
9788   - Object[] interval=listInterval.get(i);
9789   - String gs=interval[0].toString();
9790   - String fgs=interval[1].toString();
9791   - String xl=interval[2].toString();
9792   - Map<String, Object> m=new HashMap<String,Object>();
9793   - m.put("gs", gs);
9794   - m.put("fgs", fgs);
9795   - m.put("xl", xl);
9796   - m.put("djgAll", interval[3]);
9797   - m.put("djgZgf", interval[6]);
9798   - m.put("djgWgf", interval[7]);
9799   - m.put("djgTime", interval[8]);
9800   - mapInterval.put(gs+"-"+fgs+"-"+xl, m);
9801   - }
9802   -
9803   - Map<String, Boolean> lineMap=lineService.lineNature();
9804   - List<ScheduleRealInfo> list=new ArrayList<ScheduleRealInfo>();
9805   - for (int i = 0; i < listAll.size(); i++) {
9806   - ScheduleRealInfo s=listAll.get(i);
9807   - if (nature.equals("0")) {
9808   - list.add(s);
9809   - }else if(nature.equals("1")){
9810   - if(lineMap.get(s.getXlBm())){
9811   - list.add(s);
9812   - }
9813   - }else{
9814   - if(!lineMap.get(s.getXlBm())){
9815   - list.add(s);
9816   - }
9817   - }
9818   - }
9819   - for (int i = 0; i < list.size(); i++) {
9820   - ScheduleRealInfo s = list.get(i);
9821   - Set<ChildTaskPlan> cts = s.getcTasks();
9822   - if (cts != null && cts.size() > 0) {
9823   - list_s.add(s);
9824   - } else {
9825   - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
9826   - list_s.add(s);
9827   - }
9828   - }
9829   - }
9830   - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
9831   - for (int i = 0; i < list.size(); i++) {
9832   - if (i < list.size() - 1) {
9833   - if ((list.get(i + 1).getFgsBm()+list.get(i + 1).getXlBm()).equals(list.get(i).getFgsBm()+list.get(i).getXlBm())) {
9834   - lists.add(list.get(i));
9835   - } else {
9836   - lists.add(list.get(i));
9837   - Map<String, Object> mm=new HashMap<String,Object>();
9838   - if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
9839   - mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
9840   - }
9841   - Map<String, Object> map = staticTj(lists,mm);
9842   - lMap.add(map);
9843   - lists = new ArrayList<ScheduleRealInfo>();
9844   - }
9845   - } else {
9846   - if ((list.get(i).getFgsBm()+list.get(i).getXlBm()).equals(list.get(i - 1).getFgsBm()+list.get(i - 1).getXlBm())) {
9847   - lists.add(list.get(i));
9848   - Map<String, Object> mm=new HashMap<String,Object>();
9849   - if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
9850   - mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
9851   - }
9852   - Map<String, Object> map = staticTj(lists,mm);
9853   - lMap.add(map);
9854   - } else {
9855   - lists = new ArrayList<ScheduleRealInfo>();
9856   - lists.add(list.get(i));
9857   - Map<String, Object> mm=new HashMap<String,Object>();
9858   - if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
9859   - mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
9860   - }
9861   - Map<String, Object> map = staticTj(lists,mm);
9862   - lMap.add(map);
9863   - }
9864   - }
9865   - }
9866   -
9867   - Collections.sort(lMap, new AccountXlbm());
9868   - Map<String, Object> map = new HashMap<String, Object>();
9869   - map.put("xlBm", "hj");
9870   - map.put("xlName", "合计");
9871   - map.put("fgsBm", "");
9872   - map.put("fgsName", "");
9873   - map.put("gsBm", "");
9874   - double jhyygl = culateService.culateJhgl(list);//计划营运公里
9875   - double jhjcclc = culateService.culateJhJccgl(list);//计划进出场公里(计划空驶公里)
9876   - map.put("jhlc", jhyygl);
9877   - map.put("jcclc", jhjcclc);
9878   - map.put("jhzlc", Arith.add(jhyygl, jhjcclc));
9879   -
9880   - double ljgl = culateService.culateLjgl(list_s);
9881   - double sjyygl = culateService.culateSjgl(list_s);
9882   - double zyygl = Arith.add(sjyygl, ljgl);
9883   - double ljks=culateService.culateLjksgl(list_s);
9884   - map.put("ljks", ljks);
9885   - double sjjccgl = culateService.culateJccgl(list_s);
9886   - double sjksgl = culateService.culateKsgl(list_s);
9887   - double zksgl = Arith.add(sjjccgl, sjksgl);
9888   - map.put("sjzgl", Arith.add(zyygl, zksgl));
9889   - map.put("sjgl", zyygl);
9890   - map.put("sjksgl", zksgl);
9891   -
9892   - double ssgl = culateService.culateLbgl(list);
9893   - map.put("ssgl", ssgl);
9894   - //计划+临加-少驶=实驶
9895   - double jl = Arith.sub(Arith.add(jhyygl, ljgl), ssgl);
9896   - if (jl == zyygl) {
9897   - map.put("zt", 0);
9898   - } else {
9899   - map.put("zt", 1);
9900   - }
9901   - map.put("ssgl_lz", culateService.culateCJLC(list, "路阻"));
9902   - map.put("ssgl_dm", culateService.culateCJLC(list, "吊慢"));
9903   - map.put("ssgl_gz", culateService.culateCJLC(list, "故障"));
9904   - map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷"));
9905   - map.put("ssgl_zs", culateService.culateCJLC(list, "肇事"));
9906   - map.put("ssgl_qr", culateService.culateCJLC(list, "缺人"));
9907   - map.put("ssgl_qc", culateService.culateCJLC(list, "缺车"));
9908   - map.put("ssgl_kx", culateService.culateCJLC(list, "客稀"));
9909   - map.put("ssgl_qh", culateService.culateCJLC(list, "气候"));
9910   - map.put("ssgl_yw", culateService.culateCJLC(list, "援外"));
9911   - double ssgl_pc = culateService.culateCJLC(list, "配车");
9912   - double ssgl_by = culateService.culateCJLC(list, "保养");
9913   - double ssgl_cj = culateService.culateCJLC(list, "抽减");
9914   - double ssgl_qt = culateService.culateCJLC(list, "其他");
9915   - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
9916   -
9917   - map.put("ssbc", culateService.culateLbbc(list));
9918   - map.put("ljgl", ljgl);
9919   - map.put("jhbc", culateService.culateJhbc(list, ""));
9920   - map.put("jhbc_m", culateService.culateJhbc(list, "zgf"));
9921   - map.put("jhbc_a", culateService.culateJhbc(list, "wgf"));
9922   - map.put("sjbc", culateService.culateSjbc(list_s, ""));
9923   - map.put("sjbc_m", culateService.culateSjbc(list_s, "zgf"));
9924   - map.put("sjbc_a", culateService.culateSjbc(list_s, "wgf"));
9925   - map.put("ljbc", culateService.culateLjbc(list_s, ""));
9926   - map.put("ljbc_m", culateService.culateLjbc(list_s, "zgf"));
9927   - map.put("ljbc_a", culateService.culateLjbc(list_s, "wgf"));
9928   - map.put("fzbc", culateService.culateFzbc(list_s, ""));
9929   - map.put("fzbc_m", culateService.culateFzbc(list_s, "zgf"));
9930   - map.put("fzbc_a", culateService.culateFzbc(list_s, "wgf"));
9931   - map.put("dtbc", 0);
9932   - map.put("dtbc_m", 0);
9933   - map.put("dtbc_a", 0);
9934   - if (list.size() > 0) {
9935   - int djg = 0, djg_m = 0, djg_a = 0, djg_time = 0;
9936   - for (Map<String, Object> m : lMap) {
9937   - if (m.containsKey("djg") && m.get("djg") != null)
9938   - djg += Integer.valueOf(m.get("djg").toString());
9939   - if (m.containsKey("djg_m") && m.get("djg_m") != null)
9940   - djg_m += Integer.valueOf(m.get("djg_m").toString());
9941   - if (m.containsKey("djg_a") && m.get("djg_a") != null)
9942   - djg_a += Integer.valueOf(m.get("djg_a").toString());
9943   - if (m.containsKey("djg_time") && m.get("djg_time") != null) {
9944   - int t = Integer.valueOf(m.get("djg_time").toString());
9945   - if (t > djg_time)
9946   - djg_time = t;
9947   - }
9948   - }
9949   - map.put("djg", djg);
9950   - map.put("djg_m", djg_m);
9951   - map.put("djg_a", djg_a);
9952   - map.put("djg_time", djg_time);
9953   - } else {
9954   - map.put("djg", "0");
9955   - map.put("djg_m", "0");
9956   - map.put("djg_a", "0");
9957   - map.put("djg_time", "0");
9958   - }
9959   - lMap.add(map);
9960   - return lMap;
9961   - }
9962   -
9963   - @Override
9964   - public Map<String, Object> scheduleDaily(String line, String date) {
9965   - Map<String, String> tempMap = null;
9966   - List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.scheduleByDateAndLine(line, date);
9967   - Map<String, Object> map = new HashMap<String, Object>();
9968   - Double jhlc = 0.00;
9969   - Float sjgl = 0f, ssgl = 0f, ssgl_lz = 0f, ssgl_dm = 0f, ssgl_gz = 0f, ssgl_jf = 0f, ssgl_zs = 0f, ssgl_qr = 0f, ssgl_qc = 0f, ssgl_kx = 0f, ssgl_qh = 0f, ssgl_yw = 0f, ssgl_other = 0f, ljgl = 0f;
9970   - int jhbc = 0;
9971   - for (ScheduleRealInfo scheduleRealInfo : scheduleRealInfos) {
9972   - if (scheduleRealInfo != null) {
9973   - //计算里程(包括子任务)
9974   - jhlc += scheduleRealInfo.getJhlc();
9975   - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
9976   - if (!childTaskPlans.isEmpty()) {
9977   - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
9978   - while (it.hasNext()) {
9979   - ChildTaskPlan childTaskPlan = it.next();
9980   - //是否烂班,烂班就是少驶
9981   - if (!childTaskPlan.isDestroy()) {
9982   - sjgl += childTaskPlan.getMileage();
9983   - } else {
9984   - ssgl += childTaskPlan.getMileage();
9985   - if (childTaskPlan.getDestroyReason().equals("路阻")) {
9986   - ssgl_lz += childTaskPlan.getMileage();
9987   - } else if (childTaskPlan.getDestroyReason().equals("吊慢")) {
9988   - ssgl_dm += childTaskPlan.getMileage();
9989   - } else if (childTaskPlan.getDestroyReason().equals("故障")) {
9990   - ssgl_gz += childTaskPlan.getMileage();
9991   - } else if (childTaskPlan.getDestroyReason().equals("纠纷")) {
9992   - ssgl_jf += childTaskPlan.getMileage();
9993   - } else if (childTaskPlan.getDestroyReason().equals("肇事")) {
9994   - ssgl_zs += childTaskPlan.getMileage();
9995   - } else if (childTaskPlan.getDestroyReason().equals("缺人")) {
9996   - ssgl_qr += childTaskPlan.getMileage();
9997   - } else if (childTaskPlan.getDestroyReason().equals("缺车")) {
9998   - ssgl_qc += childTaskPlan.getMileage();
9999   - } else if (childTaskPlan.getDestroyReason().equals("客稀")) {
10000   - ssgl_kx += childTaskPlan.getMileage();
10001   - } else if (childTaskPlan.getDestroyReason().equals("气候")) {
10002   - ssgl_qh += childTaskPlan.getMileage();
10003   - } else if (childTaskPlan.getDestroyReason().equals("援外")) {
10004   - ssgl_yw += childTaskPlan.getMileage();
10005   - } else {
10006   - ssgl_other += childTaskPlan.getMileage();
10007   - }
10008   - }
10009   - //临加公里
10010   - if (childTaskPlan.getType1().equals("临加")) {
10011   - ljgl += childTaskPlan.getMileage();
10012   - }
10013   - }
10014   - }
10015   - //班次
10016   - scheduleRealInfo.getFcsjT();
10017   - scheduleRealInfo.getFcsjActualTime();
10018   - }
10019   - }
10020   - map.put("jhlc", jhlc);
10021   - map.put("sjgl", sjgl);
10022   - map.put("ssgl", ssgl);
10023   - map.put("ssgl_lz", ssgl_lz);
10024   - map.put("ssgl_dm", ssgl_dm);
10025   - map.put("ssgl_gz", ssgl_gz);
10026   - map.put("ssgl_jf", ssgl_jf);
10027   - map.put("ssgl_zs", ssgl_zs);
10028   - map.put("ssgl_qr", ssgl_qr);
10029   - map.put("ssgl_qc", ssgl_qc);
10030   - map.put("ssgl_kx", ssgl_kx);
10031   - map.put("ssgl_qh", ssgl_qh);
10032   - map.put("ssgl_yw", ssgl_yw);
10033   - map.put("ssgl_other", ssgl_other);
10034   - map.put("ljgl", ljgl);
10035   -
10036   - map.put("jhbc", scheduleRealInfos.size());
10037   - return null;
10038   - }
10039   -
10040   - @Override
10041   - public int countByLineCodeAndDate(String xlBm, String schDate) {
10042   - return scheduleRealInfoRepository.countByLineCodeAndDate(xlBm + "", schDate);
10043   - }
10044   -
10045   - @Override
10046   - public List<ScheduleRealInfo> findByLineCodeAndDate(String xlBm, String schDate) {
10047   - return scheduleRealInfoRepository.findByLineCodeAndDate(xlBm + "", schDate);
10048   - }
10049   -
10050   - @Override
10051   - public void deleteByLineCodeAndDate(String xlBm, String schDate) {
10052   - scheduleRealInfoRepository.deleteByLineCodeAndDate(xlBm + "", schDate);
10053   - }
10054   -
10055   - @Override
10056   - public Long getMaxId() {
10057   - return scheduleRealInfoRepository.getMaxId();
10058   - }
10059   -
10060   - @Override
10061   - public List<ScheduleRealInfo> realScheduleList(String line, String date) {
10062   - List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
10063   - String lpName = "lpName";
10064   - String zdsj = "";
10065   - String zdsjActual = "";
10066   - String zdsj1 = "";
10067   - String zdsjActual1 = "";
10068   - List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleDdrb(line, date);
10069   -
10070   - /*
10071   - * 对计划发车时间相同的班次进行排序 out最前 in最后
10072   - */
10073   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
10074   - SimpleDateFormat sdfnyr =new SimpleDateFormat("yyyy-MM-dd");
10075   - String minfcsj = "02:00";
10076   - List<Line> lineList = lineRepository.findLineByCode(line);
10077   - if (lineList.size() > 0) {
10078   - String sqlMinYysj = "select start_opt from bsth_c_line_config where "
10079   - + " id = ("
10080   - + "select max(id) from bsth_c_line_config where line ='" + lineList.get(0).getId() + "'"
10081   - + ")";
10082   - minfcsj = jdbcTemplate.queryForObject(sqlMinYysj, String.class);
10083   - }
10084   - String[] minSjs = minfcsj.split(":");
10085   - Long minSj = Long.parseLong(minSjs[0]) * 60 + Long.parseLong(minSjs[1]);
10086   - for (int i = 0; i < listInfo.size(); i++) {
10087   - ScheduleRealInfo s = listInfo.get(i);
10088   - if (s.getBcType().equals("out")) {
10089   - s.setRemark("1");
10090   - } else if (s.getBcType().equals("in")) {
10091   - s.setRemark("3");
10092   - } else {
10093   - s.setRemark("2");
10094   - }
10095   - String[] fcsj = s.getFcsj().split(":");
10096   - Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
10097   -
10098   - Long fscjT = 0L;
10099   - if (fcsjL < minSj) {
10100   - Calendar calendar = new GregorianCalendar();
10101   - calendar.setTime(s.getScheduleDate());
10102   - calendar.add(calendar.DATE, 1);
10103   - Date date_sch= calendar.getTime();
10104   - try {
10105   - fscjT = sdf.parse(sdfnyr.format(date_sch) + " " + s.getFcsj()).getTime();
10106   - } catch (ParseException e) {
10107   - // TODO Auto-generated catch block
10108   - e.printStackTrace();
10109   - }
10110   -
10111   - } else {
10112   - try {
10113   - fscjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();
10114   - } catch (ParseException e) {
10115   - // TODO Auto-generated catch block
10116   - e.printStackTrace();
10117   - };
10118   - }
10119   - s.setFcsjT(fscjT);
10120   - }
10121   - List<ScheduleRealInfo> listInfo2=new ArrayList<ScheduleRealInfo>();
10122   - listInfo2.addAll(listInfo);
10123   - Collections.sort(listInfo, new compareLpFcsjType());
10124   - Collections.sort(listInfo2,new compareDirLpFcsjType());
10125   - for (int i = 0; i < listInfo.size(); i++) {
10126   - ScheduleRealInfo t = listInfo.get(i);
10127   - if (!lpName.equals(t.getLpName())) {
10128   - zdsjActual = t.getZdsjActual();
10129   - zdsj = t.getZdsj();
10130   - t.setZdsjActual("");
10131   - t.setZdsj("");
10132   - } else {
10133   - zdsj1 = t.getZdsj();
10134   - zdsjActual1 = t.getZdsjActual();
10135   - t.setZdsjActual(zdsjActual);
10136   - t.setZdsj(zdsj);
10137   - zdsj = zdsj1;
10138   - zdsjActual = zdsjActual1;
10139   - }
10140   - lpName = t.getLpName();
10141   - list.add(t);
10142   - }
10143   -/*
10144   - List<ScheduleRealInfo> listInfo2 = scheduleRealInfoRepository.scheduleDdrb2(line, date);
10145   - for (int i = 0; i < listInfo2.size(); i++) {
10146   - ScheduleRealInfo s = listInfo2.get(i);
10147   - if (s.getBcType().equals("out")) {
10148   - s.setRemark("1");
10149   - } else if (s.getBcType().equals("in")) {
10150   - s.setRemark("3");
10151   - } else {
10152   - s.setRemark("2");
10153   - }
10154   - String[] fcsj = s.getFcsj().split(":");
10155   - Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
10156   -
10157   - Long fscjT = 0L;
10158   - if (fcsjL < minSj) {
10159   - Calendar calendar = new GregorianCalendar();
10160   - calendar.setTime(s.getScheduleDate());
10161   - calendar.add(calendar.DATE, 1);
10162   - s.setScheduleDate(calendar.getTime());
10163   - try {
10164   - fscjT = sdf.parse(sdf.format(s.getScheduleDate()) + " " + s.getFcsj()).getTime();
10165   - } catch (ParseException e) {
10166   - // TODO Auto-generated catch block
10167   - e.printStackTrace();
10168   - }
10169   -
10170   - } else {
10171   - try {
10172   - fscjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();
10173   - } catch (ParseException e) {
10174   - // TODO Auto-generated catch block
10175   - e.printStackTrace();
10176   - }
10177   - ;
10178   - }
10179   - s.setFcsjT(fscjT);
10180   - }*/
10181   - List<ScheduleRealInfo> xList = new ArrayList<ScheduleRealInfo>();
10182   - List<ScheduleRealInfo> yList = new ArrayList<ScheduleRealInfo>();
10183   - List<ScheduleRealInfo> zList = new ArrayList<ScheduleRealInfo>();
10184   - List<ScheduleRealInfo> newList = new ArrayList<ScheduleRealInfo>();
10185   - if (listInfo2.size() > 0) {
10186   - int a = listInfo2.size() % 3;
10187   - int b = listInfo2.size() / 3;
10188   - int x = 0, y = 0;
10189   - if (a == 2) {
10190   - x = b + 1;
10191   - y = x * 2;
10192   - } else if (a == 1) {
10193   - x = b + 1;
10194   - y = x * 2 - 1;
10195   - } else {
10196   - x = b;
10197   - y = 2 * x;
10198   -
10199   - }
10200   - for (int i = 0; i < listInfo2.size(); i++) {
10201   - ScheduleRealInfo s = listInfo2.get(i);
10202   - if (i + 1 <= x) {
10203   - xList.add(s);
10204   - } else if ((i + 1) > x && (i + 1) <= y) {
10205   - yList.add(s);
10206   - } else {
10207   - zList.add(s);
10208   - }
10209   - }
10210   - for (int i = 0; i < x; i++) {
10211   - newList.add(xList.get(i));
10212   - if (yList.size() > i) {
10213   - newList.add(yList.get(i));
10214   - } else {
10215   - newList.add(new ScheduleRealInfo());
10216   - }
10217   - if (zList.size() > i) {
10218   - newList.add(zList.get(i));
10219   - } else {
10220   - newList.add(new ScheduleRealInfo());
10221   - }
10222   -
10223   - }
10224   - }
10225   - for (int i = 0; i < newList.size(); i++) {
10226   - ScheduleRealInfo t1 = newList.get(i);
10227   - for (int j = 0; j < list.size(); j++) {
10228   - ScheduleRealInfo t2 = list.get(j);
10229   - if (t1.getId() == t2.getId()) {
10230   - t1 = t2;
10231   - }
10232   - }
10233   - }
10234   -
10235   - for (int i = 0; i < newList.size(); i++) {
10236   - ScheduleRealInfo t1 = newList.get(i);
10237   - String reamrks1 = t1.getRemarks() == null ? "" : t1.getRemarks();
10238   - if (reamrks1.length() > 4) {
10239   - t1.setRemarks(reamrks1.substring(0, 4));
10240   - t1.setRemark(reamrks1);
10241   - } else {
10242   - t1.setRemark(reamrks1);
10243   - }
10244   - }
10245   - return newList;
10246   - }
10247   -
10248   - @Override
10249   - public List<ScheduleRealInfo> realScheduleList_zrw(String line, String date) {
10250   - List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
10251   - String lpName = "lpName";
10252   - String zdsj = "";
10253   - String zdsjActual = "";
10254   - String zdsj1 = "";
10255   - String zdsjActual1 = "";
10256   - List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleDdrb(line, date);
10257   -
10258   - /*
10259   - * 对计划发车时间相同的班次进行排序 out最前 in最后
10260   - */
10261   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
10262   - SimpleDateFormat sdfnyr = new SimpleDateFormat("yyyy-MM-dd");
10263   -
10264   - String minfcsj = "02:00";
10265   - List<Line> lineList = lineRepository.findLineByCode(line);
10266   - if (lineList.size() > 0) {
10267   - String sqlMinYysj = "select start_opt from bsth_c_line_config where "
10268   - + " id = ("
10269   - + "select max(id) from bsth_c_line_config where line ='" + lineList.get(0).getId() + "'"
10270   - + ")";
10271   - minfcsj = jdbcTemplate.queryForObject(sqlMinYysj, String.class);
10272   - }
10273   - String[] minSjs = minfcsj.split(":");
10274   - Long minSj = Long.parseLong(minSjs[0]) * 60 + Long.parseLong(minSjs[1]);
10275   - for (int i = 0; i < listInfo.size(); i++) {
10276   - ScheduleRealInfo s = listInfo.get(i);
10277   - if (s.getBcType().equals("out")) {
10278   - s.setRemark("1");
10279   - } else if (s.getBcType().equals("in")) {
10280   - s.setRemark("3");
10281   - } else {
10282   - s.setRemark("2");
10283   - }
10284   - String[] fcsj = s.getFcsj().split(":");
10285   - Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
10286   -
10287   - Long fscjT = 0L;
10288   - if (fcsjL < minSj) {
10289   - Calendar calendar = new GregorianCalendar();
10290   - calendar.setTime(s.getScheduleDate());
10291   - calendar.add(calendar.DATE, 1);
10292   - Date date_sch=calendar.getTime();
10293   - try {
10294   - fscjT = sdf.parse(sdfnyr.format(date_sch) + " " + s.getFcsj()).getTime();
10295   - } catch (ParseException e) {
10296   - // TODO Auto-generated catch block
10297   - e.printStackTrace();
10298   - }
10299   -
10300   - } else {
10301   - try {
10302   - fscjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();
10303   - } catch (ParseException e) {
10304   - // TODO Auto-generated catch block
10305   - e.printStackTrace();
10306   - }
10307   - ;
10308   - }
10309   - s.setFcsjT(fscjT);
10310   - }
10311   -
10312   -// Collections.sort(listInfo, new compareLpFcsjType());
10313   - List<ScheduleRealInfo> listInfo2=new ArrayList<ScheduleRealInfo>();
10314   -
10315   - Collections.sort(listInfo, new compareLpFcsjType());
10316   - for (int i = 0; i < listInfo.size(); i++) {
10317   - ScheduleRealInfo t = listInfo.get(i);
10318   - if (!lpName.equals(t.getLpName())) {
10319   - zdsjActual = t.getZdsjActual();
10320   - zdsj = t.getZdsj();
10321   - t.setZdsjActual("");
10322   - t.setZdsj("");
10323   - } else {
10324   - zdsj1 = t.getZdsj();
10325   - zdsjActual1 = t.getZdsjActual();
10326   - t.setZdsjActual(zdsjActual);
10327   - t.setZdsj(zdsj);
10328   - zdsj = zdsj1;
10329   - zdsjActual = zdsjActual1;
10330   - }
10331   -
10332   -
10333   -
10334   - lpName = t.getLpName();
10335   - listInfo2.add(t);
10336   -
10337   - }
10338   -
10339   - Collections.sort(listInfo2,new compareDirLpFcsjType());
10340   - for (int i = 0; i < listInfo2.size(); i++) {
10341   - ScheduleRealInfo t=listInfo2.get(i);
10342   - list.add(t);
10343   - Set<ChildTaskPlan> childTaskPlans = t.getcTasks();
10344   - //计算营运里程,空驶里程
10345   - if (!childTaskPlans.isEmpty()) {
10346   - List<ChildTaskPlan> listit = new ArrayList<ChildTaskPlan>(childTaskPlans);
10347   - Collections.sort(listit, new ComparableChild());
10348   - for (int j = 0; j < listit.size(); j++) {
10349   - ScheduleRealInfo s = new ScheduleRealInfo();
10350   - ChildTaskPlan childTaskPlan = listit.get(j);
10351   - if (childTaskPlan.getCcId() == null) {
10352   - if (childTaskPlan.isDestroy()) {
10353   - s.setFcsjActual("");
10354   - s.setZdsjActual("");
10355   - } else {
10356   - s.setFcsjActual(childTaskPlan.getStartDate());
10357   - s.setZdsjActual("");
10358   - s.setJhlc(Double.parseDouble(String.valueOf(childTaskPlan.getMileage())));
10359   - }
10360   - s.setFcsj(childTaskPlan.getStartDate());
10361   - s.setZdsj("");
10362   - s.setQdzName(childTaskPlan.getStartStationName());
10363   - s.setZdzName(childTaskPlan.getEndStationName());
10364   - s.setRemarks(childTaskPlan.getRemarks());
10365   - s.setAdjustExps("子");
10366   - s.setLpName("");
10367   - list.add(s);
10368   - }
10369   - }
10370   - }
10371   - }
10372   - List<ScheduleRealInfo> xList = new ArrayList<ScheduleRealInfo>();
10373   - List<ScheduleRealInfo> yList = new ArrayList<ScheduleRealInfo>();
10374   - List<ScheduleRealInfo> zList = new ArrayList<ScheduleRealInfo>();
10375   - List<ScheduleRealInfo> newList = new ArrayList<ScheduleRealInfo>();
10376   - if (list.size() > 0) {
10377   - int a = list.size() % 3;
10378   - int b = list.size() / 3;
10379   - int x = 0, y = 0;
10380   - if (a == 2) {
10381   - x = b + 1;
10382   - y = x * 2;
10383   - } else if (a == 1) {
10384   - x = b + 1;
10385   - y = x * 2 - 1;
10386   - } else {
10387   - x = b;
10388   - y = 2 * x;
10389   -
10390   - }
10391   - for (int i = 0; i < list.size(); i++) {
10392   - ScheduleRealInfo s = list.get(i);
10393   - if (i + 1 <= x) {
10394   - xList.add(s);
10395   - } else if ((i + 1) > x && (i + 1) <= y) {
10396   - yList.add(s);
10397   - } else {
10398   - zList.add(s);
10399   - }
10400   - }
10401   - for (int i = 0; i < x; i++) {
10402   - newList.add(xList.get(i));
10403   - if (yList.size() > i) {
10404   - newList.add(yList.get(i));
10405   - } else {
10406   - newList.add(new ScheduleRealInfo());
10407   - }
10408   - if (zList.size() > i) {
10409   - newList.add(zList.get(i));
10410   - } else {
10411   - newList.add(new ScheduleRealInfo());
10412   - }
10413   -
10414   - }
10415   - }
10416   - /* for (int i = 0; i < newList.size(); i++) {
10417   - ScheduleRealInfo t1 = newList.get(i);
10418   - for (int j = 0; j < list.size(); j++) {
10419   - ScheduleRealInfo t2 = list.get(j);
10420   - if (t1.getId() == t2.getId()) {
10421   - t1 = t2;
10422   - }
10423   - }
10424   - }*/
10425   -
10426   - for (int i = 0; i < newList.size(); i++) {
10427   - ScheduleRealInfo t1 = newList.get(i);
10428   - String reamrks1 = t1.getRemarks() == null ? "" : t1.getRemarks();
10429   - if (reamrks1.length() > 4) {
10430   - t1.setRemarks(reamrks1.substring(0, 4));
10431   - t1.setRemark(reamrks1);
10432   - } else {
10433   - t1.setRemark(reamrks1);
10434   - }
10435   - }
10436   - return newList;
10437   - }
10438   -
10439   - @Override
10440   - public List<ScheduleRealInfo> realScheduleList_mh_2(String line, String date) {
10441   - List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
10442   - String lpName = "lpName";
10443   - String zdsj = "";
10444   - String zdsjActual = "";
10445   - String zdsj1 = "";
10446   - String zdsjActual1 = "";
10447   - List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleByDateAndLineQp(line, date);
10448   -
10449   - for (ScheduleRealInfo s : listInfo) {
10450   - if (s.isDestroy() && s.isReissue()) {
10451   - s.setRemark("");
10452   - s.setFcsjActual(s.getDfsj());
10453   - s.setZdsjActual(s.getZdsj());
10454   - s.setStatus(2);
10455   - s.setJhlc(s.getJhlcOrig());
10456   - }
10457   - }
10458   -
10459   - for (int i = 0; i < listInfo.size(); i++) {
10460   - ScheduleRealInfo t = listInfo.get(i);
10461   - if (!lpName.equals(t.getLpName())) {
10462   - zdsjActual = t.getZdsjActual();
10463   - zdsj = t.getZdsj();
10464   - t.setZdsjActual("");
10465   - t.setZdsj("");
10466   - } else {
10467   - zdsj1 = t.getZdsj();
10468   - zdsjActual1 = t.getZdsjActual();
10469   - t.setZdsjActual(zdsjActual);
10470   - t.setZdsj(zdsj);
10471   - zdsj = zdsj1;
10472   - zdsjActual = zdsjActual1;
10473   - }
10474   - lpName = t.getLpName();
10475   - list.add(t);
10476   - }
10477   -
10478   - List<ScheduleRealInfo> listInfo2 = scheduleRealInfoRepository.scheduleByDateAndLineQp2(line, date);
10479   - List<ScheduleRealInfo> xList = new ArrayList<ScheduleRealInfo>();
10480   - List<ScheduleRealInfo> yList = new ArrayList<ScheduleRealInfo>();
10481   - List<ScheduleRealInfo> zList = new ArrayList<ScheduleRealInfo>();
10482   - List<ScheduleRealInfo> newList = new ArrayList<ScheduleRealInfo>();
10483   - if (listInfo2.size() > 0) {
10484   - int a = listInfo2.size() % 3;
10485   - int b = listInfo2.size() / 3;
10486   - int x = 0, y = 0;
10487   - if (a == 2) {
10488   - x = b + 1;
10489   - y = x * 2;
10490   - } else if (b == 1) {
10491   - x = b + 1;
10492   - y = x * 2 - 1;
10493   - } else {
10494   - x = b;
10495   - y = 2 * x;
10496   -
10497   - }
10498   - for (int i = 0; i < listInfo2.size(); i++) {
10499   - ScheduleRealInfo s = listInfo2.get(i);
10500   - if (i + 1 <= x) {
10501   - xList.add(s);
10502   - } else if ((i + 1) > x && (i + 1) <= y) {
10503   - yList.add(s);
10504   - } else {
10505   - zList.add(s);
10506   - }
10507   - }
10508   - for (int i = 0; i < x; i++) {
10509   - newList.add(xList.get(i));
10510   - if (yList.size() > i) {
10511   - newList.add(yList.get(i));
10512   - } else {
10513   - newList.add(new ScheduleRealInfo());
10514   - }
10515   - if (zList.size() > i) {
10516   - newList.add(zList.get(i));
10517   - } else {
10518   - newList.add(new ScheduleRealInfo());
10519   - }
10520   -
10521   - }
10522   - }
10523   - for (int i = 0; i < newList.size(); i++) {
10524   - ScheduleRealInfo t1 = newList.get(i);
10525   - for (int j = 0; j < list.size(); j++) {
10526   - ScheduleRealInfo t2 = list.get(j);
10527   - if (t1.getId() == t2.getId()) {
10528   - t1 = t2;
10529   - }
10530   - }
10531   - }
10532   - return newList;
10533   - }
10534   -
10535   - @Override
10536   - public List<ScheduleRealInfo> realScheduleListQp(String line, String date) {
10537   - List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
10538   - String lpName = "lpName";
10539   - String zdsj = "";
10540   - String zdsjActual = "";
10541   - String zdsj1 = "";
10542   - String zdsjActual1 = "";
10543   - List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleByDateAndLineQp(line, date);
10544   - for (int i = 0; i < listInfo.size(); i++) {
10545   - ScheduleRealInfo t = listInfo.get(i);
10546   - if (!lpName.equals(t.getLpName())) {
10547   - zdsjActual = t.getZdsjActual();
10548   - zdsj = t.getZdsj();
10549   - t.setZdsjActual("");
10550   - t.setZdsj("");
10551   - } else {
10552   - zdsj1 = t.getZdsj();
10553   - zdsjActual1 = t.getZdsjActual();
10554   - t.setZdsjActual(zdsjActual);
10555   - t.setZdsj(zdsj);
10556   - zdsj = zdsj1;
10557   - zdsjActual = zdsjActual1;
10558   - }
10559   -
10560   - lpName = t.getLpName();
10561   - list.add(t);
10562   - }
10563   - return list;
10564   - }
10565   -
10566   - public List<Map<String, Object>> yesterdayDataList(String line, String date, String gsbm, String fgsbm, String jGh, String nbbm) {
10567   - List<Map<String, Object>> yesterdayDataList = new ArrayList<Map<String, Object>>();
10568   - if (line.equals("")) {
10569   - yesterdayDataList = scheduleRealInfoRepository.yesterdayDataList(line, date, gsbm, fgsbm, nbbm);
10570   - } else {
10571   - yesterdayDataList = scheduleRealInfoRepository.yesterdayDataList_eq(line, date, gsbm, fgsbm, nbbm);
10572   - }
10573   - List<ScheduleRealInfo> lists = scheduleRealInfoRepository.queryListWaybill3(jGh, nbbm, date, gsbm, fgsbm);
10574   - for (int x = 0; x < yesterdayDataList.size(); x++) {
10575   - String jsy = yesterdayDataList.get(x).get("jGh").toString();
10576   - String clZbh = yesterdayDataList.get(x).get("clZbh").toString();
10577   - String xlbm = yesterdayDataList.get(x).get("xlBm").toString();
10578   - String lp = yesterdayDataList.get(x).get("lpName").toString();
10579   - String realExecDate=yesterdayDataList.get(x).get("realExecDate").toString();
10580   - String fcsj[] =realExecDate.split(" ");
10581   - //取出最小计划发车时间
10582   - yesterdayDataList.get(x).put("fcsj", fcsj[1]);
10583   - Map<String, Object> map = new HashMap<String, Object>();
10584   - boolean fage = true;
10585   - String company = "";
10586   - String bCompany = "";
10587   - String lineName="";
10588   - String jName="";
10589   - List<ScheduleRealInfo> listS = new ArrayList<ScheduleRealInfo>();
10590   - for (ScheduleRealInfo scheduleRealInfo : lists) {
10591   - if (scheduleRealInfo.getjGh().equals(jsy)
10592   - && scheduleRealInfo.getClZbh().equals(clZbh)
10593   - && scheduleRealInfo.getXlBm().equals(xlbm)
10594   - && scheduleRealInfo.getLpName().equals(lp)) {
10595   - if (fage) {
10596   - //根据线路代码获取公司
10597   - company = scheduleRealInfo.getGsBm();
10598   - bCompany = scheduleRealInfo.getFgsBm();
10599   - lineName = scheduleRealInfo.getXlName();
10600   - jName= scheduleRealInfo.getjName();
10601   - fage = false;
10602   - }
10603   - Set<ChildTaskPlan> cts = scheduleRealInfo.getcTasks();
10604   - if (cts != null && cts.size() > 0) {
10605   - listS.add(scheduleRealInfo);
10606   - } else {
10607   - if (scheduleRealInfo.getZdsjActual() != null && scheduleRealInfo.getFcsjActual() != null) {
10608   - listS.add(scheduleRealInfo);
10609   - }
10610   - }
10611   - }
10612   - }
10613   - yesterdayDataList.get(x).put("company", company);
10614   - yesterdayDataList.get(x).put("bCompany", bCompany);
10615   - yesterdayDataList.get(x).put("lineName", lineName);
10616   - yesterdayDataList.get(x).put("jName", jName);
10617   - Double ljgl = culateMieageService.culateLjgl(listS);
10618   - Double sjgl = culateMieageService.culateSjgl(listS);
10619   - Double ksgl = culateMieageService.culateKsgl(listS);
10620   - Double jccgl = culateMieageService.culateJccgl(listS);
10621   - Double zyygl = Arith.add(sjgl, ljgl);
10622   - Double zksgl = Arith.add(ksgl, jccgl);
10623   - Double zlc = Arith.add(zyygl, zksgl);
10624   - yesterdayDataList.get(x).put("totalKilometers", zlc);
10625   -
10626   - }
10627   - //增加顺序号
10628   - for (int i = 0; i < yesterdayDataList.size(); i++) {
10629   - if (i == 0) {
10630   - yesterdayDataList.get(i).put("seqNumber", 1);
10631   - } else {
10632   - if (yesterdayDataList.get(i - 1).get("clZbh").equals(yesterdayDataList.get(i).get("clZbh"))) {
10633   - yesterdayDataList.get(i).put("seqNumber", 1 + (int) yesterdayDataList.get(i - 1).get("seqNumber"));
10634   - } else {
10635   - yesterdayDataList.get(i).put("seqNumber", 1);
10636   - }
10637   - }
10638   - }
10639   -
10640   - return yesterdayDataList;
10641   - }
10642   -
10643   - /**
10644   - * 批量调整人车
10645   - */
10646   - @Override
10647   - public Map<String, Object> multi_tzrc(List<ChangePersonCar> cpcs, String userId) {
10648   - Map<String, Object> rs = new HashMap<>();
10649   - Set<ScheduleRealInfo> set = new HashSet<>();
10650   -
10651   - ScheduleRealInfo sch;
10652   -
10653   - String jGh = null, jName, sGh, sName;
10654   - for (ChangePersonCar cpc : cpcs) {
10655   -
10656   - sch = dayOfSchedule.get(cpc.getSchId());
10657   - if (sch == null)
10658   - continue;
10659   -
10660   - if (cpc.getClZbh() != null) {
10661   - if (!carExist(sch.getGsBm(), cpc.getClZbh())) {
10662   - rs.put("msg", "车辆 " + cpc.getClZbh() + " <a href=\"/#/busInfoManage\" target=_blank>车辆基础信息</a> 里找不到!");
10663   - rs.put("status", ResponseCode.ERROR);
10664   - return rs;
10665   - } else if (!sch.getGsBm().equals(BasicData.nbbm2CompanyCodeMap.get(cpc.getClZbh()))) {
10666   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到自编号为【" + cpc.getClZbh() + "】的车辆");
10667   - rs.put("status", ResponseCode.ERROR);
10668   - return rs;
10669   - }
10670   - }
10671   -
10672   - if (StringUtils.isNotEmpty(cpc.getJsy())) {
10673   - try{
10674   - jGh = cpc.getJsy().split("/")[0];
10675   - }catch (Exception e){
10676   - logger.error("", e);
10677   - rs.put("msg", "驾驶员参数异常!!");
10678   - rs.put("status", ResponseCode.ERROR);
10679   - return rs;
10680   - }
10681   -
10682   - jName = getPersonName(sch.getGsBm(), jGh);
10683   - if (StringUtils.isEmpty(jName)) {
10684   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + jGh + "】的驾驶员");
10685   - rs.put("status", ResponseCode.ERROR);
10686   - return rs;
10687   - }
10688   - }
10689   -
10690   -
10691   - //为换人换车情况表写入数据
10692   - schModifyLog.saveChangetochange(sch, cpc, userId);
10693   - //日志记录
10694   - ScheduleModifyLogger.tzrc(sch, cpc, userId);
10695   -
10696   - //换驾驶员
10697   - if (StringUtils.isNotEmpty(cpc.getJsy())) {
10698   - //换驾驶员
10699   - if (persoChange(sch, jGh))
10700   - set.add(sch);
10701   - }
10702   -
10703   - //换售票员
10704   - if (StringUtils.isNotEmpty(cpc.getSpy())
10705   - && !"/".equals(StringUtils.trim(cpc.getSpy()))) {
10706   -
10707   - sGh = cpc.getSpy().split("/")[0];
10708   - sName = getPersonName(sch.getGsBm(), sGh);
10709   - if (StringUtils.isEmpty(sName)) {
10710   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + sGh + "】的售票员");
10711   - rs.put("status", ResponseCode.ERROR);
10712   - return rs;
10713   - }
10714   -
10715   - /*if(!sGh.equals(sch.getsGh()))
10716   - sb.append(sch.getsGh() + " 换 " + sGh + ";");*/
10717   - if (persoChangeSPY(sch, sGh))
10718   - set.add(sch);
10719   - } else if (StringUtils.isNotEmpty(sch.getsGh())) {
10720   - sch.setsGh("");
10721   - sch.setsName("");
10722   - }
10723   -
10724   - //换车
10725   - if (StringUtils.isNotEmpty(cpc.getClZbh()) && !cpc.getClZbh().equals(sch.getClZbh())) {
10726   - //sb.append(sch.getClZbh() + " 换 " + cpc.getClZbh() + ";");
10727   - set.add(sch);
10728   - set.addAll(dayOfSchedule.changeCar(sch, cpc.getClZbh()));
10729   - }
10730   -
10731   - /*if(sb.length() > 0)
10732   - sch.setRemarks(sb.toString());*/
10733   -
10734   - dayOfSchedule.save(sch);
10735   - set.add(sch);
10736   -
10737   - }
10738   - rs.put("ts", set);
10739   - rs.put("status", ResponseCode.SUCCESS);
10740   - return rs;
10741   - }
10742   -
10743   - /**
10744   - * @Title: persoChange
10745   - * @Description: TODO(班次换驾驶员)
10746   - */
10747   - public boolean persoChange(ScheduleRealInfo sch, String jGh) {
10748   - if (sch.getjGh().equals(jGh))
10749   - return false;
10750   - String jName = getPersonName(sch.getGsBm(), jGh);
10751   - if (StringUtils.isNotEmpty(jName)) {
10752   -
10753   - if (jGh.indexOf("-") != -1)
10754   - sch.setjGh(jGh.substring(jGh.indexOf("-") + 1));
10755   - else
10756   - sch.setjGh(jGh);
10757   -
10758   - sch.setjName(jName);
10759   - return true;
10760   - }
10761   - return false;
10762   - }
10763   -
10764   - /**
10765   - * @Title: persoChange
10766   - * @Description: TODO(班次换售票员)
10767   - */
10768   - public boolean persoChangeSPY(ScheduleRealInfo sch, String sGh) {
10769   - if (sch.getsGh().equals(sGh))
10770   - return false;
10771   - String sName = getPersonName(sch.getGsBm(), sGh);
10772   - if (StringUtils.isNotEmpty(sName)) {
10773   - if (sGh.indexOf("-") != -1)
10774   - sch.setsGh(sGh.substring(sGh.indexOf("-") + 1));
10775   - else
10776   - sch.setsGh(sGh);
10777   - sch.setsName(sName);
10778   - return true;
10779   - }
10780   - return false;
10781   - }
10782   -
10783   - /**
10784   - * 批量待发调整
10785   - */
10786   - @Override
10787   - public Map<String, Object> multi_dftz(List<DfsjChange> dfsjcs) {
10788   - Map<String, Object> rs = new HashMap<>(), tempMap = new HashMap<>();
10789   - List<ScheduleRealInfo> list = new ArrayList<>();
10790   -
10791   - for (DfsjChange dc : dfsjcs) {
10792   - if (StringUtils.isEmpty(dc.getOld_dfsj()) || StringUtils.isEmpty(dc.getNew_dfsj()))
10793   - continue;
10794   -
10795   - tempMap = outgoAdjust(dc.getSchId(), "", dc.getNew_dfsj(), null, "2", null);
10796   -
10797   - if (tempMap.get("status").equals(ResponseCode.SUCCESS)) {
10798   - list.addAll((Collection<? extends ScheduleRealInfo>) tempMap.get("ts"));
10799   - }
10800   - }
10801   -
10802   - rs.put("status", ResponseCode.SUCCESS);
10803   - rs.put("ts", list);
10804   - return rs;
10805   - }
10806   -
10807   -
10808   - @Override
10809   - public Map<String, Object> findKMBC1(String jName, String clZbh,
10810   - String date, String enddate) {
10811   - List<ScheduleRealInfo> list = scheduleRealInfoRepository.queryListWaybill4(jName, clZbh, date, enddate);
10812   - DecimalFormat format = new DecimalFormat("0.00");
10813   -// int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName);
10814   -// int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName);
10815   - int jhbc = 0, cjbc = 0, ljbc = 0;
10816   - double jhlc = 0, yygl = 0, ksgl = 0, tempJhlc = 0;
10817   - float addMileage = 0l, remMileage = 0l;
10818   - Map<String, Object> map = new HashMap<String, Object>();
10819   - for (ScheduleRealInfo scheduleRealInfo : list) {
10820   - if (scheduleRealInfo != null) {
10821   - //计划里程(主任务过滤掉临加班次),
10822   - //烂班里程(主任务烂班),
10823   - //临加里程(主任务临加),
10824   - //计划班次,烂班班次,增加班次
10825   - tempJhlc = scheduleRealInfo.getJhlc() == null ? 0 : scheduleRealInfo.getJhlc();
10826   - if (scheduleRealInfo.isSflj()) {
10827   - addMileage += tempJhlc;
10828   - ljbc++;
10829   - } else {
10830   - jhlc += tempJhlc;
10831   - jhbc++;
10832   - if (scheduleRealInfo.getStatus() == -1) {
10833   - remMileage += tempJhlc;
10834   - cjbc++;
10835   - }
10836   - }
10837   - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
10838   - //计算营运里程,空驶里程
10839   - if (childTaskPlans.isEmpty()) {
10840   - if (scheduleRealInfo.getBcType().equals("in") || scheduleRealInfo.getBcType().equals("out")
10841   - || scheduleRealInfo.getBcType().equals("venting")) {
10842   - ksgl += tempJhlc;
10843   - } else {
10844   - yygl += tempJhlc;
10845   - }
10846   - } else {
10847   - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
10848   - while (it.hasNext()) {
10849   - ChildTaskPlan childTaskPlan = it.next();
10850   - if (childTaskPlan.getMileageType().equals("empty")) {
10851   - ksgl += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
10852   - } else {
10853   - yygl += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
10854   - }
10855   - }
10856   - }
10857   - }
10858   - }
10859   - map.put("jhlc", format.format(jhlc));
10860   - map.put("remMileage", format.format(remMileage));
10861   - map.put("addMileage", format.format(addMileage));
10862   - map.put("yygl", format.format(yygl));
10863   - map.put("ksgl", format.format(ksgl));
10864   - map.put("realMileage", format.format(yygl + ksgl));
10865   - map.put("jhbc", jhbc);
10866   - map.put("cjbc", cjbc);
10867   - map.put("ljbc", ljbc);
10868   - map.put("sjbc", jhbc - cjbc + ljbc);
10869   - return map;
10870   - }
10871   -
10872   - /**
10873   - * 调整班次类型
10874   - *
10875   - * @param id
10876   - * @param bcType
10877   - * @param remarks
10878   - * @return
10879   - */
10880   - @Override
10881   - public Map<String, Object> changeBcType(Long id, String bcType, String remarks, String majorStationName) {
10882   - Map<String, Object> rs = new HashMap<>();
10883   -
10884   - try {
10885   - ScheduleRealInfo sch = dayOfSchedule.get(id);
10886   - if (sch != null) {
10887   - sch.setBcType(bcType);
10888   - sch.setRemarks(remarks);
10889   - rs.put("status", ResponseCode.SUCCESS);
10890   - rs.put("t", sch);
10891   -
10892   - if ("major".equals(bcType)) {
10893   - sch.setMajorStationName(majorStationName);
10894   - }
10895   -
10896   - dayOfSchedule.save(sch);
10897   - }
10898   - } catch (Exception e) {
10899   - logger.error("", e);
10900   - rs.put("status", ResponseCode.ERROR);
10901   - }
10902   -
10903   - return rs;
10904   - }
10905   -
10906   - @Override
10907   - public Map<String, Object> historySave(ScheduleRealInfo sch) {
10908   - Map<String, Object> rs = new HashMap<>();
10909   - rs.put("status", ResponseCode.ERROR);
10910   -
10911   - ScheduleRealInfo oldSch = super.findById(sch.getId());
10912   - //事后日志记录
10913   - AfterwardsLogger aflog = AfterwardsLogger.start(oldSch, "事后调整");
10914   -
10915   - //换车
10916   - if (StringUtils.isNotEmpty(sch.getClZbh()) && !oldSch.getClZbh().equals(sch.getClZbh())) {
10917   - if (!carExist(oldSch.getGsBm(), sch.getClZbh())) {
10918   - rs.put("msg", "车辆 " + sch.getClZbh() + " 不存在!");
10919   - return rs;
10920   - } else {
10921   - aflog.log("换车", oldSch.getClZbh(), sch.getClZbh());
10922   - oldSch.setClZbh(sch.getClZbh());
10923   - }
10924   - }
10925   -
10926   - //换驾驶员
10927   - if (StringUtils.isNotEmpty(sch.getjGh()) && !oldSch.getjGh().equals(sch.getjGh())) {
10928   - String jName = getPersonName(oldSch.getGsBm(), sch.getjGh());
10929   - if (StringUtils.isEmpty(jName)) {
10930   - rs.put("msg", oldSch.getXlName() + "所属的公司编码下找不到工号为【" + sch.getjGh() + "】的驾驶员");
10931   - return rs;
10932   - }
10933   - aflog.log("换驾驶员", oldSch.getjGh() + "/" + oldSch.getjName(), sch.getjGh() + "/" + sch.getjName());
10934   - persoChange(oldSch, sch.getjGh());
10935   - }
10936   -
10937   - //换售票员
10938   - if (StringUtils.isNotEmpty(sch.getsGh()) && !oldSch.getsGh().equals(sch.getsGh())) {
10939   - String sName = getPersonName(oldSch.getGsBm(), sch.getsGh());
10940   - if (StringUtils.isEmpty(sName)) {
10941   - rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + sch.getsGh() + "】的售票员");
10942   - return rs;
10943   - }
10944   - aflog.log("换售票员", oldSch.getsGh() + "/" + oldSch.getsName(), sch.getsGh() + "/" + sch.getsName());
10945   - persoChangeSPY(oldSch, sch.getsGh());
10946   - }
10947   -
10948   - //烂班
10949   - boolean dest1 = oldSch.getStatus() == -1;
10950   - boolean dest2 = sch.getStatus() == -1;
10951   - if (!dest1 && dest2) {
10952   - oldSch.destroy();
10953   - aflog.log("烂班");
10954   - } else if (dest1 && !dest2) {
10955   - //撤销烂班
10956   - oldSch.setJhlc(oldSch.getJhlcOrig());
10957   - oldSch.setStatus(0);
10958   - oldSch.calcStatus();
10959   - oldSch.setAdjustExps(null);
10960   - aflog.log("撤销烂班");
10961   - }
10962   -
10963   - oldSch.setAdjustExps(sch.getAdjustExps());
10964   -
10965   - /**
10966   - * 修改班次里程
10967   - */
10968   - if (!oldSch.getJhlc().equals(sch.getJhlc())) {
10969   - double jhlcNum = sch.getJhlc();
10970   - aflog.log("修改班次里程", oldSch.getJhlc(), jhlcNum);
10971   - //烂班
10972   - if (jhlcNum == 0 && oldSch.getJhlcOrig() != 0)
10973   - oldSch.destroy();
10974   - else {
10975   - oldSch.setJhlc(jhlcNum);
10976   - //临加班次,实际计划一起改
10977   - if (oldSch.isSflj())
10978   - oldSch.setJhlcOrig(jhlcNum);
10979   - }
10980   - }
10981   -
10982   - //待发时间
10983   - if (!CustomStringUtils.equals(oldSch.getDfsj(), sch.getDfsj())) {
10984   - aflog.log("修改待发时间", oldSch.getDfsj(), sch.getDfsj());
10985   - oldSch.setDfsj(sch.getDfsj());
10986   - }
10987   - //实发时间
10988   - if (!CustomStringUtils.equals(oldSch.getFcsjActual(), sch.getFcsjActual())) {
10989   - aflog.log("修改实发时间", oldSch.getFcsjActual(), sch.getFcsjActual());
10990   - oldSch.setFcsjActual(sch.getFcsjActual());
10991   - }
10992   - //实际终点
10993   - if (!CustomStringUtils.equals(oldSch.getZdsjActual(), sch.getZdsjActual())) {
10994   - aflog.log("修改实达时间", oldSch.getZdsjActual(), sch.getZdsjActual());
10995   - oldSch.setZdsjActual(sch.getZdsjActual());
10996   - }
10997   -
10998   - //备注
10999   - if (!CustomStringUtils.equals(oldSch.getRemarks(), sch.getRemarks())) {
11000   - aflog.log("修改备注", oldSch.getRemarks(), sch.getRemarks());
11001   - oldSch.setRemarks(sch.getRemarks());
11002   - }
11003   -
11004   - scheduleRealInfoRepository.save(oldSch);
11005   -
11006   - aflog.end();
11007   - rs.put("status", ResponseCode.SUCCESS);
11008   - return rs;
11009   - }
11010   -
11011   - @Autowired
11012   - SvgAttributeRepository svgAttributeRepository;
11013   -
11014   - @Override
11015   - public Map<String, Object> svgAttr(String jsonStr) {
11016   - Map<String, Object> rs = new HashMap<>();
11017   -
11018   - try {
11019   - JSONObject jObj = JSONObject.parseObject(StringEscapeUtils.unescapeHtml4(jsonStr));
11020   -
11021   - SvgAttribute svgAttribute = new SvgAttribute();
11022   - svgAttribute.setLineCode(jObj.getString("lineCode"));
11023   - svgAttribute.setHideStations(jObj.getString("hideStations"));
11024   - svgAttribute.setNicknames(jObj.getString("nicknames"));
11025   - svgAttributeRepository.save(svgAttribute);
11026   -
11027   - rs.put("t", svgAttribute);
11028   - rs.put("status", ResponseCode.SUCCESS);
11029   - } catch (Exception e) {
11030   - logger.error("", e);
11031   - rs.put("status", ResponseCode.ERROR);
11032   - }
11033   - return rs;
11034   - }
11035   -
11036   - @Override
11037   - public Map<String, Object> findSvgAttr(String idx) {
11038   - Map<String, Object> rs = new HashMap<>();
11039   - try {
11040   - List<String> lineCodes = Splitter.on(",").splitToList(idx);
11041   - List<SvgAttribute> list = svgAttributeRepository.findSvgAttr(lineCodes);
11042   -
11043   - rs.put("status", ResponseCode.SUCCESS);
11044   - rs.put("list", list);
11045   - } catch (Exception e) {
11046   - logger.error("", e);
11047   - rs.put("status", ResponseCode.ERROR);
11048   - }
11049   - return rs;
11050   - }
11051   -
11052   - @Override
11053   - public Map<String, Object> addRemarks(Long id, String remarks) {
11054   - Map<String, Object> rs = new HashMap<>();
11055   - try {
11056   - ScheduleRealInfo sch = dayOfSchedule.get(id);
11057   - sch.addRemarks(remarks);
11058   -
11059   - rs.put("status", ResponseCode.SUCCESS);
11060   - rs.put("t", sch);
11061   - } catch (Exception e) {
11062   - logger.error("", e);
11063   - rs.put("status", ResponseCode.ERROR);
11064   - }
11065   - return rs;
11066   - }
11067   -
11068   - @Override
11069   - public List<Map<String, Object>> yesterdayDataList(String line) {
11070   - // TODO Auto-generated method stub
11071   - return null;
11072   - }
11073   -
11074   - @Override
11075   - public List<ScheduleRealInfo> exportWaybillQp(String clZbh, String date, String line) {
11076   - // TODO Auto-generated method stub
11077   - ReportUtils ee = new ReportUtils();
11078   - ReportRelatedUtils rru = new ReportRelatedUtils();
11079   - List<Iterator<?>> list = new ArrayList<Iterator<?>>();
11080   - List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.queryListWaybill2(clZbh, date, line);
11081   - List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
11082   -
11083   - DecimalFormat format = new DecimalFormat("0.00");
11084   -// int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName);
11085   -// int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName);
11086   - int jhbc = 0, cjbc = 0, ljbc = 0;
11087   - double jhlc = 0, yygl = 0, ksgl = 0, tempJhlc = 0, jcclc = 0;
11088   - float addMileage = 0l, remMileage = 0l, addgl = 0, remgl = 0;
11089   - int xyz = 1;
11090   - Map<String, Object> map;
11091   - for (ScheduleRealInfo scheduleRealInfo : scheduleRealInfos) {
11092   - if (scheduleRealInfo != null) {
11093   - //计算计划里程(主任务过滤掉临加班次),烂班里程,临加里程,计划班次,烂班班次,增加班次
11094   - //计划里程(主任务过滤掉临加班次),
11095   - //烂班里程(主任务烂班),
11096   - //临加里程(主任务临加),
11097   - //计划班次,烂班班次,增加班次
11098   - double jh = 0, sj = 0;
11099   - tempJhlc = scheduleRealInfo.getJhlc() == null ? 0 : scheduleRealInfo.getJhlc();
11100   - if (scheduleRealInfo.isSflj()) {
11101   - ljbc++;
11102   - } else {
11103   - if (!(scheduleRealInfo.getBcType().equals("in")
11104   - || scheduleRealInfo.getBcType().equals("out"))) {
11105   - jhbc++;
11106   - jh += tempJhlc;
11107   - }
11108   - if (scheduleRealInfo.getStatus() == -1) {
11109   - remMileage += tempJhlc;
11110   - cjbc++;
11111   - }
11112   - }
11113   - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
11114   - //计算营运里程,空驶里程
11115   - if (childTaskPlans.isEmpty()) {
11116   - if (scheduleRealInfo.getBcType().equals("in") || scheduleRealInfo.getBcType().equals("out")
11117   - ) {
11118   - jcclc += tempJhlc;
11119   - } else {
11120   - if (scheduleRealInfo.getStatus() != -1) {
11121   - if (scheduleRealInfo.isSflj()) {
11122   - addMileage += tempJhlc;
11123   - }
11124   - sj += tempJhlc;
11125   - }
11126   - }
11127   - } else {
11128   - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
11129   - while (it.hasNext()) {
11130   - ChildTaskPlan childTaskPlan = it.next();
11131   - if (childTaskPlan.getMileageType().equals("empty")) {
11132   - if (childTaskPlan.isDestroy()) {
11133   - remMileage += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
11134   - } else {
11135   - if (scheduleRealInfo.isSflj()) {
11136   - addMileage += tempJhlc;
11137   - }
11138   - ksgl += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
11139   - }
11140   - } else {
11141   - if (childTaskPlan.isDestroy()) {
11142   - remMileage += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
11143   -// cjbc++;
11144   - } else {
11145   - if (scheduleRealInfo.isSflj()) {
11146   - addMileage += tempJhlc;
11147   - }
11148   - sj += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
11149   - }
11150   - }
11151   - }
11152   - }
11153   -
11154   - if (!(scheduleRealInfo.getBcType().equals("in") || scheduleRealInfo.getBcType().equals("out"))) {
11155   - map = new HashMap<String, Object>();
11156   - try {
11157   - scheduleRealInfo.setBcs(xyz);
11158   - xyz++;
11159   - Set<ChildTaskPlan> cs = scheduleRealInfo.getcTasks();
11160   - Double sjlc = 0.0;
11161   - if (!cs.isEmpty()) {
11162   - Iterator<ChildTaskPlan> it = cs.iterator();
11163   - while (it.hasNext()) {
11164   - ChildTaskPlan c = it.next();
11165   - if (!c.isDestroy()) {
11166   - sjlc += c.getMileage() == null ? 0 : c.getMileage();
11167   - }
11168   -
11169   - }
11170   - } else {
11171   - if (scheduleRealInfo.getStatus() != -1) {
11172   - sjlc = scheduleRealInfo.getJhlc();
11173   - }
11174   - }
11175   - scheduleRealInfo.setjName(scheduleRealInfo.getjGh() + scheduleRealInfo.getjName());
11176   - scheduleRealInfo.setsName(scheduleRealInfo.getsGh() + scheduleRealInfo.getsName());
11177   - scheduleRealInfo.setSjlc(format.format(sjlc));
11178   - map = rru.getMapValue(scheduleRealInfo);
11179   - String zdsj = scheduleRealInfo.getZdsj();
11180   - String zdsjActual = scheduleRealInfo.getZdsjActual();
11181   - if (zdsj != null && zdsjActual != null &&
11182   - !zdsj.equals(zdsjActual)) {
11183   - int zdsjT = Integer.valueOf(zdsj.split(":")[0]) * 60 + Integer.valueOf(zdsj.split(":")[1]);
11184   - int zdsjAT = Integer.valueOf(zdsjActual.split(":")[0]) * 60 + Integer.valueOf(zdsjActual.split(":")[1]);
11185   - if (zdsj.compareTo(zdsjActual) > 0) {
11186   - if (zdsjT - zdsjAT > 1000) {
11187   - map.put("fast", "");
11188   - map.put("slow", zdsjAT - zdsjT + 1440);
11189   - } else {
11190   - map.put("fast", TimeUtils.getTimeDifference(zdsj, zdsjActual));
11191   - map.put("slow", "");
11192   - }
11193   - } else {
11194   - if (zdsjAT - zdsjT > 1000) {
11195   - map.put("fast", zdsjT - zdsjAT + 1440);
11196   - map.put("slow", "");
11197   - } else {
11198   - map.put("fast", "");
11199   - map.put("slow", TimeUtils.getTimeDifference(zdsj, zdsjActual));
11200   - }
11201   - }
11202   - } else {
11203   - map.put("fast", "");
11204   - map.put("slow", "");
11205   - }
11206   - listMap.add(map);
11207   - } catch (Exception e) {
11208   - e.printStackTrace();
11209   - }
11210   - }
11211   - jhlc += jh;
11212   - yygl += sj;
11213   - if (jh > sj) {
11214   - remgl += jh - sj;
11215   - } else {
11216   - addgl += sj - jh;
11217   - }
11218   - }
11219   - }
11220   -
11221   -
11222   - List<Ylxxb> listYlxxb = ylxxbRepository.queryListYlxxb(clZbh, date);
11223   - Double jzl = 0.0;
11224   - for (int t = 0; t < listYlxxb.size(); t++) {
11225   - Ylxxb y = listYlxxb.get(t);
11226   - jzl += y.getJzl();
11227   - }
11228   -
11229   - //计算里程和班次数,并放入Map里
11230   - map = findKMBCQp(clZbh, date, line);
11231   - map.put("jzl", jzl);
11232   -// map.put("jhlc", format.format(jhlc + jcclc));
11233   -// map.put("yygljh", format.format(jhlc));
11234   -// map.put("ssgl", format.format(remMileage));
11235   -// map.put("ksgl", format.format(ksgl));
11236   -// map.put("yyglsj", format.format(yygl));
11237   -// map.put("jhbc", jhbc);
11238   -// map.put("jcclc", jcclc);
11239   -//
11240   -// map.put("ljgl", format.format(addMileage));
11241   -// map.put("ssbc", cjbc);
11242   -// map.put("ysgl", format.format(yygl));
11243   -// map.put("sjbc", jhbc - cjbc + ljbc);
11244   -// map.put("zgl", format.format(yygl + ksgl + jcclc));
11245   -// map.put("ljbc", ljbc);
11246   -
11247   - String zdp = "", zwdp = "", wdp = "";
11248   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
11249   - List<DutyEmployee> listDtuy = dutyEmployeeService.getDutyEmployee(line, date + "00:00", date + "23:59");
11250   - try {
11251   - Long fcsj1 = sdf.parse(date + " 03:00").getTime();
11252   - Long fcsj2 = sdf.parse(date + " 11:00").getTime();
11253   - Long fcsj3 = sdf.parse(date + " 22:00").getTime();
11254   - for (int i = 0; i < listDtuy.size(); i++) {
11255   - DutyEmployee t = listDtuy.get(i);
11256   - Long ts = t.getTs();
11257   - if (ts > fcsj1 && ts < fcsj2) {
11258   - if (zdp.indexOf(t.getuName()) == -1) {
11259   - zdp += t.getuName() + ",";
11260   -
11261   - }
11262   - } else if (ts > fcsj2 && ts < fcsj3) {
11263   - if (zwdp.indexOf(t.getuName()) == -1) {
11264   - zwdp += t.getuName() + ",";
11265   - }
11266   - } else {
11267   - if (wdp.indexOf(t.getuName()) == -1) {
11268   - wdp += t.getuName() + ",";
11269   - }
11270   - }
11271   - }
11272   - } catch (ParseException e) {
11273   - // TODO Auto-generated catch block
11274   - e.printStackTrace();
11275   - }
11276   - map.put("zdp", zdp);
11277   - map.put("zwdp", zwdp);
11278   - map.put("wdp", wdp);
11279   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
11280   - list.add(listMap.iterator());
11281   - ee.excelReplace(list, new Object[]{scheduleRealInfos.get(0), map}, path + "mould/waybill_qingpu.xls",
11282   - path + "export/" + date + "-" + clZbh + "-行车路单.xls");
11283   -
11284   - return scheduleRealInfos;
11285   - }
11286   -
11287   - @Override
11288   - public Map<String, Object> findKMBCQp(String clZbh, String date, String line) {
11289   - // TODO Auto-generated method stub
11290   - List<ScheduleRealInfo> lists = scheduleRealInfoRepository.queryListWaybill2(clZbh, date, line);
11291   - DecimalFormat format = new DecimalFormat("0.00");
11292   -// int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName);
11293   -// int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName);
11294   - int jhbc = 0, cjbc = 0, ljbc = 0, sjbc = 0;
11295   - double jhlc = 0, yygl = 0, ksgl = 0, tempJhlc = 0, jcclc = 0, ljjcclc = 0, jhjcclc = 0;
11296   - double addMileage = 0, remMileage = 0, addgl = 0, remgl = 0;
11297   - Map<String, Object> map = new HashMap<String, Object>();
11298   - jhlc = culateMieageService.culateJhgl(lists);
11299   - jcclc = culateMieageService.culateJccgl(lists);
11300   - jhjcclc = culateMieageService.culateJhJccgl(lists);
11301   - remMileage = culateMieageService.culateLbgl(lists);
11302   - ksgl = culateMieageService.culateKsgl(lists);
11303   - yygl = culateMieageService.culateSjgl(lists);
11304   - jhbc = culateMieageService.culateJhbc(lists, "");
11305   - addMileage = culateMieageService.culateLjgl(lists);
11306   - cjbc = culateMieageService.culateLbbc(lists);
11307   - sjbc = culateMieageService.culateSjbc(lists, "");
11308   - ljbc = culateMieageService.culateLjbc(lists, "");
11309   - double zyygl = Arith.add(yygl, addMileage);
11310   - double zksgl = Arith.add(ksgl, jcclc);
11311   - map.put("jhlc", Arith.add(jhlc, jhjcclc));
11312   - map.put("yygljh", jhlc);
11313   - map.put("ssgl", remMileage);
11314   - map.put("ksgl", ksgl);
11315   - map.put("yyglsj", Arith.add(yygl, addMileage));
11316   - map.put("jcclc", jcclc);
11317   - map.put("jhbc", jhbc);
11318   - map.put("ljgl", addMileage);
11319   - map.put("ssbc", cjbc);
11320   - map.put("ysgl", Arith.add(yygl, addMileage));
11321   - map.put("sjbc", sjbc);
11322   - map.put("zgl", Arith.add(zyygl, zksgl));
11323   - map.put("ljbc", ljbc);
11324   -
11325   - return map;
11326   - }
11327   -
11328   - @Override
11329   - public List<ScheduleRealInfo> queryListWaybillQp(String clZbh, String date, String line) {
11330   - // TODO Auto-generated method stub
11331   - DecimalFormat format = new DecimalFormat("0.00");
11332   - List<ScheduleRealInfo> list = null;
11333   - list = scheduleRealInfoRepository.queryListWaybill2(clZbh, date, line);
11334   - List<ScheduleRealInfo> newList = new ArrayList<ScheduleRealInfo>();
11335   - for (int i = 0; i < list.size(); i++) {
11336   - ScheduleRealInfo s = list.get(i);
11337   - if (!(s.getBcType().equals("in") || s.getBcType().equals("out"))) {
11338   - String remarks = "";
11339   - Double sjlc = 0.0;
11340   - if (s.getRemarks() != null) {
11341   - remarks += s.getRemarks();
11342   - }
11343   - Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
11344   - if (!childTaskPlans.isEmpty()) {
11345   - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
11346   - while (it.hasNext()) {
11347   - ChildTaskPlan c = it.next();
11348   - if (c.getRemarks() != null && c.getRemarks().length() > 0) {
11349   - if (remarks.indexOf(c.getRemarks()) == -1) {
11350   - remarks += c.getRemarks();
11351   - }
11352   - }
11353   -
11354   - if (!c.isDestroy()) {
11355   - if (c.getMileageType().equals("service")) {
11356   - sjlc += c.getMileage() == null ? 0 : c.getMileage();
11357   - }
11358   - }
11359   -
11360   - }
11361   - } else {
11362   - if (s.getStatus() != -1) {
11363   - sjlc = s.getJhlc();
11364   - }
11365   - }
11366   - s.setSjlc(format.format(sjlc));
11367   - s.setRemarks(remarks);
11368   - newList.add(s);
11369   - }
11370   -
11371   - }
11372   -
11373   - return newList;
11374   - }
11375   -
11376   - @Override
11377   - public Map<String, Object> MapById(Long id) {
11378   - // TODO Auto-generated method stub
11379   - Map<String, Object> dMap=new HashMap<>();
11380   - dMap.put("dGroup_eq", "oilType");
11381   - Iterator<Dictionary> it= dictionaryService.list(dMap).iterator();
11382   - while (it.hasNext()) {
11383   - Dictionary d=it.next();
11384   - dMap.put(d.getdCode(), d.getdName());
11385   - }
11386   - Map<String, Object> map = new HashMap<String, Object>();
11387   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
11388   - ScheduleRealInfo s = scheduleRealInfoRepository.scheduleById(id);
11389   - String xlbm = s.getXlBm();
11390   - String fcrq = s.getScheduleDateStr();
11391   -
11392   - int type = 2;
11393   - Double ccyl = 0.0;
11394   - Double jcyl = 0.0;
11395   - Double yh = 0.0;
11396   - Double jzl = 0.0;
11397   - Double zlc = 0.0;
11398   - String rylx="";
11399   - List<Cars> listCars = carsRepository.findCarsByCode(s.getClZbh());
11400   - if (listCars.size() > 0) {
11401   - if (listCars.get(0).getSfdc() != null) {
11402   - if (listCars.get(0).getSfdc()) {
11403   - List<Dlb> listDlb = dlbRepository.queryListDlb(fcrq, s.getClZbh(), s.getjGh(), xlbm);
11404   - type = 1;
11405   - for (int i = 0; i < listDlb.size(); i++) {
11406   - Dlb d = listDlb.get(i);
11407   - if (d.getLp() == null) {
11408   - ccyl = Arith.add(ccyl, d.getCzcd());
11409   - jcyl = Arith.add(jcyl, d.getJzcd());
11410   - yh = Arith.add(yh, d.getHd());
11411   - jzl = Arith.add(jzl, d.getCdl());
11412   - zlc = Arith.add(zlc, d.getZlc());
11413   - } else {
11414   - if (d.getLp().equals(s.getLpName())) {
11415   - ccyl = Arith.add(ccyl, d.getCzcd());
11416   - jcyl = Arith.add(jcyl, d.getJzcd());
11417   - yh = Arith.add(yh, d.getHd());
11418   - jzl = Arith.add(jzl, d.getCdl());
11419   - zlc = Arith.add(zlc, d.getZlc());
11420   - }
11421   - }
11422   -
11423   - }
11424   - } else {
11425   - List<Ylb> listYlb = ylbRepository.queryListYlb(fcrq, s.getClZbh(), s.getjGh(), xlbm);
11426   - type = 0;
11427   - for (int i = 0; i < listYlb.size(); i++) {
11428   - Ylb y = listYlb.get(i);
11429   - if (y.getLp() == null) {
11430   - ccyl = Arith.add(ccyl, y.getCzyl());
11431   - jcyl = Arith.add(jcyl, y.getJzyl());
11432   - yh = Arith.add(yh, y.getYh());
11433   - jzl = Arith.add(jzl, y.getJzl());
11434   - zlc = Arith.add(zlc, y.getZlc());
11435   - if(dMap.get(y.getRylx())!=null)
11436   - rylx =dMap.get(y.getRylx()).toString();
11437   - } else {
11438   - if (y.getLp().equals(s.getLpName())) {
11439   - ccyl = Arith.add(ccyl, y.getCzyl());
11440   - jcyl = Arith.add(jcyl, y.getJzyl());
11441   - yh = Arith.add(yh, y.getYh());
11442   - jzl = Arith.add(jzl, y.getJzl());
11443   - zlc = Arith.add(zlc, y.getZlc());
11444   - if(dMap.get(y.getRylx())!=null)
11445   - rylx =dMap.get(y.getRylx()).toString();
11446   - }
11447   - }
11448   - }
11449   - }
11450   - }
11451   - }
11452   -
11453   - map.put("rylx", "加注类别:"+rylx);
11454   - map.put("jzl", jzl);
11455   - map.put("yh", yh);
11456   - map.put("ccyl", ccyl);
11457   - map.put("jcyl", jcyl);
11458   - map.put("type", type);
11459   - map.put("zlc", zlc);
11460   - map.put("xlName", s.getXlName());
11461   - map.put("clZbh", s.getClZbh());
11462   - map.put("plate", BasicData.nbbmCompanyPlateMap.get(s.getClZbh()));
11463   - map.put("fcsjActual", s.getFcsjActual());
11464   - map.put("zdzName", s.getZdzName());
11465   - map.put("scheduleDate", s.getScheduleDateStr());
11466   - map.put("lpName", s.getLpName());
11467   - String zdp = "", zwdp = "", wdp = "";
11468   - String zdpT = "", zwdpT = "", wdpT = "";
11469   - String dbdp = "";
11470   - List<DutyEmployee> list = dutyEmployeeService.getDutyEmployee(xlbm, fcrq + "00:01", fcrq + "23:59");
11471   - try {
11472   - Long fcsj1 = sdf.parse(fcrq + " 00:01").getTime();
11473   - Long fcsj2 = sdf.parse(fcrq + " 11:00").getTime();
11474   - Long fcsj3 = sdf.parse(fcrq + " 23:59").getTime();
11475   - for (int i = 0; i < list.size(); i++) {
11476   - DutyEmployee t = list.get(i);
11477   - if (dbdp.indexOf(t.getuName()) == -1) {
11478   - if (!(dbdp.length() > 0)) {
11479   - dbdp = t.getuName();
11480   - } else {
11481   - dbdp += "," + t.getuName();
11482   - }
11483   - }
11484   - Long ts = t.getTs();
11485   - if (ts > fcsj1 && ts < fcsj2) {
11486   - if (zdp.indexOf(t.getuName()) == -1) {
11487   - if (!(zdp.length() > 0)) {
11488   - zdpT = t.getuName() + "...";
11489   - }
11490   - zdp += t.getuName() + ",";
11491   -
11492   - }
11493   - } else if (ts > fcsj2 && ts < fcsj3) {
11494   - if (zwdp.indexOf(t.getuName()) == -1) {
11495   - if (!(zwdp.length() > 0)) {
11496   - zwdpT = t.getuName() + "...";
11497   - }
11498   - zwdp += t.getuName() + ",";
11499   - }
11500   - } else {
11501   - if (wdp.indexOf(t.getuName()) == -1) {
11502   - if (!(wdp.length() > 0)) {
11503   - wdpT = t.getuName() + "...";
11504   - }
11505   - wdp += t.getuName() + ",";
11506   - }
11507   - }
11508   - }
11509   - } catch (ParseException e) {
11510   - // TODO Auto-generated catch block
11511   - e.printStackTrace();
11512   - }
11513   - map.put("zdp", zdp);
11514   - map.put("zwdp", zwdp);
11515   - map.put("wdp", wdp);
11516   - map.put("zdpT", zdpT);
11517   - map.put("zwdpT", zwdpT);
11518   - map.put("wdpT", wdpT);
11519   - map.put("dbdp", dbdp);
11520   - return map;
11521   - }
11522   -
11523   - @Override
11524   - public Map<String, Object> MapByIdQp(Long id) {
11525   - // TODO Auto-generated method stub
11526   - Map<String, Object> map = new HashMap<String, Object>();
11527   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
11528   - ScheduleRealInfo s = scheduleRealInfoRepository.scheduleById(id);
11529   - String xlbm = s.getXlBm();
11530   - String fcrq = s.getScheduleDateStr();
11531   -
11532   - int type = 0;
11533   - Double ccyl = 0.0;
11534   - Double jcyl = 0.0;
11535   - Double yh = 0.0;
11536   - Double jzl = 0.0;
11537   - Double zlc = 0.0;
11538   -// List<Ylb> listYlb = ylbRepository.queryListYlb(fcrq, s.getClZbh(), s.getjGh(),xlbm);
11539   -// List<Dlb> listDlb = dlbRepository.queryListDlb(fcrq, s.getClZbh(), s.getjGh(),xlbm);
11540   -// if(listYlb.size()>0){
11541   -// type=0;
11542   -// for (int i = 0; i < listYlb.size(); i++) {
11543   -// Ylb y = listYlb.get(i);
11544   -// if(y.getLp()==null){
11545   -// ccyl=Arith.add(ccyl, y.getCzyl());
11546   -// jcyl=Arith.add(jcyl, y.getJzyl());
11547   -// yh =Arith.add(yh ,y.getYh());
11548   -// jzl =Arith.add(jzl, y.getJzl());
11549   -// zlc =Arith.add(zlc, y.getZlc());
11550   -// }else{
11551   -// if(y.getLp().equals(s.getLpName())){
11552   -// ccyl=Arith.add(ccyl, y.getCzyl());
11553   -// jcyl=Arith.add(jcyl, y.getJzyl());
11554   -// yh =Arith.add(yh ,y.getYh());
11555   -// jzl =Arith.add(jzl, y.getJzl());
11556   -// zlc =Arith.add(zlc, y.getZlc());
11557   -// }
11558   -// }
11559   -//
11560   -// }
11561   -// }else{
11562   -// type=1;
11563   -// for (int i = 0; i < listDlb.size(); i++) {
11564   -// Dlb d=listDlb.get(i);
11565   -// if(d.getLp()==null){
11566   -// ccyl=Arith.add(ccyl, d.getCzcd());
11567   -// jcyl=Arith.add(jcyl, d.getJzcd());
11568   -// yh =Arith.add(yh ,d.getHd());
11569   -// jzl =Arith.add(jzl, d.getCdl());
11570   -// zlc =Arith.add(zlc, d.getZlc());
11571   -// }else{
11572   -// if(d.getLp().equals(s.getLpName())){
11573   -// ccyl=Arith.add(ccyl, d.getCzcd());
11574   -// jcyl=Arith.add(jcyl, d.getJzcd());
11575   -// yh =Arith.add(yh ,d.getHd());
11576   -// jzl =Arith.add(jzl, d.getCdl());
11577   -// zlc =Arith.add(zlc, d.getZlc());
11578   -// }
11579   -// }
11580   -//
11581   -// }
11582   -// }
11583   -
11584   - List<Ylxxb> listylxxb = ylxxbRepository.queryListYlxxb(s.getClZbh(), fcrq);
11585   - for (int i = 0; i < listylxxb.size(); i++) {
11586   - Ylxxb t = listylxxb.get(i);
11587   - jzl = Arith.add(jzl, t.getJzl());
11588   - }
11589   - map.put("jzl", jzl);
11590   - map.put("yh", yh);
11591   - map.put("ccyl", ccyl);
11592   - map.put("jcyl", jcyl);
11593   - map.put("type", type);
11594   - map.put("zlc", zlc);
11595   - map.put("xlName", s.getXlName());
11596   - map.put("clZbh", s.getClZbh());
11597   - map.put("plate", BasicData.nbbmCompanyPlateMap.get(s.getClZbh()));
11598   - map.put("fcsjActual", s.getFcsjActual());
11599   - map.put("zdzName", s.getZdzName());
11600   - map.put("scheduleDate", s.getScheduleDateStr());
11601   - map.put("lpName", s.getLpName());
11602   - String zdp = "", zwdp = "", wdp = "";
11603   - String zdpT = "", zwdpT = "", wdpT = "";
11604   - String dbdp = "";
11605   - List<DutyEmployee> list = dutyEmployeeService.getDutyEmployee(xlbm, fcrq + "00:01", fcrq + "23:59");
11606   - try {
11607   - Long fcsj1 = sdf.parse(fcrq + " 00:01").getTime();
11608   - Long fcsj2 = sdf.parse(fcrq + " 11:00").getTime();
11609   - Long fcsj3 = sdf.parse(fcrq + " 23:59").getTime();
11610   - for (int i = 0; i < list.size(); i++) {
11611   - DutyEmployee t = list.get(i);
11612   - if (dbdp.indexOf(t.getuName()) == -1) {
11613   - if (!(dbdp.length() > 0)) {
11614   - dbdp = t.getuName();
11615   - } else {
11616   - dbdp += "," + t.getuName();
11617   - }
11618   - }
11619   - Long ts = t.getTs();
11620   - if (ts > fcsj1 && ts < fcsj2) {
11621   - if (zdp.indexOf(t.getuName()) == -1) {
11622   - if (!(zdp.length() > 0)) {
11623   - zdpT = t.getuName() + "...";
11624   - }
11625   - zdp += t.getuName() + ",";
11626   -
11627   - }
11628   - } else if (ts > fcsj2 && ts < fcsj3) {
11629   - if (zwdp.indexOf(t.getuName()) == -1) {
11630   - if (!(zwdp.length() > 0)) {
11631   - zwdpT = t.getuName() + "...";
11632   - }
11633   - zwdp += t.getuName() + ",";
11634   - }
11635   - } else {
11636   - if (wdp.indexOf(t.getuName()) == -1) {
11637   - if (!(wdp.length() > 0)) {
11638   - wdpT = t.getuName() + "...";
11639   - }
11640   - wdp += t.getuName() + ",";
11641   - }
11642   - }
11643   - }
11644   - } catch (ParseException e) {
11645   - // TODO Auto-generated catch block
11646   - e.printStackTrace();
11647   - }
11648   - map.put("zdp", zdp);
11649   - map.put("zwdp", zwdp);
11650   - map.put("wdp", wdp);
11651   - map.put("zdpT", zdpT);
11652   - map.put("zwdpT", zwdpT);
11653   - map.put("wdpT", wdpT);
11654   - map.put("dbdp", dbdp);
11655   - return map;
11656   - }
11657   -
11658   - @Override
11659   - public List<Map<String, Object>> scheduleDailyQp(String line, String date) {
11660   - // TODO Auto-generated method stub
11661   - List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
11662   - List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.scheduleDailyQp(line, date);
11663   - Map<String, Object> map = null;
11664   - String lp = "lp";
11665   - String jgh = "jgh";
11666   - String clzbh = "clzbh";
11667   - int bcs = 0;
11668   - String thclzbh = "";
11669   - String sgh = "sgh";
11670   - for (int i = 0; i < scheduleRealInfos.size(); i++) {
11671   - ScheduleRealInfo scheduleRealInfo = scheduleRealInfos.get(i);
11672   - if (scheduleRealInfo.getLpName().equals(lp)) {
11673   - bcs++;
11674   - String fcsj = scheduleRealInfo.getFcsj();
11675   -
11676   - if (!clzbh.equals(scheduleRealInfo.getClZbh())) {
11677   - clzbh = scheduleRealInfo.getClZbh();
11678   - if (thclzbh == "") {
11679   - thclzbh += scheduleRealInfo.getClZbh() + ",";
11680   - } else {
11681   - thclzbh += scheduleRealInfo.getClZbh();
11682   - }
11683   - map.put("thclzbh", thclzbh);
11684   - }
11685   -
11686   - if (!jgh.equals(scheduleRealInfo.getjGh())) {
11687   - jgh = scheduleRealInfo.getjGh();
11688   - if (map.get("jjb2") != null) {
11689   - map.put("jjb3", scheduleRealInfo.getjGh() + "/" +
11690   - scheduleRealInfo.getFcsjActual());
11691   -
11692   - } else {
11693   - map.put("jjb2", scheduleRealInfo.getjGh() + "/" +
11694   - scheduleRealInfo.getFcsjActual());
11695   - }
11696   -
11697   - }
11698   -
11699   - if (scheduleRealInfo.getsGh() != null) {
11700   - if (!scheduleRealInfo.getsGh().equals(sgh)) {
11701   - sgh = scheduleRealInfo.getsGh() == null ? "" : scheduleRealInfo.getsGh();
11702   - if (!sgh.equals("")) {
11703   - if (map.get("sjb1") != null) {
11704   - if (map.get("sjb2") != null) {
11705   - map.put("sjb3", scheduleRealInfo.getsGh() + "/" +
11706   - scheduleRealInfo.getFcsjActual());
11707   - } else {
11708   - map.put("sjb2", scheduleRealInfo.getsGh() + "/" +
11709   - scheduleRealInfo.getFcsjActual());
11710   - }
11711   - } else {
11712   - map.put("sjb1", scheduleRealInfo.getsGh() + "/" +
11713   - scheduleRealInfo.getFcsjActual());
11714   - }
11715   - }
11716   - }
11717   - }
11718   - if (scheduleRealInfo.getFcsjActual() != null) {
11719   - String fcsjs[] = fcsj.split(":");
11720   - String fcsjActuals[] = scheduleRealInfo.getFcsjActual().split(":");
11721   - int a = Integer.parseInt(fcsjActuals[0]) * 60 + Integer.parseInt(fcsjActuals[1]);
11722   - int b = Integer.parseInt(fcsjs[0]) * 60 + Integer.parseInt(fcsjs[1]);
11723   - map.put("cz" + bcs, b - a);
11724   - } else {
11725   - map.put("cz" + bcs, "无");
11726   - }
11727   - map.put("lp", scheduleRealInfo.getLpName());
11728   - map.put("dd" + bcs, scheduleRealInfo.getZdsjActual());
11729   - map.put("kc" + bcs, scheduleRealInfo.getFcsjActual());
11730   -
11731   - if (i < scheduleRealInfos.size() - 1) {
11732   - if (!scheduleRealInfos.get(i + 1).getLpName().equals
11733   - (scheduleRealInfos.get(i).getLpName())) {
11734   - list.add(map);
11735   - lp = "lp";
11736   - jgh = "jgh";
11737   - clzbh = "clzbh";
11738   - bcs = 0;
11739   - thclzbh = "";
11740   - sgh = "sgh";
11741   - }
11742   - } else {
11743   - list.add(map);
11744   - }
11745   - } else {
11746   - bcs = 1;
11747   - map = new HashMap<String, Object>();
11748   - lp = scheduleRealInfo.getLpName();
11749   - jgh = scheduleRealInfo.getjGh();
11750   - clzbh = scheduleRealInfo.getClZbh();
11751   - if (scheduleRealInfo.getsGh() != null) {
11752   - sgh = scheduleRealInfo.getsGh();
11753   - map.put("sjb1", scheduleRealInfo.getsGh() + "/" +
11754   - scheduleRealInfo.getFcsjActual());
11755   - }
11756   - String fcsj = scheduleRealInfo.getFcsj();
11757   - scheduleRealInfo.getFcsjActual();
11758   - map.put("jjb1", jgh + "/" + scheduleRealInfo.getFcsjActual());
11759   - map.put("cccl", clzbh);
11760   -
11761   - if (scheduleRealInfo.getFcsjActual() != null) {
11762   - String fcsjs[] = fcsj.split(":");
11763   - String fcsjActuals[] = scheduleRealInfo.getFcsjActual().split(":");
11764   - int a = Integer.parseInt(fcsjActuals[0]) * 60 + Integer.parseInt(fcsjActuals[1]);
11765   - int b = Integer.parseInt(fcsjs[0]) * 60 + Integer.parseInt(fcsjs[1]);
11766   - map.put("cz" + bcs, b - a);
11767   - } else {
11768   - map.put("cz" + bcs, "无");
11769   - }
11770   -
11771   -
11772   - map.put("lp", scheduleRealInfo.getLpName());
11773   - map.put("dd" + bcs, scheduleRealInfo.getZdsjActual());
11774   - map.put("kc" + bcs, scheduleRealInfo.getFcsjActual());
11775   -
11776   - if (i < scheduleRealInfos.size() - 1) {
11777   - if (!scheduleRealInfos.get(i + 1).getLpName().equals
11778   - (scheduleRealInfos.get(i).getLpName())) {
11779   - list.add(map);
11780   - lp = "lp";
11781   - jgh = "jgh";
11782   - clzbh = "clzbh";
11783   - bcs = 0;
11784   - thclzbh = "";
11785   - sgh = "sgh";
11786   - }
11787   - } else {
11788   - list.add(map);
11789   - }
11790   - }
11791   -
11792   - }
11793   - return list;
11794   - }
11795   -
11796   -
11797   - @Override
11798   - public List<Map<String, Object>> scheduleDailyExport(Map<String, Object> map) {
11799   - String line = map.get("line").toString();
11800   - String date = map.get("date").toString();
11801   - String xlName = map.get("xlName").toString();
11802   - String state = map.get("state").toString();
11803   - String type = map.get("type").toString();
11804   - String genre =map.get("genre").toString();
11805   - String df="";
11806   - if(map.get("df")!=null){
11807   - df=map.get("df").toString();
11808   - }
11809   -
11810   - List<Map<String, Object>> dataList2 = new ArrayList<Map<String, Object>>();
11811   - List<Map<String, Object>> dataList3 = new ArrayList<Map<String, Object>>();
11812   - List<Map<String, Object>> list1 = this.statisticsDaily(line, date, xlName, null);
11813   - List<ScheduleRealInfo> list2 = this.queryUserInfo(line, date, state);
11814   - List<ScheduleRealInfo> list3 = new ArrayList<ScheduleRealInfo>();
11815   - if(genre.equals("qp"))
11816   - list3=this.realScheduleListQp(line, date);
11817   - else if(genre.equals("zrw"))
11818   - list3=this.realScheduleList_zrw(line, date);
11819   - else
11820   - list3=this.realScheduleList(line, date);
11821   - Map<String, Object> nMap = new HashMap<String, Object>();
11822   - nMap.put("date", xlName + date);
11823   - nMap.put("jls", list1.get(0).get("jls"));
11824   - nMap.put("sjgl", list1.get(0).get("sjgl"));
11825   - for (Map<String, Object> m : list1) {
11826   -// m.put("ssgl", m.get("ssgl"));
11827   -// m.put("ssbc", m.get("ssbc"));
11828   -// m.put("ssgl_lz", m.get("ssgl_lz") + " / " + m.get("ssbc_lz"));
11829   -// m.put("ssgl_dm", m.get("ssgl_dm") + " / " + m.get("ssbc_dm"));
11830   -// m.put("ssgl_gz", m.get("ssgl_gz") + " / " + m.get("ssbc_gz"));
11831   -// m.put("ssgl_jf", m.get("ssgl_jf") + " / " + m.get("ssbc_jf"));
11832   -// m.put("ssgl_zs", m.get("ssgl_zs") + " / " + m.get("ssbc_zs"));
11833   -// m.put("ssgl_qr", m.get("ssgl_qr") + " / " + m.get("ssbc_qr"));
11834   -// m.put("ssgl_qc", m.get("ssgl_qc") + " / " + m.get("ssbc_qc"));
11835   -// m.put("ssgl_kx", m.get("ssgl_kx") + " / " + m.get("ssbc_kx"));
11836   -// m.put("ssgl_qh", m.get("ssgl_qh") + " / " + m.get("ssbc_qh"));
11837   -// m.put("ssgl_yw", m.get("ssgl_yw") + " / " + m.get("ssbc_yw"));
11838   -// m.put("ssgl_other", m.get("ssgl_other") + " / " + m.get("ssbc_other"));
11839   - }
11840   -
11841   - int size = 0;
11842   - Map<String, Object> tempMap = new HashMap<String, Object>();
11843   - for (int i = 0; i < list2.size(); i++) {
11844   - ScheduleRealInfo s = list2.get(i);
11845   - if (size == 5) {
11846   - size = 0;
11847   - dataList2.add(tempMap);
11848   - tempMap = new HashMap<String, Object>();
11849   - }
11850   - tempMap.put("lp" + size, s.getLpName());
11851   - tempMap.put("ch" + size, s.getClZbh());
11852   - tempMap.put("jz" + size, s.getjGh() + "/" + s.getjName());
11853   - tempMap.put("sz" + size, "");
11854   - tempMap.put("jw" + size, "");
11855   - tempMap.put("sw" + size, "");
11856   -
11857   - size++;
11858   - }
11859   - if (size < 5) {
11860   - for (; size < 5; size++) {
11861   - tempMap.put("lp" + size, "");
11862   - tempMap.put("ch" + size, "");
11863   - tempMap.put("jz" + size, "");
11864   - tempMap.put("sz" + size, "");
11865   - tempMap.put("jw" + size, "");
11866   - tempMap.put("sw" + size, "");
11867   - }
11868   - }
11869   -
11870   - dataList2.add(tempMap);
11871   -/*
11872   - size = 0;
11873   - tempMap = new HashMap<String, Object>();
11874   - for (ScheduleRealInfo schedule : list3) {
11875   - if (size == 3) {
11876   - size = 0;
11877   - dataList3.add(tempMap);
11878   - tempMap = new HashMap<String, Object>();
11879   - }
11880   - tempMap.put("lpName" + size, schedule.getLpName());
11881   - tempMap.put("qdzName" + size, schedule.getQdzName());
11882   - tempMap.put("zdsj" + size, schedule.getZdsj());
11883   - tempMap.put("zdsjActual" + size, schedule.getZdsjActual() != null ? schedule.getZdsjActual() : "");
11884   - tempMap.put("zdsjk" + size, "");
11885   - tempMap.put("zdsjm" + size, "");
11886   - tempMap.put("fcsj" + size, schedule.getFcsj());
11887   - String fcsjActural=schedule.getFcsjActual() != null ? schedule.getFcsjActual() : "";
11888   - String bcType=schedule.getBcType()!=null?schedule.getBcType():"";
11889   - if(bcType.equals("in")){
11890   - fcsjActural=fcsjActural+"(进)";
11891   - }
11892   - if(bcType.equals("out")){
11893   - fcsjActural=fcsjActural+"(出)";
11894   - }
11895   - tempMap.put("fcsjActual" + size, fcsjActural);
11896   - tempMap.put("fcsjk" + size, "");
11897   - tempMap.put("fcsjm" + size, "");
11898   - tempMap.put("remarks" + size, schedule.getRemarks() != null ? schedule.getRemarks() : "");
11899   -
11900   - size++;
11901   - }
11902   - if (size < 3) {
11903   - for (; size < 3; size++) {
11904   - tempMap.put("lpName" + size, "");
11905   - tempMap.put("qdzName" + size, "");
11906   - tempMap.put("zdsj" + size, "");
11907   - tempMap.put("zdsjActual" + size, "");
11908   - tempMap.put("zdsjk" + size, "");
11909   - tempMap.put("zdsjm" + size, "");
11910   - tempMap.put("fcsj" + size, "");
11911   - tempMap.put("fcsjActual" + size, "");
11912   - tempMap.put("fcsjk" + size, "");
11913   - tempMap.put("fcsjm" + size, "");
11914   - tempMap.put("remarks" + size, "");
11915   - }
11916   - }
11917   -*/
11918   -
11919   - size = 0;
11920   - tempMap = new HashMap<String, Object>();
11921   - for (ScheduleRealInfo schedule : list3) {
11922   - int x = size % 3;
11923   - if (x == 0 && size > 0) {
11924   - dataList3.add(tempMap);
11925   - tempMap = new HashMap<String, Object>();
11926   - }
11927   - tempMap.put("lpName" + x, schedule.getLpName());
11928   - tempMap.put("qdzName" + x, schedule.getQdzName());
11929   - tempMap.put("zdsj" + x, schedule.getZdsj());
11930   - String zdsjActual = schedule.getZdsjActual() != null ? schedule.getZdsjActual() : "";
11931   - tempMap.put("zdsjActual" + x, zdsjActual);
11932   -
11933   - String zdsjk = "";
11934   - String zdsjm = "";
11935   - if (!zdsjActual.equals("")) {
11936   - String[] zdsj_s = schedule.getZdsj().split(":");
11937   - String[] zdsjActual_s = zdsjActual.split(":");
11938   - Long zdsj_ = Long.parseLong(zdsj_s[0]) * 60 + Long.parseLong(zdsj_s[1]);
11939   - Long zdsjActual_ = Long.parseLong(zdsjActual_s[0]) * 60 + Long.parseLong(zdsjActual_s[1]);
11940   - if ((zdsj_ - zdsjActual_) > 0) {
11941   - if(zdsj_ - zdsjActual_>1200){
11942   - zdsjm=String.valueOf(1440-(zdsj_-zdsjActual_));
11943   - }else{
11944   - zdsjk = String.valueOf(zdsj_ - zdsjActual_);
11945   - }
11946   - } else {
11947   - if(zdsjActual_ - zdsj_>1200){
11948   - zdsjk =String.valueOf(1440-(zdsjActual_ - zdsj_));
11949   - }else{
11950   - zdsjm = String.valueOf(zdsjActual_ - zdsj_);
11951   - }
11952   - }
11953   - }
11954   - tempMap.put("zdsjk" + x, zdsjk);
11955   - tempMap.put("zdsjm" + x, zdsjm.equals("0")?"":zdsjm);
11956   - tempMap.put("fcsj" + x, schedule.getFcsj());
11957   - String fcsjActural = schedule.getFcsjActual() != null ? schedule.getFcsjActual() : "";
11958   - String bcType = schedule.getBcType() != null ? schedule.getBcType() : "";
11959   - String fcsjActuralstr = "";
11960   - if (bcType.equals("in")) {
11961   - fcsjActuralstr = fcsjActural + "(进)";
11962   - } else if (bcType.equals("out")) {
11963   - fcsjActuralstr = fcsjActural + "(出)";
11964   - } else {
11965   - fcsjActuralstr = fcsjActural;
11966   - }
11967   - tempMap.put("fcsjActual" + x, fcsjActuralstr);
11968   - String fcsjk = "";
11969   - String fcsjm = "";
11970   - String dfsjk ="";
11971   - String dfsjm="";
11972   - if (!fcsjActural.equals("")) {
11973   - String[] fcsj_s = schedule.getFcsj().split(":");
11974   - String[] fcsjActural_s = fcsjActural.split(":");
11975   - Long fcsj_ = Long.parseLong(fcsj_s[0]) * 60 + Long.parseLong(fcsj_s[1]);
11976   - Long fcsjActural_ = Long.parseLong(fcsjActural_s[0]) * 60 + Long.parseLong(fcsjActural_s[1]);
11977   - if ((fcsj_ - fcsjActural_) > 0) {
11978   - if(fcsj_ - fcsjActural_>1200){
11979   - fcsjm=String.valueOf(1440-(fcsj_ - fcsjActural_));
11980   - }else{
11981   - fcsjk = String.valueOf(fcsj_ - fcsjActural_);
11982   - }
11983   - } else {
11984   - if(fcsjActural_ - fcsj_>1200){
11985   - fcsjk =String.valueOf(1440-(fcsjActural_ - fcsj_));
11986   - }
11987   - else{
11988   - fcsjm = String.valueOf(fcsjActural_ - fcsj_);
11989   - }
11990   - }
11991   - if(df.equals("df")){
11992   - String[] dfsj_s =schedule.getDfsj().split(":");
11993   - Long dfsj_ = Long.parseLong(dfsj_s[0]) * 60 + Long.parseLong(dfsj_s[1]);
11994   - if ((dfsj_ - fcsjActural_) > 0) {
11995   - if(dfsj_ - fcsjActural_>1200){
11996   - dfsjm=String.valueOf(1440-(dfsj_ - fcsjActural_));
11997   - }else{
11998   - dfsjk = String.valueOf(dfsj_ - fcsjActural_);
11999   - }
12000   - } else {
12001   - if(fcsjActural_ - dfsj_>1200){
12002   - dfsjk= String.valueOf(1440-(fcsjActural_ - dfsj_));
12003   - }else{
12004   - dfsjm = String.valueOf(fcsjActural_ - dfsj_);
12005   - }
12006   - }
12007   - }
12008   - }
12009   - if(df.equals("df")){
12010   - tempMap.put("dfsj"+x,schedule.getDfsj());
12011   - tempMap.put("dfsjk" + x, dfsjk);
12012   - tempMap.put("dfsjm" + x, dfsjm.equals("0")?"":dfsjm);
12013   - }
12014   - tempMap.put("fcsjk" + x, fcsjk);
12015   - tempMap.put("fcsjm" + x, fcsjm.equals("0")?"":fcsjm);
12016   - tempMap.put("remarks" + x, schedule.getRemark() != null ? schedule.getRemark() : "");
12017   -
12018   - size++;
12019   - }
12020   - if (tempMap.get("lpName0") != null) {
12021   - if (tempMap.get("lpName1") == null) {
12022   - tempMap.put("lpName1", "");
12023   - tempMap.put("qdzName1", "");
12024   - tempMap.put("zdsj1", "");
12025   - tempMap.put("zdsjActual1", "");
12026   - tempMap.put("zdsjk1", "");
12027   - tempMap.put("zdsjm1", "");
12028   - tempMap.put("fcsj1", "");
12029   - tempMap.put("fcsjActual1", "");
12030   - tempMap.put("fcsjk1", "");
12031   - tempMap.put("fcsjm1", "");
12032   - if(df.equals("df")){
12033   - tempMap.put("dfsj1","");
12034   - tempMap.put("dfsjk1" , "");
12035   - tempMap.put("dfsjm1" , "");
12036   - }
12037   - tempMap.put("remarks1", "");
12038   - }
12039   - if (tempMap.get("lpName2") == null) {
12040   - tempMap.put("lpName2", "");
12041   - tempMap.put("qdzName2", "");
12042   - tempMap.put("zdsj2", "");
12043   - tempMap.put("zdsjActual2", "");
12044   - tempMap.put("zdsjk2", "");
12045   - tempMap.put("zdsjm2", "");
12046   - tempMap.put("fcsj2", "");
12047   - tempMap.put("fcsjActual2", "");
12048   - tempMap.put("fcsjk2", "");
12049   - tempMap.put("fcsjm2", "");
12050   - if(df.equals("df")){
12051   - tempMap.put("dfsj2","");
12052   - tempMap.put("dfsjk2" , "");
12053   - tempMap.put("dfsjm2" , "");
12054   - }
12055   - tempMap.put("remarks2", "");
12056   - }
12057   - dataList3.add(tempMap);
12058   - }
12059   -
12060   - if (date.length() == 10) {
12061   - List<DutyEmployee> list = dutyEmployeeService.getDutyEmployee(line, date + "00:01", date + "23:59");
12062   - String dbdp = "";
12063   - try {
12064   - for (int i = 0; i < list.size(); i++) {
12065   - DutyEmployee t = list.get(i);
12066   - if (dbdp.indexOf(t.getuName()) == -1) {
12067   - if (!(dbdp.length() > 0)) {
12068   - dbdp = t.getuName();
12069   - } else {
12070   - dbdp += "," + t.getuName();
12071   - }
12072   - }
12073   - }
12074   - } catch (Exception e) {
12075   - // TODO: handle exception
12076   - e.printStackTrace();
12077   - }
12078   - nMap.put("dbdp", dbdp);
12079   - }
12080   -
12081   - if (type.equals("export")) {
12082   - String lineName = "";
12083   - if (map.containsKey("lineName"))
12084   - lineName = "-" + map.get("lineName").toString() + "-";
12085   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
12086   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
12087   - Map<String, Object> m = new HashMap<String, Object>();
12088   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
12089   - ReportUtils ee = new ReportUtils();
12090   - try {
12091   - listI.add(list1.iterator());
12092   - listI.add(dataList2.iterator());
12093   - listI.add(dataList3.iterator());
12094   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
12095   - String sourcePath = path + "mould/scheduleDaily.xls";
12096   - if (date.length() == 7) {
12097   - sdfMonth = new SimpleDateFormat("yyyy-MM");
12098   - sdfSimple = new SimpleDateFormat("yyyyMM");
12099   - sourcePath = path + "mould/scheduleDaily_m.xls";
12100   - }
12101   - if(df.equals("df")){
12102   - sourcePath =path + "mould/scheduleDaily_df.xls";
12103   - }
12104   - ee.excelReplace(listI, new Object[]{nMap}, sourcePath,
12105   - path + "export/" + sdfSimple.format(sdfMonth.parse(date)) + lineName + "调度日报.xls");
12106   - } catch (Exception e) {
12107   - // TODO: handle exception
12108   - e.printStackTrace();
12109   - }
12110   - }
12111   -
12112   - return new ArrayList<Map<String, Object>>();
12113   - }
12114   -
12115   - public void exportWaybill_pl(List<ScheduleRealInfo> listpl,
12116   - String date, String jName, String clZbh, String lpName) {
12117   - ReportUtils ee = new ReportUtils();
12118   - ReportRelatedUtils rru = new ReportRelatedUtils();
12119   - List<Iterator<?>> list = new ArrayList<Iterator<?>>();
12120   - List<ScheduleRealInfo> scheduleRealInfos = listpl;
12121   - List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
12122   -// List<ScheduleRealInfo> scheduleRealInfos=scheduleRealInfoRepository.queryListWaybillXcld(jName, clZbh, lpName, date, line);
12123   - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
12124   - for (int i = 0; i < scheduleRealInfos.size(); i++) {
12125   - ScheduleRealInfo s = scheduleRealInfos.get(i);
12126   - Set<ChildTaskPlan> cts = s.getcTasks();
12127   - if (cts != null && cts.size() > 0) {
12128   - lists.add(s);
12129   - } else {
12130   - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
12131   - lists.add(s);
12132   - }
12133   - }
12134   - }
12135   - DecimalFormat format = new DecimalFormat("0.00");
12136   -// int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName);
12137   -// int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName);
12138   - //计算里程和班次数,并放入Map里
12139   - Map<String, Object> map = this.MapById(scheduleRealInfos.get(0).getId());
12140   -
12141   - map.put("jhlc", Arith.add(culateMieageService.culateJhgl(scheduleRealInfos), culateMieageService.culateJhJccgl(scheduleRealInfos)));
12142   - map.put("remMileage", culateMieageService.culateLbgl(scheduleRealInfos));
12143   - map.put("addMileage", culateMieageService.culateLjgl(lists));
12144   - double yygl = Arith.add(culateMieageService.culateSjgl(lists), culateMieageService.culateLjgl(lists));
12145   - map.put("yygl", yygl);
12146   - double ksgl = Arith.add(culateMieageService.culateKsgl(scheduleRealInfos), culateMieageService.culateJccgl(lists));
12147   - map.put("ksgl", ksgl);
12148   - map.put("realMileage", Arith.add(yygl, ksgl));
12149   - map.put("jhbc", culateMieageService.culateJhbc(scheduleRealInfos, ""));
12150   - map.put("cjbc", culateMieageService.culateLbbc(scheduleRealInfos));
12151   - map.put("ljbc", culateMieageService.culateLjbc(lists, ""));
12152   - int sjbc = culateMieageService.culateLjbc(lists, "") + culateMieageService.culateSjbc(lists, "");
12153   - map.put("sjbc", sjbc);
12154   -// map=new HashMap<String,Object>();
12155   -
12156   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
12157   - String minfcsj = "02:00";
12158   - List<Line> lineList = lineRepository.findLineByCode(listpl.get(0).getXlBm());
12159   - if (lineList.size() > 0) {
12160   - String sqlMinYysj = "select start_opt from bsth_c_line_config where "
12161   - + " id = ("
12162   - + "select max(id) from bsth_c_line_config where line ='" + lineList.get(0).getId() + "'"
12163   - + ")";
12164   - minfcsj = jdbcTemplate.queryForObject(sqlMinYysj, String.class);
12165   - }
12166   - String[] minSjs = minfcsj.split(":");
12167   - Long minSj = Long.parseLong(minSjs[0]) * 60 + Long.parseLong(minSjs[1]);
12168   -
12169   -
12170   - for (int i = 0; i < scheduleRealInfos.size(); i++) {
12171   - ScheduleRealInfo s = scheduleRealInfos.get(i);
12172   - String[] fcsj = s.getFcsj().split(":");
12173   - Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
12174   -
12175   - Long fscjT = 0L;
12176   - if (fcsjL < minSj) {
12177   - Calendar calendar = new GregorianCalendar();
12178   - calendar.setTime(s.getScheduleDate());
12179   - calendar.add(calendar.DATE, 1);
12180   - s.setScheduleDate(calendar.getTime());
12181   - try {
12182   - fscjT = sdf.parse(sdf.format(s.getScheduleDate()) + " " + s.getFcsj()).getTime();
12183   - } catch (ParseException e) {
12184   - // TODO Auto-generated catch block
12185   - e.printStackTrace();
12186   - }
12187   -
12188   - } else {
12189   - try {
12190   - fscjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();
12191   - } catch (ParseException e) {
12192   - // TODO Auto-generated catch block
12193   - e.printStackTrace();
12194   - }
12195   - ;
12196   - }
12197   - s.setFcsjT(fscjT);
12198   - }
12199   - List<ScheduleRealInfo> listSchedule = new ArrayList<ScheduleRealInfo>();
12200   - Collections.sort(scheduleRealInfos, new ComparableReal());
12201   - for (int i = 0; i < scheduleRealInfos.size(); i++) {
12202   - ScheduleRealInfo s = scheduleRealInfos.get(i);
12203   - s.setAdjustExps(i + 1 + "");
12204   - String remarks = "";
12205   - if (s.getRemarks() != null) {
12206   - remarks += s.getRemarks();
12207   - }
12208   -
12209   - Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
12210   - if (!childTaskPlans.isEmpty()) {
12211   - s.setFcsjActual("");
12212   - s.setZdsjActual("");
12213   - s.setJhlc(0.0);
12214   - }
12215   -
12216   - if (s.isDestroy()) {
12217   - s.setFcsjActual("");
12218   - s.setZdsjActual("");
12219   - s.setJhlc(0.0);
12220   - remarks += "(烂班)";
12221   - s.setRemarks(remarks);
12222   - }
12223   -
12224   - listSchedule.add(s);
12225   - //计算营运里程,空驶里程
12226   - if (!childTaskPlans.isEmpty()) {
12227   -// Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
12228   - List<ChildTaskPlan> listit = new ArrayList<ChildTaskPlan>(childTaskPlans);
12229   - Collections.sort(listit, new ComparableChild());
12230   - for (int j = 0; j < listit.size(); j++) {
12231   - ScheduleRealInfo t = new ScheduleRealInfo();
12232   - ChildTaskPlan childTaskPlan = listit.get(j);
12233   - if (childTaskPlan.isDestroy()) {
12234   - t.setFcsjActual("");
12235   - t.setZdsjActual("");
12236   - t.setJhlc(0.0);
12237   - } else {
12238   - t.setFcsjActual(childTaskPlan.getStartDate());
12239   - t.setZdsjActual(childTaskPlan.getEndDate());
12240   - t.setJhlc(Double.parseDouble(String.valueOf(childTaskPlan.getMileage())));
12241   - }
12242   - t.setQdzName(childTaskPlan.getStartStationName());
12243   - t.setZdzName(childTaskPlan.getEndStationName());
12244   - t.setRemarks(childTaskPlan.getRemarks());
12245   - t.setAdjustExps("子");
12246   - t.setjGh("");
12247   - t.setjName("");
12248   - t.setsGh("");
12249   - t.setsName("");
12250   - listSchedule.add(t);
12251   - }
12252   - }
12253   - }
12254   - Map<String, Object> maps;
12255   - for (ScheduleRealInfo scheduleRealInfo : listSchedule) {
12256   - maps = new HashMap<String, Object>();
12257   - try {
12258   - scheduleRealInfo.setjName(scheduleRealInfo.getjGh() + scheduleRealInfo.getjName());
12259   - scheduleRealInfo.setsName(scheduleRealInfo.getsGh() + scheduleRealInfo.getsName());
12260   - maps = rru.getMapValue(scheduleRealInfo);
12261   - maps.put("bcs", scheduleRealInfo.getAdjustExps());
12262   - String zdsj = scheduleRealInfo.getZdsj();
12263   - String zdsjActual = scheduleRealInfo.getZdsjActual();
12264   - if (zdsj != null && zdsjActual != null &&
12265   - !zdsj.equals(zdsjActual) &&
12266   - !zdsj.equals("") &&
12267   - !zdsjActual.equals("")) {
12268   - int zdsjT = Integer.valueOf(zdsj.split(":")[0]) * 60 + Integer.valueOf(zdsj.split(":")[1]);
12269   - int zdsjAT = Integer.valueOf(zdsjActual.split(":")[0]) * 60 + Integer.valueOf(zdsjActual.split(":")[1]);
12270   - if (zdsj.compareTo(zdsjActual) > 0) {
12271   - if (zdsjT - zdsjAT > 1000) {
12272   - maps.put("fast", "");
12273   - maps.put("slow", zdsjAT - zdsjT + 1440);
12274   - } else {
12275   - maps.put("fast", TimeUtils.getTimeDifference(zdsj, zdsjActual));
12276   - maps.put("slow", "");
12277   - }
12278   - } else {
12279   - if (zdsjAT - zdsjT > 1000) {
12280   - maps.put("fast", zdsjT - zdsjAT + 1440);
12281   - maps.put("slow", "");
12282   - } else {
12283   - maps.put("fast", "");
12284   - maps.put("slow", TimeUtils.getTimeDifference(zdsj, zdsjActual));
12285   - }
12286   - }
12287   - } else {
12288   - maps.put("fast", "");
12289   - maps.put("slow", "");
12290   - }
12291   - listMap.add(maps);
12292   - } catch (Exception e) {
12293   - e.printStackTrace();
12294   - }
12295   - }
12296   -
12297   -
12298   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
12299   - list.add(listMap.iterator());
12300   - String xls = "";
12301   - if (map.get("type").toString().equals("0")) {
12302   - xls = "waybill_minhang.xls";
12303   - } else {
12304   - xls = "waybill_minhang_dl.xls";
12305   - }
12306   - map.put("sheetName", jName + "-" + clZbh + "-" + lpName);
12307   - ee.excelReplace(list, new Object[]{map}, path + "mould/" + xls,
12308   - path + "export/" + date + "-" + jName + "-" + clZbh + "-" + lpName + "-行车路单.xls");
12309   - }
12310   -
12311   - @Override
12312   - public Map<String, Object> exportWaybillMore(Map<String, Object> map) {
12313   - String date = map.get("date").toString();
12314   - String line = map.get("line").toString();
12315   - ReportUtils ee = new ReportUtils();
12316   - List<List> lists = JSON.parseArray(map.get("strs").toString(), List.class);
12317   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/export/";
12318   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
12319   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
12320   - int num = 0;
12321   - File file = null;
12322   - try {
12323   - while (true) {
12324   - String fileUrl = path + "行车路单" + sdfSimple.format(sdfMonth.parse(date));
12325   -// file = new File(fileUrl + (num == 0 ? "/" : "(" + num + ")/")); //新建文件夹
12326   - file = new File(fileUrl + (num == 0 ? ".xls" : "(" + num + ").xls")); //新建excel文件
12327   - if (file.exists()) { //判断是否已存在重名
12328   - num++;
12329   - } else {
12330   - break;
12331   - }
12332   - }
12333   -// file.mkdirs(); //创建
12334   - List<ScheduleRealInfo> lists_line = scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date);
12335   - List<File> files = new ArrayList<File>();
12336   - for (List<String> list : lists) {
12337   - List<ScheduleRealInfo> newList = new ArrayList<ScheduleRealInfo>();
12338   - String jName = list.get(0);
12339   - String clZbh = list.get(1);
12340   - String lpName = list.get(2);
12341   - String jGh = list.get(3);
12342   - for (int i = 0; i < lists_line.size(); i++) {
12343   - ScheduleRealInfo s = lists_line.get(i);
12344   - if (s.getjGh().equals(jGh) && s.getClZbh().equals(clZbh) && s.getLpName().equals(lpName)) {
12345   - newList.add(s);
12346   - }
12347   - }
12348   - this.exportWaybill_pl(newList, date, jName, clZbh, lpName);
12349   - File temp = new File(path + date + "-" + jName + "-" + clZbh + "-" + lpName + "-行车路单.xls");
12350   - String fileName = file.getName();
12351   - files.add(temp);
12352   - }
12353   - for (int i = 1; i < files.size(); i++) {
12354   - File file1 = files.get(0);
12355   - File file2 = files.get(i);
12356   - ee.copySheetByFile(file2, file1, 0, 145);
12357   - }
12358   - File newFile = files.get(0);
12359   - newFile.renameTo(file);
12360   -// temp.renameTo(new File(path + fileName + "/" + temp.getName()));
12361   -// File[] listFiles = file.listFiles();
12362   -// ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(path + file.getName() + ".zip")));
12363   -//// zos.setEncoding("gbk");
12364   -//// zos.putNextEntry(new ZipEntry(fileName + "/"));
12365   -// for (int i = 0; i < listFiles.length; i++) {
12366   -// zos.putNextEntry(new ZipEntry(fileName + "/" + listFiles[i].getName()));
12367   -// BufferedInputStream bis = new BufferedInputStream(new FileInputStream(listFiles[i]));
12368   -// BufferedOutputStream bos = new BufferedOutputStream(zos);
12369   -// int bytesRead = 0;
12370   -// for (byte[] buffer = new byte[BUF_SIZE]; ((bytesRead = bis.read(buffer, 0, BUF_SIZE)) != -1); ) {
12371   -//// zos.write(buffer, 0, bytesRead);
12372   -//// zos.flush();
12373   -// bos.write(buffer, 0, bytesRead);
12374   -// bos.flush();
12375   -// }
12376   -//// bos.close();
12377   -// bis.close();
12378   -// }
12379   -// zos.close();
12380   -// }
12381   -
12382   - } catch (Exception e) {
12383   - // TODO: handle exception
12384   - e.printStackTrace();
12385   - }
12386   -
12387   - map.put("fileName", file.getName());
12388   - return map;
12389   - }
12390   -
12391   - @Autowired
12392   - SchedulePlanInfoService schPlanService;
12393   -
12394   - @Override
12395   - public List<SchedulePlanInfo> currentSchedulePlan(String lineCode) {
12396   - List<SchedulePlanInfo> rs = dayOfSchedule.schedulePlanMap.get(lineCode);
12397   -
12398   - if (rs == null || rs.size() == 0) {
12399   - //尝试刷新内存
12400   - Map<String, Object> data = new HashMap<>();
12401   - data.put("scheduleDate_eq", dayOfSchedule.currSchDateMap.get(lineCode));
12402   - data.put("xlBm_eq", lineCode);
12403   - List<SchedulePlanInfo> planItr = dayOfSchedule.cleanSchPlanItr(schPlanService.list(data).iterator());
12404   -
12405   - if (planItr.size() > 0) {
12406   - dayOfSchedule.schedulePlanMap.put(lineCode, planItr);
12407   - return planItr;
12408   - }
12409   - }
12410   - return rs;
12411   - }
12412   -
12413   -
12414   - @Override
12415   - public Map<String, Object> lpChangeMulti(String leftIdx, String rightIdx, int type) {
12416   - Map<String, Object> rs = new HashMap<>();
12417   - Set<ScheduleRealInfo> ts = new HashSet<>();
12418   - try {
12419   - List<String> leftList = Splitter.on(",").splitToList(leftIdx);
12420   - List<String> rightList = Splitter.on(",").splitToList(rightIdx);
12421   - Set<String> lpSet = new HashSet<>();
12422   - Set<String> carSet = new HashSet<>();
12423   -
12424   - List<ScheduleRealInfo> largeList, smallList;
12425   - if (leftList.size() > rightList.size()) {
12426   - largeList = getByIdx(leftList);
12427   - smallList = getByIdx(rightList);
12428   - } else {
12429   - largeList = getByIdx(rightList);
12430   - smallList = getByIdx(leftList);
12431   - }
12432   -
12433   - ScheduleRealInfo leftSch, rightSch = null;
12434   - for (int i = 0; i < largeList.size(); i++) {
12435   - leftSch = largeList.get(i);
12436   - leftSch.setLpChange(1);
12437   - if (i < smallList.size()) {
12438   - rightSch = smallList.get(i);
12439   - rightSch.setLpChange(1);
12440   - ts.add(rightSch);
12441   - } else {
12442   - //不对称时多出来的
12443   - lpChangeByLeft(leftSch, largeList.get(i - 1), type);
12444   - ts.add(leftSch);
12445   - lpSet.add(leftSch.getXlBm() + "_" + leftSch.getLpName());
12446   - continue;
12447   - }
12448   -
12449   - //调换路牌
12450   - lpChange(leftSch, rightSch, type);
12451   - ts.add(leftSch);
12452   -
12453   - lpSet.add(leftSch.getXlBm() + "_" + leftSch.getLpName());
12454   - lpSet.add(rightSch.getXlBm() + "_" + rightSch.getLpName());
12455   -
12456   - carSet.add(leftSch.getClZbh());
12457   - carSet.add(rightSch.getClZbh());
12458   - scheduleRealInfoRepository.updateLpChange(leftSch.getId());
12459   - scheduleRealInfoRepository.updateLpChange(rightSch.getId());
12460   - }
12461   -
12462   - //重新计算路牌的起点应到时间
12463   - for (String lpName : lpSet) {
12464   - ts.addAll(dayOfSchedule.updateQdzTimePlan(lpName));
12465   - }
12466   -
12467   - //重新就算车辆当前执行班次
12468   - for(String nbbm : carSet){
12469   - dayOfSchedule.reCalcExecPlan(nbbm);
12470   - }
12471   -
12472   -
12473   - for (ScheduleRealInfo sch : ts) {
12474   - dayOfSchedule.save(sch);
12475   - }
12476   -
12477   - rs.put("status", ResponseCode.SUCCESS);
12478   - rs.put("ts", ts);
12479   - } catch (Exception e) {
12480   - logger.error("", e);
12481   - rs.put("status", ResponseCode.ERROR);
12482   - rs.put("msg", e.getMessage());
12483   - }
12484   -
12485   - return rs;
12486   - }
12487   -
12488   - private List<ScheduleRealInfo> getByIdx(List<String> idList) {
12489   - List<ScheduleRealInfo> list = new ArrayList<>();
12490   - for (String id : idList) {
12491   - list.add(dayOfSchedule.get(Long.parseLong(id)));
12492   - }
12493   - return list;
12494   - }
12495   -
12496   - @Override
12497   - public void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type) {
12498   - //释放班次映射
12499   - if (type > 0) {
12500   - dayOfSchedule.removeNbbm2SchMapp(leftSch);
12501   - dayOfSchedule.removeNbbm2SchMapp(rightSch);
12502   - }
12503   -
12504   - //对调数据
12505   - LpData leftData = new LpData(leftSch);
12506   - LpData rightData = new LpData(rightSch);
12507   -
12508   - leftData.appendTo(rightSch, type);
12509   - rightData.appendTo(leftSch, type);
12510   -
12511   - if (type > 0) {
12512   - //重新映射
12513   - dayOfSchedule.addNbbm2SchMapp(leftSch);
12514   - dayOfSchedule.addNbbm2SchMapp(rightSch);
12515   - }
12516   - }
12517   -
12518   - /**
12519   - * 更换左边班次的路牌,右边不变
12520   - *
12521   - * @param leftSch
12522   - * @param rightSch
12523   - * @param type
12524   - */
12525   - public void lpChangeByLeft(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type) {
12526   - //释放班次映射
12527   - if (type > 0)
12528   - dayOfSchedule.removeNbbm2SchMapp(leftSch);
12529   -
12530   - LpData rightData = new LpData(rightSch);
12531   - rightData.appendTo(leftSch, type);
12532   -
12533   - //重新映射
12534   - if (type > 0)
12535   - dayOfSchedule.addNbbm2SchMapp(leftSch);
12536   -
12537   - }
12538   -
12539   - @Override
12540   - public Map<String, Object> revokeRealArrive(Long id) {
12541   - Map<String, Object> rs = new HashMap<>();
12542   - List<ScheduleRealInfo> ts = new ArrayList<>();
12543   -
12544   - try {
12545   - ScheduleRealInfo sch = dayOfSchedule.get(id);
12546   - if (sch.getZdsjActual() == null && sch.getFcsjActual() == null) {
12547   - rs.put("status", ResponseCode.ERROR);
12548   - rs.put("msg", "班次未执行,无法撤销!");
12549   - } else {
12550   - //日志记录
12551   - ScheduleModifyLogger.cxzx(sch);
12552   -
12553   - sch.clearFcsjActual();
12554   - sch.clearZdsjActual();
12555   - //清除路牌下一个班的起点到达时间
12556   - ScheduleRealInfo next = dayOfSchedule.nextByLp(sch);
12557   - if (null != next) {
12558   - next.setQdzArrDatesj(null);
12559   - ts.add(next);
12560   - }
12561   -
12562   - rs.put("status", ResponseCode.SUCCESS);
12563   -
12564   - ts.add(sch);
12565   - rs.put("ts", ts);
12566   -
12567   - dayOfSchedule.save(sch);
12568   - //重新计算当前执行班次
12569   - dayOfSchedule.reCalcExecPlan(sch.getClZbh());
12570   -
12571   - }
12572   - } catch (Exception e) {
12573   - logger.error("", e);
12574   - rs.put("status", ResponseCode.ERROR);
12575   - }
12576   - return rs;
12577   - }
12578   -
12579   - @Override
12580   - public Map<String, Object> lateAdjust(String idx, float minute) {
12581   - Map<String, Object> rs = new HashMap<>();
12582   - try {
12583   - int count = 0;
12584   - List<ScheduleRealInfo> list = new ArrayList<>();
12585   - List<String> ids = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(idx);
12586   -
12587   - ScheduleRealInfo sch;
12588   - for (String id : ids) {
12589   - sch = dayOfSchedule.get(Long.parseLong(id));
12590   - if (sch != null && sch.getStatus() == 0) {
12591   - if (minute > 0) {
12592   - sch.setLateMinute(minute);
12593   - } else if (minute == 0) {
12594   - LateAdjustHandle.remove(sch);
12595   - }
12596   - count++;
12597   - list.add(sch);
12598   - }
12599   - }
12600   -
12601   - rs.put("status", ResponseCode.SUCCESS);
12602   - rs.put("count", count);
12603   - rs.put("ts", list);
12604   - } catch (Exception e) {
12605   - logger.error("", e);
12606   - rs.put("status", ResponseCode.ERROR);
12607   - rs.put("msg", e.getMessage());
12608   - }
12609   -
12610   - return rs;
12611   - }
12612   -
12613   - @Override
12614   - public List<ScheduleRealInfo> allLate2(String idx) {
12615   - List<ScheduleRealInfo> rs = new ArrayList<>();
12616   - List<String> ids = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(idx);
12617   -
12618   - Collection<ScheduleRealInfo> all = LateAdjustHandle.allLateSch();
12619   - for (ScheduleRealInfo sch : all) {
12620   - if (ids.indexOf(sch.getXlBm()) != -1) {
12621   - rs.add(sch);
12622   - }
12623   - }
12624   - return rs;
12625   - }
12626   -
12627   -
12628   - @Override
12629   - public List<Map<String, Object>> mileageReport(String gsdm,
12630   - String fgsdm, String line, String date, String date2) {
12631   -
12632   - String sql = "select * from calc_mileage where 1=1 ";
12633   - if (!line.equals(" ")) {
12634   - sql = sql + " and line_code='" + line + "' ";
12635   - }
12636   - sql = sql + " and DATE_FORMAT(rq,'%Y-%m-%d') between '" + date + "' and '" + date2 + "'";
12637   - if (!gsdm.equals(" ")) {
12638   - sql = sql + " and company_id=" + gsdm;
12639   - }
12640   - if (!gsdm.equals(" ")) {
12641   - sql = sql + " and sub_company_id=" + fgsdm;
12642   - }
12643   - sql = sql + " order by line_code";
12644   - List<MileageReport> list = jdbcTemplate.query(sql,
12645   - new RowMapper<MileageReport>() {
12646   - @Override
12647   - public MileageReport mapRow(ResultSet rs, int rowNum) throws SQLException {
12648   - MileageReport mr = new MileageReport();
12649   - mr.setCompanyName(rs.getString("company_name"));
12650   - mr.setSubCompanyName(rs.getString("sub_company_name"));
12651   - mr.setLineName(rs.getString("line_name"));
12652   - mr.setSjyygl(rs.getDouble("sjyygl"));
12653   - mr.setSjksgl(rs.getDouble("sjksgl"));
12654   - mr.setZgl(rs.getDouble("zyygl"));
12655   - mr.setZddfgl(rs.getDouble("zddfgl"));
12656   - mr.setSddfgl(rs.getDouble("sddfgl"));
12657   - mr.setWqwxhgl(rs.getDouble("wqwxhgl"));
12658   - mr.setBfwxhgl(rs.getDouble("bfwxhgl"));
12659   - mr.setPygl(rs.getDouble("pygl"));
12660   - mr.setLjgl(rs.getDouble("ljgl"));
12661   - mr.setZrwgl(rs.getDouble("zrwgl"));
12662   - mr.setOther(rs.getString("other"));
12663   - return mr;
12664   - }
12665   - });
12666   - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
12667   - double sjyygl = 0.0;
12668   - double sjksgl = 0.0;
12669   - double zgl = 0.0;
12670   - double sddfgl = 0.0;
12671   - double zddfgl = 0.0;
12672   - double wqwxhgl = 0.0;
12673   - double bfwxhgl = 0.0;
12674   - double pygl = 0.0;
12675   - double ljgl = 0.0;
12676   - double zrwgl = 0.0;
12677   - for (MileageReport mr : list) {
12678   - Map<String, Object> resMap = new HashMap<String, Object>();
12679   - resMap.put("gsName", mr.getCompanyName());
12680   - resMap.put("fgsName", mr.getSubCompanyName());
12681   - resMap.put("xlName", mr.getLineName());
12682   - resMap.put("sjyygl", mr.getSjyygl());
12683   - resMap.put("sjksgl", mr.getSjksgl());
12684   - resMap.put("zgl", mr.getZgl());
12685   - resMap.put("sddfgl", mr.getSddfgl());
12686   - resMap.put("zddfgl", mr.getZddfgl());
12687   - resMap.put("wqwxhgl", mr.getWqwxhgl());
12688   - resMap.put("bfwxhgl", mr.getBfwxhgl());
12689   - resMap.put("pygl", mr.getPygl());
12690   - resMap.put("ljgl", mr.getLjgl());
12691   - resMap.put("zrwgl", mr.getZrwgl());
12692   - resMap.put("other", mr.getOther());
12693   - lMap.add(resMap);
12694   - sjyygl = Arith.add(sjyygl, mr.getSjyygl());
12695   - sjksgl = Arith.add(sjksgl, mr.getSjksgl());
12696   - zgl = Arith.add(zgl, mr.getZgl());
12697   - sddfgl = Arith.add(sddfgl, mr.getSddfgl());
12698   - zddfgl = Arith.add(zddfgl, mr.getZddfgl());
12699   - wqwxhgl = Arith.add(wqwxhgl, mr.getWqwxhgl());
12700   - bfwxhgl = Arith.add(bfwxhgl, mr.getBfwxhgl());
12701   - pygl = Arith.add(pygl, mr.getPygl());
12702   - ljgl = Arith.add(ljgl, mr.getLjgl());
12703   - zrwgl = Arith.add(zrwgl, mr.getZrwgl());
12704   - }
12705   - Map<String, Object> resMap = new HashMap<String, Object>();
12706   - resMap.put("xlName", "合计");
12707   - resMap.put("sjyygl", sjyygl);
12708   - resMap.put("sjksgl", sjksgl);
12709   - resMap.put("zgl", zgl);
12710   - resMap.put("sddfgl", sddfgl);
12711   - resMap.put("zddfgl", zddfgl);
12712   - resMap.put("wqwxhgl", wqwxhgl);
12713   - resMap.put("bfwxhgl", bfwxhgl);
12714   - resMap.put("pygl", pygl);
12715   - resMap.put("ljgl", ljgl);
12716   - resMap.put("zrwgl", zrwgl);
12717   - resMap.put("other", null);
12718   - lMap.add(resMap);
12719   - return lMap;
12720   - }
12721   -
12722   - @Override
12723   - public List<Map<String, Object>> scheduleCorrectionReport(String gsdm,
12724   - String fgsdm, String line, String date, String date2) {
12725   -
12726   - String sql = "select * from calc_schedule where 1=1 ";
12727   - if (!line.equals(" ")) {
12728   - sql = sql + " and line_code='" + line + "' ";
12729   - }
12730   - sql = sql + " and DATE_FORMAT(rq,'%Y-%m-%d') between '" + date + "' and '" + date2 + "'";
12731   - if (!gsdm.equals(" ")) {
12732   - sql = sql + " and company_id=" + gsdm;
12733   - }
12734   - if (!gsdm.equals(" ")) {
12735   - sql = sql + " and sub_company_id=" + fgsdm;
12736   - }
12737   - sql = sql + " order by line_code";
12738   - List<ScheduleCorrectionReport> list = jdbcTemplate.query(sql,
12739   - new RowMapper<ScheduleCorrectionReport>() {
12740   - @Override
12741   - public ScheduleCorrectionReport mapRow(ResultSet rs, int rowNum) throws SQLException {
12742   - ScheduleCorrectionReport sReport = new ScheduleCorrectionReport();
12743   - sReport.setCompanyName(rs.getString("company_name"));
12744   - sReport.setSubCompanyName(rs.getString("sub_company_name"));
12745   - sReport.setLineName(rs.getString("line_name"));
12746   - sReport.setSjyybc(rs.getInt("sjyybc"));
12747   - sReport.setSjksbc(rs.getInt("sjksbc"));
12748   - sReport.setZbc(rs.getInt("zyybc"));
12749   - sReport.setZddfbc(rs.getInt("zddfbc"));
12750   - sReport.setSddfbc(rs.getInt("sddfbc"));
12751   - sReport.setWqwxhbc(rs.getInt("wqwxhbc"));
12752   - sReport.setBfwxhbc(rs.getInt("bfwxhbc"));
12753   - sReport.setPybc(rs.getInt("pybc"));
12754   - sReport.setLjbc(rs.getInt("ljbc"));
12755   - sReport.setZrwbc(rs.getInt("zrwbc"));
12756   - sReport.setOther(rs.getString("other"));
12757   - return sReport;
12758   - }
12759   - });
12760   - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
12761   - int sjyybc = 0;
12762   - int sjksbc = 0;
12763   - int zbc = 0;
12764   - int sddfbc = 0;
12765   - int zddfbc = 0;
12766   - int wqwxhbc = 0;
12767   - int bfwxhbc = 0;
12768   - int pybc = 0;
12769   - int ljbc = 0;
12770   - int zrwbc = 0;
12771   - for (ScheduleCorrectionReport sReport : list) {
12772   - Map<String, Object> resMap = new HashMap<String, Object>();
12773   - resMap.put("gsName", sReport.getCompanyName());
12774   - resMap.put("fgsName", sReport.getSubCompanyName());
12775   - resMap.put("xlName", sReport.getLineName());
12776   - resMap.put("sjyybc", sReport.getSjyybc());
12777   - resMap.put("sjksbc", sReport.getSjksbc());
12778   - resMap.put("zbc", sReport.getZbc());
12779   - resMap.put("sddfbc", sReport.getSddfbc());
12780   - resMap.put("zddfbc", sReport.getZddfbc());
12781   - resMap.put("wqwxhbc", sReport.getWqwxhbc());
12782   - resMap.put("bfwxhbc", sReport.getBfwxhbc());
12783   - resMap.put("pybc", sReport.getPybc());
12784   - resMap.put("ljbc", sReport.getLjbc());
12785   - resMap.put("zrwbc", sReport.getZrwbc());
12786   - resMap.put("other", sReport.getOther());
12787   - lMap.add(resMap);
12788   - sjyybc = sjyybc + sReport.getSjyybc();
12789   - sjksbc = sjksbc + sReport.getSjksbc();
12790   - zbc = zbc + sReport.getZbc();
12791   - sddfbc = sddfbc + sReport.getSddfbc();
12792   - zddfbc = zddfbc + sReport.getZddfbc();
12793   - wqwxhbc = wqwxhbc + sReport.getWqwxhbc();
12794   - bfwxhbc = bfwxhbc + sReport.getBfwxhbc();
12795   - pybc = pybc + sReport.getPybc();
12796   - ljbc = ljbc + sReport.getLjbc();
12797   - zrwbc = zrwbc + sReport.getZrwbc();
12798   - }
12799   - Map<String, Object> resMap = new HashMap<String, Object>();
12800   - resMap.put("xlName", "合计");
12801   - resMap.put("sjyybc", sjyybc);
12802   - resMap.put("sjksbc", sjksbc);
12803   - resMap.put("zbc", zbc);
12804   - resMap.put("sddfbc", sddfbc);
12805   - resMap.put("zddfbc", zddfbc);
12806   - resMap.put("wqwxhbc", wqwxhbc);
12807   - resMap.put("bfwxhbc", bfwxhbc);
12808   - resMap.put("pybc", pybc);
12809   - resMap.put("ljbc", ljbc);
12810   - resMap.put("zrwbc", zrwbc);
12811   - resMap.put("other", null);
12812   - lMap.add(resMap);
12813   - return lMap;
12814   - }
12815   -
12816   - @Override
12817   - public Integer isCircleQdz(String clzbh, String sdr, String xlbm, String qdzCode) {
12818   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
12819   - String time =sdf.format(Long.parseLong(sdr));
12820   -
12821   - Long num=scheduleRealInfoRepository.isCircleQdz(clzbh, time, xlbm, qdzCode);
12822   - Integer num2=num==0L?0:1;
12823   - return num2;
12824   - }
12825   -
12826   - @SuppressWarnings("unchecked")
12827   - private static Map<String, Object> request(String url) {
12828   - Map<String, Object> res = new HashMap<String, Object>();
12829   - res.put("status", ResponseCode.SUCCESS);
12830   - InputStream in = null;
12831   - HttpURLConnection con = null;
12832   - try {
12833   - con = (HttpURLConnection)new URL(url).openConnection();
12834   - con.setRequestMethod("POST");
12835   - con.setRequestProperty("keep-alive", "true");
12836   - con.setRequestProperty("accept", "application/json");
12837   - con.setRequestProperty("content-type", "application/json");
12838   - con.setDoInput(true);
12839   - con.setReadTimeout(2500);
12840   - con.setConnectTimeout(2500);
12841   -
12842   - con.connect();
12843   - if (con.getResponseCode() == 200) {
12844   - in = con.getInputStream();
12845   - ByteArrayOutputStream bout = new ByteArrayOutputStream();
12846   - IOUtils.copy(in, bout); bout.close();
12847   - Map<String, Object> response = new ObjectMapper().readValue(bout.toByteArray(), Map.class);
12848   - if (!"报修成功".equals(response.get("msg"))) {
12849   - res.put("status", ResponseCode.ERROR);
12850   - res.putAll(response);
12851   - }
12852   - } else {
12853   - res.put("status", ResponseCode.ERROR);
12854   - res.put("msg", "调用上报接口异常");
12855   - }
12856   - } catch (IOException e) {
12857   - // TODO Auto-generated catch block
12858   - res.put("status", ResponseCode.ERROR);
12859   - res.put("msg", "调用上报接口异常");
12860   - } finally {
12861   - try {
12862   - if (in != null) in.close();
12863   - if (con != null) con.disconnect();
12864   - } catch (IOException e) {
12865   - // TODO Auto-generated catch block
12866   - e.printStackTrace();
12867   - }
12868   - }
12869   -
12870   - return res;
12871   - }
12872   -
12873   - /**
12874   - ** 维修记录上报
12875   - * @param param 参数信息
12876   - * @param isActive 主/被动上报
12877   - */
12878   - @Override
12879   - @Transactional
12880   - public Map<String, Object> repairReport(Map<String, Object> param, boolean isActive) {
12881   - Map<String, Object> res = new HashMap<String, Object>();
12882   - res.put("status", ResponseCode.SUCCESS);
12883   - // 获取实际排班信息
12884   - Long id = Long.parseLong((String)param.get("id"));
12885   - ScheduleRealInfo sch = dayOfSchedule.get(id);
12886   -
12887   - if (null == sch) {
12888   - res.put("status", ResponseCode.ERROR);
12889   - res.put("msg", "不存在的班次!");
12890   -
12891   - return res;
12892   - }
12893   -
12894   - int reportState = -1;
12895   - SysUser user = SecurityUtils.getCurrentUser();
12896   - String reportUser = user.getUserName(), reportName = user.getName(), incode = (String)param.get("clZbh"), reportTypes = (String)param.get("reportTypes"), repairTypes = reportType2RepairType(reportTypes);
12897   - // 分公司保存格式 分公司编码_公司编码
12898   - String val = BasicData.nbbm2FgsCompanyCodeMap.get(incode);
12899   - String[] arr = val.split("_");
12900   - StringBuilder url = new StringBuilder(ConfigUtil.get("http.report.url." + arr[1]));
12901   - url.append("?nbbm=").append(incode).append("&bxy=").append(reportUser).append("&bxbm=").append(repairTypes).append("&fgs=").append(arr[0]);
12902   -
12903   - int count = repairReportRepository.repairReportBySch(id, isActive ? 1 : 0);
12904   - if (count > 0) return res;
12905   - RepairReport lrr = dayOfSchedule.getLastestRepairReport(incode);
12906   - // 非主动上报并且无上报记录或上次已上报 则不用上报
12907   - if (!isActive && (lrr == null || lrr.getReportState() != 0)) {
12908   - reportState = 0;
12909   - } else {
12910   - res = request(url.toString());
12911   - if (ResponseCode.SUCCESS.equals(res.get("status"))) reportState = 1;
12912   - }
12913   - // 持久化此次上报记录
12914   - RepairReport rr = new RepairReport();
12915   - rr.setLineId(sch.getXlBm());
12916   - rr.setLineName(sch.getXlName());
12917   - rr.setReportUser(reportUser);
12918   - rr.setReportName(reportName);
12919   - rr.setSchId(id);
12920   - rr.setIncode(incode);
12921   - rr.setDepartureTime(sch.getFcsj());
12922   - rr.setRepairType(repairTypes);
12923   - rr.setReportType(reportTypes);
12924   - rr.setReportDate(new Date());
12925   - rr.setReportState(reportState);
12926   - rr.setReportMode(isActive ? 1 : 0);
12927   - rr = repairReportRepository.save(rr);
12928   - dayOfSchedule.setLastestRepairReport(rr);
12929   - // 如果上报失败,放到重传队列
12930   - if (rr.getReportState() == -1) queue.add(rr);
12931   -
12932   - return res;
12933   - }
12934   -
12935   - private void repairReport(RepairReport rr) {
12936   - int reportState = -1;
12937   - // 分公司保存格式 分公司编码_公司编码
12938   - String val = BasicData.nbbm2FgsCompanyCodeMap.get(rr.getIncode());
12939   - String[] arr = val.split("_");
12940   - StringBuilder url = new StringBuilder(ConfigUtil.get("http.report.url." + arr[1]));
12941   - url.append("?nbbm=").append(rr.getIncode()).append("&bxy=").append(rr.getReportUser()).append("&bxbm=").append(rr.getRepairType()).append("&fgs=").append(arr[0]);
12942   -
12943   - Map<String, Object> res = request(url.toString());
12944   - if (ResponseCode.SUCCESS.equals(res.get("status"))) reportState = 1;
12945   - if (reportState == 1) {
12946   - rr.setReportState(1);
12947   - repairReportRepository.save(rr);
12948   - }
12949   - }
12950   -
12951   - /**
12952   - ** 业务类型转报修类型
12953   - */
12954   - private String reportType2RepairType(String reportType) {
12955   - String[] reportTypes = reportType.split(";");
12956   - List<String> repairTypes = new ArrayList<>();
12957   - for (String rt : reportTypes) {
12958   - repairTypes.add(report2repair.get(rt));
12959   - }
12960   -
12961   - return StringUtils.join(repairTypes, ";");
12962   - }
12963   -
12964   - @Override
12965   - public List<RepairReport> repairReportList(String lineId, String date, String incode, String type) {
12966   - List<RepairReport> result = new ArrayList<RepairReport>();
12967   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
12968   -
12969   - Date start = null, end = null;
12970   - if (date.length() > 0) {
12971   - try {
12972   - start = sdf.parse(date + " 00:00:00");
12973   - end = sdf.parse(date + " 23:59:59");
12974   - } catch (ParseException e) {
12975   - // TODO Auto-generated catch block
12976   - e.printStackTrace();
12977   - }
12978   -
12979   - }
12980   -
12981   - result = repairReportRepository.repairReportList(lineId, start, end, incode);
12982   - Map<String, Object> dMap=new HashMap<>();
12983   - dMap.put("dGroup_eq", "repairtype");
12984   - Map<String, String> code2name = new HashMap<String, String>();
12985   - for (Dictionary dic : dictionaryService.list(dMap)) {
12986   - code2name.put(dic.getdCode(), dic.getdName());
12987   - }
12988   - for (RepairReport rr : result) {
12989   - String reportType = rr.getReportType();
12990   - String[] types = reportType.split(";");
12991   - StringBuilder sb = new StringBuilder();
12992   -
12993   - for (String t : types) {
12994   - sb.append(code2name.get(t)).append(";");
12995   - }
12996   -
12997   - rr.setRepairType(sb.toString());
12998   - rr.setReportDateStr(sdf.format(rr.getReportDate()));
12999   - switch (rr.getReportState()) {
13000   - case 0:
13001   - rr.setReportStateStr("不报");
13002   - break;
13003   - case 1:
13004   - rr.setReportStateStr("上报成功");
13005   - break;
13006   - case -1:
13007   - rr.setReportStateStr("上报失败");
13008   - break;
13009   - default:
13010   - break;
13011   - }
13012   - }
13013   -
13014   - if ("export".equals(type)) {
13015   - String lineName = BasicData.lineCode2NameMap.get(lineId);
13016   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
13017   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
13018   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
13019   - Map<String, Object> m = new HashMap<String, Object>();
13020   - ReportUtils ee = new ReportUtils();
13021   - List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
13022   - for (int i = 0; i < result.size(); i++) {
13023   - Map<String, Object> map = new HashMap<String, Object>();
13024   - RepairReport rr = result.get(i);
13025   - map.put("row", i + 1);
13026   - map.put("lineId", rr.getLineName());
13027   - map.put("incode", rr.getIncode());
13028   - map.put("departureTime", rr.getDepartureTime());
13029   - map.put("reportUser", rr.getReportUser());
13030   - map.put("reportDateStr", rr.getReportDate());
13031   - map.put("repairType", rr.getRepairType());
13032   - map.put("reportStateStr", rr.getReportStateStr());
13033   - newList.add(map);
13034   - }
13035   - try {
13036   - listI.add(newList.iterator());
13037   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
13038   - ee.excelReplace(listI, new Object[]{m}, path + "mould/repairReport.xls",
13039   - path + "export/" + sdfSimple.format(sdfMonth.parse(date))
13040   - + "-" + lineName + "-维修上报记录.xls");
13041   - } catch (Exception e) {
13042   - // TODO: handle exception
13043   - e.printStackTrace();
13044   - }
13045   - }
13046   -
13047   - return result;
13048   - }
13049   -
13050   - @Override
13051   - public Map<String, String> getLevelsByLines(List<String> lines) {
13052   - Map<String, String> result = new HashMap<String, String>(), currSchDate = dayOfSchedule.getCurrSchDate();
13053   - for (String line : lines) {
13054   - String level = BasicData.lineDate2Level.get(line + "_" + currSchDate.get(line));
13055   - result.put(line, level == null ? "" : level);
13056   - }
13057   -
13058   - return result;
13059   - }
13060   -
13061   -
13062   - @Override
13063   - public void destroy() throws Exception {
13064   - // TODO Auto-generated method stub
13065   - exec.shutdown();
13066   - }
13067   -
13068   -
13069   - @Override
13070   - public void afterPropertiesSet() throws Exception {
13071   - // TODO Auto-generated method stub
13072   - // 维修上报重发调度
13073   - exec.scheduleAtFixedRate(new Runnable() {
13074   -
13075   - @Override
13076   - public void run() {
13077   - // TODO Auto-generated method stub
13078   - try {
13079   - Iterator<RepairReport> it = queue.iterator();
13080   - while (it.hasNext()) {
13081   - RepairReport rr = it.next();
13082   - repairReport(rr);
13083   - if (rr.getReportState() == 1 || System.currentTimeMillis() - rr.getReportDate().getTime() > 86400000) queue.remove(rr);
13084   - }
13085   - } catch (Exception e) {
13086   - logger.error("维修上报重发错误", e);
13087   - }
13088   - }
13089   - }, 30, 30, TimeUnit.MINUTES);
13090   -
13091   - //// ---
13092   - exec.scheduleWithFixedDelay(new Runnable() {
13093   - @Override
13094   - public void run() {
13095   - Map<String, Object> res = new HashMap<>();
13096   - InputStream in = null;
13097   - String url ="http://211.95.61.66:9008/modules/tSafedrivingCs/DSMBHforCLBH";
13098   -
13099   - try {
13100   - HttpURLConnection con = (HttpURLConnection)new URL(url.toString()).openConnection();
13101   - con.setDoInput(true);
13102   - con.setRequestMethod("POST");
13103   - con.setConnectTimeout(5000);
13104   - con.setReadTimeout(5000);
13105   - con.setRequestProperty("keep-alive", "true");
13106   - con.setRequestProperty("accept", "*/*");
13107   - con.setRequestProperty("content-type", "application/x-www-form-urlencoded");
13108   - con.connect();
13109   -
13110   - if (con.getResponseCode() == 200) {
13111   - in = con.getInputStream();
13112   - ByteArrayOutputStream bout = new ByteArrayOutputStream();
13113   - IOUtils.copy(in, bout);
13114   - DIRMAP = new ObjectMapper().readValue(bout.toByteArray(), Map.class);
13115   - }
13116   - } catch (MalformedURLException e) {
13117   - // TODO Auto-generated catch block
13118   - e.printStackTrace();
13119   - } catch (IOException e) {
13120   - // TODO Auto-generated catch block
13121   - e.printStackTrace();
13122   - }
13123   -
13124   - }
13125   - }, 0, 60 * 60 * 24, TimeUnit.MINUTES);
13126   - }
13127   -}
13128   -
13129   -class AccountMap implements Comparator<Map<String, Object>> {
13130   - @Override
13131   - public int compare(Map<String, Object> o1, Map<String, Object> o2) {
13132   - // TODO Auto-generated method stub
13133   - return o1.get("clZbh").toString().compareTo(o2.get("clZbh").toString());
13134   - }
13135   -}
13136   -
13137   -class AccountMap2 implements Comparator<Map<String, Object>> {
13138   - @Override
13139   - public int compare(Map<String, Object> o1, Map<String, Object> o2) {
13140   - // TODO Auto-generated method stub
13141   - return o2.get("clZbh").toString().compareTo(o1.get("clZbh").toString());
13142   - }
13143   -}
13144   -
13145   -class AccountXlbm implements Comparator<Map<String, Object>> {
13146   - @Override
13147   - public int compare(Map<String, Object> o1, Map<String, Object> o2) {
13148   - // TODO Auto-generated method stub
13149   -// PinyinHelper.convertToPinyinString(ppy.getName(),
13150   -// "" , PinyinFormat.WITHOUT_TONE)
13151   - return o1.get("xlNamePy").toString().compareTo(
13152   - o2.get("xlNamePy").toString());
13153   - }
13154   -}
13155   -
13156   -class compareLpFcsjType implements Comparator<ScheduleRealInfo> {
13157   - @Override
13158   - public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
13159   - // TODO Auto-generated method stub
13160   - return (o1.getLpName()+o1.getFcsjT() + o1.getRemark()).compareTo(o2.getLpName()+o2.getFcsjT() + o2.getRemark());
13161   - }
13162   -
13163   -}
13164   -
13165   -class compareDirLpFcsjType implements Comparator<ScheduleRealInfo> {
13166   - @Override
13167   - public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
13168   - // TODO Auto-generated method stub
13169   - return (o1.getXlDir()+o1.getFcsjT() + o1.getRemark()+o1.getLpName()).compareTo(o2.getXlDir()+o2.getFcsjT() + o2.getRemark()+o2.getLpName());
13170   - }
13171   -
13172   -}
13173   -class compareFcsjType implements Comparator<ScheduleRealInfo> {
13174   - @Override
13175   - public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
13176   - // TODO Auto-generated method stub
13177   - return (o1.getFcsjT() + o1.getRemark()).compareTo(o2.getFcsjT() + o2.getRemark());
13178   - }
13179   -
13180   -}
13181   ->>>>>>> 2021.05.11 历史版本 选择版本 查看历史版本修改当前版本和待更新版本
... ...