Commit 53d92f735e61358947dc6e4f556ee6043fbd3907
1 parent
02d235f0
路单月报年保中电耗量统计值大于实际值的问题
Showing
2 changed files
with
2476 additions
and
2481 deletions
src/main/java/com/bsth/repository/calc/CalcWaybillRepository.java
| ... | ... | @@ -75,19 +75,19 @@ public interface CalcWaybillRepository extends BaseRepository<CalcWaybill, Integ |
| 75 | 75 | |
| 76 | 76 | //按照时间段统计,公司下线路 (驾驶员) |
| 77 | 77 | @Query(value="select DISTINCT c from CalcWaybill c where c.xl in(?1) and c.rqStr between ?2 and ?3 and c.gsdm in(?4) and c.fgsdm in(?5) " + |
| 78 | - "and c.xl in (select l.lineCode from Line l where l.destroy in (?6)) order by c.jGh,c.fgsdm,c.xl,c.rq") | |
| 78 | + "and c.xl in (select l.lineCode from Line l where l.destroy in (?6)) order by c.jGh,c.fgsdm,c.xl,c.rqStr") | |
| 79 | 79 | List<CalcWaybill> scheduleByJsy2(List<String> line,String date,String date2,List<String> gsdm,List<String> fgsdm, List<Integer> destroy); |
| 80 | 80 | //按照时间段统计,公司下线路 (售票员) coalesce(c.sGh,'') |
| 81 | 81 | @Query(value="select DISTINCT c from CalcWaybill c where c.xl in(?1) and c.rqStr between ?2 and ?3 and c.gsdm in(?4) and c.fgsdm in(?5) and c.sGh <> null and c.sGh <> '' " + |
| 82 | - "and c.xl in (select l.lineCode from Line l where l.destroy in (?6)) order by c.sGh,c.fgsdm,c.xl,c.rq") | |
| 82 | + "and c.xl in (select l.lineCode from Line l where l.destroy in (?6)) order by c.sGh,c.fgsdm,c.xl,c.rqStr") | |
| 83 | 83 | List<CalcWaybill> scheduleBySpy2(List<String> line,String date,String date2,List<String> gsdm,List<String> fgsdm, List<Integer> destroy); |
| 84 | 84 | //按照时间段统计,公司下线路 (车辆自编号) |
| 85 | 85 | @Query(value="select DISTINCT c from CalcWaybill c where c.xl in(?1) and c.rqStr between ?2 and ?3 and c.gsdm in(?4) and c.fgsdm in(?5) " + |
| 86 | - "and c.xl in (select l.lineCode from Line l where l.destroy in (?6)) order by c.cl,c.fgsdm,c.xl,c.rq") | |
| 86 | + "and c.xl in (select l.lineCode from Line l where l.destroy in (?6)) order by c.cl,c.fgsdm,c.xl,c.rqStr") | |
| 87 | 87 | List<CalcWaybill> scheduleByZbh2(List<String> line,String date,String date2,List<String> gsdm,List<String> fgsdm, List<Integer> destroy); |
| 88 | 88 | //按照时间段统计,公司下线路 排序不同 |
| 89 | 89 | @Query(value="select DISTINCT c from CalcWaybill c where c.xl in(?1) and c.rqStr between ?2 and ?3 and c.gsdm in(?4) and c.fgsdm in(?5) " + |
| 90 | - "and c.xl in (select l.lineCode from Line l where l.destroy in (?6)) order by c.fgsdm,c.xl,c.rq") | |
| 90 | + "and c.xl in (select l.lineCode from Line l where l.destroy in (?6)) order by c.fgsdm,c.xl,c.rqStr") | |
| 91 | 91 | List<CalcWaybill> scheduleByDateAndLineTjPx(List<String> line,String date,String date2,List<String> gsdm,List<String> fgsdm, List<Integer> destroy); |
| 92 | 92 | |
| 93 | 93 | } | ... | ... |
src/main/java/com/bsth/service/calc/impl/CalcWaybillServiceImpl.java
| 1 | -package com.bsth.service.calc.impl; | |
| 2 | - | |
| 3 | -import com.alibaba.fastjson.JSON; | |
| 4 | -import com.alibaba.fastjson.JSONArray; | |
| 5 | -import com.bsth.common.ResponseCode; | |
| 6 | -import com.bsth.data.BasicData; | |
| 7 | -import com.bsth.entity.Cars; | |
| 8 | -import com.bsth.entity.Line; | |
| 9 | -import com.bsth.entity.calc.CalcBusMileage; | |
| 10 | -import com.bsth.entity.calc.CalcInterval; | |
| 11 | -import com.bsth.entity.calc.CalcLineMileage; | |
| 12 | -import com.bsth.entity.calc.CalcStatistics; | |
| 13 | -import com.bsth.entity.calc.CalcWaybill; | |
| 14 | -import com.bsth.entity.calc.CalcWaybillDetail; | |
| 15 | -import com.bsth.entity.oil.Dlb; | |
| 16 | -import com.bsth.entity.oil.Ylb; | |
| 17 | -import com.bsth.entity.realcontrol.ChildTaskPlan; | |
| 18 | -import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 19 | -import com.bsth.entity.sys.Interval; | |
| 20 | -import com.bsth.repository.CarsRepository; | |
| 21 | -import com.bsth.repository.LineRepository; | |
| 22 | -import com.bsth.repository.calc.CalcBusMileageRepository; | |
| 23 | -import com.bsth.repository.calc.CalcIntervalRepository; | |
| 24 | -import com.bsth.repository.calc.CalcLineMileageRepository; | |
| 25 | -import com.bsth.repository.calc.CalcStatisticsRepository; | |
| 26 | -import com.bsth.repository.calc.CalcWaybillRepository; | |
| 27 | -import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | |
| 28 | -import com.bsth.service.LineService; | |
| 29 | -import com.bsth.service.calc.CalcToolService; | |
| 30 | -import com.bsth.service.calc.CalcWaybillService; | |
| 31 | -import com.bsth.service.impl.BaseServiceImpl; | |
| 32 | -import com.bsth.service.realcontrol.ScheduleRealInfoService; | |
| 33 | -import com.bsth.service.report.CulateMileageService; | |
| 34 | -import com.bsth.service.report.ReportService; | |
| 35 | -import com.bsth.util.Arith; | |
| 36 | -import com.bsth.util.ReportUtils; | |
| 37 | -import com.github.stuxuhai.jpinyin.PinyinException; | |
| 38 | -import com.github.stuxuhai.jpinyin.PinyinFormat; | |
| 39 | -import com.github.stuxuhai.jpinyin.PinyinHelper; | |
| 40 | -import org.apache.commons.lang3.StringUtils; | |
| 41 | -import org.slf4j.Logger; | |
| 42 | -import org.slf4j.LoggerFactory; | |
| 43 | -import org.springframework.beans.BeanUtils; | |
| 44 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 45 | -import org.springframework.jdbc.core.JdbcTemplate; | |
| 46 | -import org.springframework.jdbc.core.RowMapper; | |
| 47 | -import org.springframework.stereotype.Service; | |
| 48 | - | |
| 49 | -import javax.transaction.Transactional; | |
| 50 | -import java.sql.ResultSet; | |
| 51 | -import java.sql.SQLException; | |
| 52 | -import java.text.DecimalFormat; | |
| 53 | -import java.text.ParseException; | |
| 54 | -import java.text.SimpleDateFormat; | |
| 55 | -import java.util.*; | |
| 56 | - | |
| 57 | -/** | |
| 58 | - * Created by 17/11/16. | |
| 59 | - */ | |
| 60 | -@Service | |
| 61 | -public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer> implements CalcWaybillService { | |
| 62 | - | |
| 63 | - @Autowired | |
| 64 | - private CalcWaybillRepository calcRepository; | |
| 65 | - | |
| 66 | - @Autowired | |
| 67 | - private CalcStatisticsRepository calcStatisticsRepository; | |
| 68 | - | |
| 69 | - @Autowired | |
| 70 | - private CalcLineMileageRepository calcLineMileageRepository; | |
| 71 | - | |
| 72 | - @Autowired | |
| 73 | - private CalcBusMileageRepository calcBusMileageRepository; | |
| 74 | - | |
| 75 | - @Autowired | |
| 76 | - private CalcToolService calcToolService; | |
| 77 | - | |
| 78 | - @Autowired | |
| 79 | - private CulateMileageService culateService; | |
| 80 | - | |
| 81 | - @Autowired | |
| 82 | - private ScheduleRealInfoService scheduleRealInfoService; | |
| 83 | - | |
| 84 | - @Autowired | |
| 85 | - private ScheduleRealInfoRepository scheduleRealInfoRepository; | |
| 86 | - | |
| 87 | - @Autowired | |
| 88 | - private CalcIntervalRepository calcIntervalRepository; | |
| 89 | - | |
| 90 | - @Autowired | |
| 91 | - private LineRepository lineRepository; | |
| 92 | - @Autowired | |
| 93 | - private LineService lineService; | |
| 94 | - @Autowired | |
| 95 | - private ReportService reportService; | |
| 96 | - @Autowired | |
| 97 | - CarsRepository carsRepository; | |
| 98 | - | |
| 99 | - @Autowired | |
| 100 | - JdbcTemplate jdbcTemplate; | |
| 101 | - | |
| 102 | - | |
| 103 | - Logger logger = LoggerFactory.getLogger(this.getClass()); | |
| 104 | - | |
| 105 | - | |
| 106 | - public Map<String, Object> autoGenerate(String date, String line) throws Exception { | |
| 107 | - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 108 | - List<String> dateList = new ArrayList<String>(); | |
| 109 | - if(date == null || date.trim().length() == 0){ | |
| 110 | - Date d = new Date(); | |
| 111 | - d.setTime(d.getTime() - (4l * 1000 * 60 * 60 * 24)); | |
| 112 | - dateList.add(sdf.format(d)); | |
| 113 | - d.setTime(d.getTime() - (1l * 1000 * 60 * 60 * 24)); | |
| 114 | - dateList.add(sdf.format(d)); | |
| 115 | - } else { | |
| 116 | - date = date.trim(); | |
| 117 | - dateList.add(date); | |
| 118 | - } | |
| 119 | - if(line == null || line.trim().length() == 0){ | |
| 120 | - line = ""; | |
| 121 | - } else { | |
| 122 | - line = line.trim(); | |
| 123 | - } | |
| 124 | - | |
| 125 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 126 | - for(String d : dateList){ | |
| 127 | - try { | |
| 128 | - Map<String, Object> generateNew = generateNew(d, line); | |
| 129 | - m.put("generateNew", generateNew); | |
| 130 | - } catch (Exception e) { | |
| 131 | - // TODO: handle exception | |
| 132 | - logger.info("date="+d+";line="+line+";重新统计保存失败!"); | |
| 133 | - } | |
| 134 | - try { | |
| 135 | - Map<String, Object> calcLineMileage = calcLineMileage(d, line); | |
| 136 | - m.put("lineMileage", calcLineMileage); | |
| 137 | - } catch (Exception e) { | |
| 138 | - // TODO: handle exception | |
| 139 | - logger.info("date="+d+";line="+line+";线路公里审计保存失败!"); | |
| 140 | - } | |
| 141 | - try { | |
| 142 | - Map<String, Object> calcBusMileage = calcBusMileage(d, line); | |
| 143 | - m.put("busMileage", calcBusMileage); | |
| 144 | - } catch (Exception e) { | |
| 145 | - // TODO: handle exception | |
| 146 | - logger.info("date="+d+";line="+line+";路单数据审计保存失败!"); | |
| 147 | - } | |
| 148 | - } | |
| 149 | - | |
| 150 | - return m; | |
| 151 | - } | |
| 152 | - | |
| 153 | - @Transactional | |
| 154 | - @Override | |
| 155 | - public Map<String, Object> generateNew(String date, String line) throws Exception { | |
| 156 | - Map<String, Object> newMap = new HashMap<String, Object>(); | |
| 157 | - try { | |
| 158 | - if(date == null){ | |
| 159 | - date = ""; | |
| 160 | - } else { | |
| 161 | - date = date.trim(); | |
| 162 | - } | |
| 163 | - if(line == null){ | |
| 164 | - line = ""; | |
| 165 | - } else { | |
| 166 | - line = line.trim(); | |
| 167 | - } | |
| 168 | - if(date.length() != 0 && line.length() != 0){ | |
| 169 | - calcRepository.deleteByDateAndLine(date, line); | |
| 170 | - } else if(date.length() != 0){ | |
| 171 | - calcRepository.deleteByDate(date); | |
| 172 | - } else { | |
| 173 | - newMap.put("status", ResponseCode.ERROR); | |
| 174 | - logger.error("save erro.", "日期不能为空"); | |
| 175 | - return newMap; | |
| 176 | - } | |
| 177 | - | |
| 178 | - if(date.trim().length() == 0){ | |
| 179 | - newMap.put("status", ResponseCode.ERROR); | |
| 180 | - logger.error("save erro.", "日期不能为空"); | |
| 181 | - return newMap; | |
| 182 | - } | |
| 183 | - | |
| 184 | -// String sql = "select c.id,c.out_config,c.start_opt,t.line_code from bsth_c_line_config c LEFT JOIN bsth_c_line t on c.line=t.id"; | |
| 185 | - String sql="select xl_bm as line_code from bsth_c_s_sp_info_real where schedule_date_str = '"+date+"'"; | |
| 186 | - if(line.trim().length() > 0){ | |
| 187 | - sql += " and xl_bm = '"+line+"'"; | |
| 188 | -// sql += " where t.line_code = " + line; | |
| 189 | - } | |
| 190 | - sql += " group by xl_bm"; | |
| 191 | - List<Map<String, Object>> listLineConfig = jdbcTemplate.query(sql, | |
| 192 | - new RowMapper<Map<String, Object>>(){ | |
| 193 | - @Override | |
| 194 | - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { | |
| 195 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 196 | -// m.put("id", rs.getLong("id")); | |
| 197 | -// m.put("out_config", rs.getString("out_config")); | |
| 198 | -// m.put("start_opt", rs.getString("start_opt")); | |
| 199 | - m.put("line_code", rs.getString("line_code")); | |
| 200 | - return m; | |
| 201 | - }}); | |
| 202 | - | |
| 203 | - String xlSql="select line_code,spac_grade from bsth_c_line"; | |
| 204 | - if(line.length() != 0){ | |
| 205 | - xlSql += " where line_code ='"+line+"'"; | |
| 206 | - } | |
| 207 | - List<Map<String, Object>> xlList=jdbcTemplate.query(xlSql, new RowMapper<Map<String, Object>>() { | |
| 208 | - @Override | |
| 209 | - public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 210 | - Map<String, Object> map=new HashMap<String,Object>(); | |
| 211 | - map.put("line",arg0.getString("line_code")); | |
| 212 | - map.put("grade", arg0.getString("spac_grade")); | |
| 213 | - return map; | |
| 214 | - }}); | |
| 215 | - Map<String, List<Map<String, Object>>> xlMap = new HashMap<String, List<Map<String, Object>>>(); | |
| 216 | - for(Map<String, Object> m : xlList){ | |
| 217 | - if(m.containsKey("line") && m.get("line").toString().trim().length() > 0){ | |
| 218 | - String key = m.get("line").toString().trim(); | |
| 219 | - if(!xlMap.containsKey(key)) | |
| 220 | - xlMap.put(key, new ArrayList<Map<String, Object>>()); | |
| 221 | - xlMap.get(key).add(m); | |
| 222 | - } | |
| 223 | - } | |
| 224 | - //查询大间隔时间 | |
| 225 | - String djgSql="select * from bsth_c_interval"; | |
| 226 | - List<Interval> djgList=jdbcTemplate.query(djgSql, new RowMapper<Interval>() { | |
| 227 | - @Override | |
| 228 | - public Interval mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 229 | - Interval m=new Interval(); | |
| 230 | - m.setLevel(arg0.getString("level")); | |
| 231 | - m.setPeak(arg0.getInt("peak")); | |
| 232 | - m.setTrough(arg0.getInt("trough")); | |
| 233 | - return m; | |
| 234 | - }}); | |
| 235 | - | |
| 236 | - Map<String, List<ScheduleRealInfo>> scheMap = new HashMap<String, List<ScheduleRealInfo>>(); | |
| 237 | - List<ScheduleRealInfo> list = calcRepository.findAllScheduleByDate(date); | |
| 238 | - for(ScheduleRealInfo s : list){ | |
| 239 | - String xlBm = s.getXlBm(); | |
| 240 | - if(!scheMap.containsKey(xlBm)){ | |
| 241 | - scheMap.put(xlBm, new ArrayList<ScheduleRealInfo>()); | |
| 242 | - } | |
| 243 | - scheMap.get(xlBm).add(s); | |
| 244 | - } | |
| 245 | - | |
| 246 | - Set<String> lineSet = new HashSet<String>(); | |
| 247 | - List<CalcWaybill> all = new ArrayList<CalcWaybill>(); | |
| 248 | - for (int i = 0; i < listLineConfig.size(); i++) { | |
| 249 | - Map<String, Object> m =listLineConfig.get(i); | |
| 250 | - String lineCode=m.get("line_code").toString().trim(); | |
| 251 | -// String startOpt=m.get("start_opt").toString().trim(); | |
| 252 | - if(!lineSet.add(lineCode)) | |
| 253 | - continue; | |
| 254 | - | |
| 255 | - List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); | |
| 256 | - if(xlMap.containsKey(lineCode) && xlMap.get(lineCode) != null){ | |
| 257 | - tempList = xlMap.get(lineCode); | |
| 258 | - } | |
| 259 | - | |
| 260 | - if(!scheMap.containsKey(lineCode)) | |
| 261 | - continue; | |
| 262 | - List<CalcWaybill> findAll = calcToolService.findAll(date, lineCode, scheMap.get(lineCode), tempList, djgList); | |
| 263 | - all.addAll(findAll); | |
| 264 | - | |
| 265 | - } | |
| 266 | -// new BatchSaveUtils<CalcWaybill>().saveList2(all, CalcWaybill.class); | |
| 267 | - calcRepository.saveAll(all); | |
| 268 | - | |
| 269 | - newMap.put("status", ResponseCode.SUCCESS); | |
| 270 | - } catch (Exception e) { | |
| 271 | - // TODO: handle exception | |
| 272 | - newMap.put("status", ResponseCode.ERROR); | |
| 273 | - logger.error("save erro.", e); | |
| 274 | - throw e; | |
| 275 | - } | |
| 276 | - | |
| 277 | - return newMap; | |
| 278 | - } | |
| 279 | - | |
| 280 | - @Override | |
| 281 | - public List<Map<String, Object>> statisticsDailyTj(String gsdm, | |
| 282 | - String fgsdm, String line, String date, String date2, | |
| 283 | - String xlName, String type) { | |
| 284 | - | |
| 285 | - List<String> keyList = new ArrayList<String>(); | |
| 286 | - List<CalcWaybill> list = new ArrayList<CalcWaybill>(); | |
| 287 | - List<CalcWaybill> lists = new ArrayList<CalcWaybill>(); | |
| 288 | - List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | |
| 289 | - Map<String, List<CalcWaybill>> keyMap = new HashMap<String, List<CalcWaybill>>(); | |
| 290 | - | |
| 291 | - if(line.equals("")){ | |
| 292 | - //查询所有线路 | |
| 293 | - list = calcRepository.scheduleByDateAndLineTj(line,date,date2,gsdm,fgsdm); | |
| 294 | - }else{ | |
| 295 | - //查询单条线路 | |
| 296 | - list = calcRepository.scheduleByDateAndLineTj2(line,date,date2); | |
| 297 | - } | |
| 298 | - | |
| 299 | - for(CalcWaybill c : list){ | |
| 300 | - String key = c.getXlName(); | |
| 301 | - if(!keyMap.containsKey(key)){ | |
| 302 | - keyMap.put(key, new ArrayList<CalcWaybill>()); | |
| 303 | - keyList.add(key); | |
| 304 | - } | |
| 305 | - keyMap.get(key).add(c); | |
| 306 | - } | |
| 307 | - Collections.sort(keyList, new AccountXlbmStr()); | |
| 308 | - for(String key : keyList){ | |
| 309 | - CalcWaybill calc = keyMap.get(key).get(0); | |
| 310 | - for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 311 | - CalcWaybill c= keyMap.get(key).get(i); | |
| 312 | - calc.setJhyylc(Arith.add(calc.getJhyylc(), c.getJhyylc())); | |
| 313 | - calc.setJhfyylc(Arith.add(calc.getJhfyylc(), c.getJhfyylc())); | |
| 314 | - calc.setSjyylc(Arith.add(calc.getSjyylc(), c.getSjyylc())); | |
| 315 | - calc.setSjfyylc(Arith.add(calc.getSjfyylc(), c.getSjfyylc())); | |
| 316 | - calc.setLblc(Arith.add(calc.getLblc(), c.getLblc())); | |
| 317 | - calc.setLbbc(calc.getLbbc() + c.getLbbc()); | |
| 318 | - calc.setLblcLz(Arith.add(calc.getLblcLz(), c.getLblcLz())); | |
| 319 | - calc.setLblcDm(Arith.add(calc.getLblcDm(), c.getLblcDm())); | |
| 320 | - calc.setLblcGz(Arith.add(calc.getLblcGz(), c.getLblcGz())); | |
| 321 | - calc.setLblcJf(Arith.add(calc.getLblcJf(), c.getLblcJf())); | |
| 322 | - calc.setLblcZs(Arith.add(calc.getLblcZs(), c.getLblcZs())); | |
| 323 | - calc.setLblcQr(Arith.add(calc.getLblcQr(), c.getLblcQr())); | |
| 324 | - calc.setLblcQc(Arith.add(calc.getLblcQc(), c.getLblcQc())); | |
| 325 | - calc.setLblcKx(Arith.add(calc.getLblcKx(), c.getLblcKx())); | |
| 326 | - calc.setLblcQh(Arith.add(calc.getLblcQh(), c.getLblcQh())); | |
| 327 | - calc.setLblcYw(Arith.add(calc.getLblcYw(), c.getLblcYw())); | |
| 328 | - calc.setLblcQt(Arith.add(calc.getLblcQt(), c.getLblcQt())); | |
| 329 | - calc.setLjyylc(Arith.add(calc.getLjyylc(), c.getLjyylc())); | |
| 330 | - calc.setLjfyylc(Arith.add(calc.getLjfyylc(), c.getLjfyylc())); | |
| 331 | - calc.setJhyybc(calc.getJhyybc() + c.getJhyybc()); | |
| 332 | - calc.setJhyybczgf(calc.getJhyybczgf() + c.getJhyybczgf()); | |
| 333 | - calc.setJhyybcwgf(calc.getJhyybcwgf() + c.getJhyybcwgf()); | |
| 334 | - calc.setSjyybc(calc.getSjyybc() + c.getSjyybc()); | |
| 335 | - calc.setSjyybczgf(calc.getSjyybczgf() + c.getSjyybczgf()); | |
| 336 | - calc.setSjyybcwgf(calc.getSjyybcwgf() + c.getSjyybcwgf()); | |
| 337 | - calc.setLjbc(calc.getLjbc() + c.getLjbc()); | |
| 338 | - calc.setLjbczgf(calc.getLjbczgf() + c.getLjbczgf()); | |
| 339 | - calc.setLjbcwgf(calc.getLjbcwgf() + c.getLjbcwgf()); | |
| 340 | - calc.setFzbc(calc.getFzbc() + c.getFzbc()); | |
| 341 | - calc.setFzbczgf(calc.getFzbczgf() + c.getFzbczgf()); | |
| 342 | - calc.setFzbcwgf(calc.getFzbcwgf() + c.getFzbcwgf()); | |
| 343 | - calc.setDtbc(calc.getDtbc() + c.getDtbc()); | |
| 344 | - calc.setDtbczgf(calc.getDtbczgf() + c.getDtbczgf()); | |
| 345 | - calc.setDtbcwgf(calc.getDtbcwgf() + c.getDtbcwgf()); | |
| 346 | - } | |
| 347 | - calc.setSjyylc(Arith.add(calc.getSjyylc(), calc.getLjyylc())); | |
| 348 | - calc.setSjfyylc(Arith.add(calc.getSjfyylc(), calc.getLjfyylc())); | |
| 349 | - lists.add(calc); | |
| 350 | - } | |
| 351 | - CalcWaybill sum = new CalcWaybill(); | |
| 352 | - sum.setXlName("合计"); | |
| 353 | - for(CalcWaybill c : lists){ | |
| 354 | - sum.setJhyylc(Arith.add(sum.getJhyylc()!=null?sum.getJhyylc():0, c.getJhyylc())); | |
| 355 | - sum.setJhfyylc(Arith.add(sum.getJhfyylc()!=null?sum.getJhfyylc():0, c.getJhfyylc())); | |
| 356 | - sum.setSjyylc(Arith.add(sum.getSjyylc()!=null?sum.getSjyylc():0, c.getSjyylc())); | |
| 357 | - sum.setLjyylc(Arith.add(sum.getLjyylc()!=null?sum.getLjyylc():0, c.getLjyylc())); | |
| 358 | - sum.setSjfyylc(Arith.add(sum.getSjfyylc()!=null?sum.getSjfyylc():0, c.getSjfyylc())); | |
| 359 | - sum.setLjfyylc(Arith.add(sum.getLjfyylc()!=null?sum.getLjfyylc():0, c.getLjfyylc())); | |
| 360 | - sum.setLblc(Arith.add(sum.getLblc()!=null?sum.getLblc():0, c.getLblc())); | |
| 361 | - sum.setLbbc(sum.getLbbc() + c.getLbbc()); | |
| 362 | - sum.setLblcLz(Arith.add(sum.getLblcLz()!=null?sum.getLblcLz():0, c.getLblcLz())); | |
| 363 | - sum.setLblcDm(Arith.add(sum.getLblcDm()!=null?sum.getLblcDm():0, c.getLblcDm())); | |
| 364 | - sum.setLblcGz(Arith.add(sum.getLblcGz()!=null?sum.getLblcGz():0, c.getLblcGz())); | |
| 365 | - sum.setLblcJf(Arith.add(sum.getLblcJf()!=null?sum.getLblcJf():0, c.getLblcJf())); | |
| 366 | - sum.setLblcZs(Arith.add(sum.getLblcZs()!=null?sum.getLblcZs():0, c.getLblcZs())); | |
| 367 | - sum.setLblcQr(Arith.add(sum.getLblcQr()!=null?sum.getLblcQr():0, c.getLblcQr())); | |
| 368 | - sum.setLblcQc(Arith.add(sum.getLblcQc()!=null?sum.getLblcQc():0, c.getLblcQc())); | |
| 369 | - sum.setLblcKx(Arith.add(sum.getLblcKx()!=null?sum.getLblcKx():0, c.getLblcKx())); | |
| 370 | - sum.setLblcQh(Arith.add(sum.getLblcQh()!=null?sum.getLblcQh():0, c.getLblcQh())); | |
| 371 | - sum.setLblcYw(Arith.add(sum.getLblcYw()!=null?sum.getLblcYw():0, c.getLblcYw())); | |
| 372 | - sum.setLblcQt(Arith.add(sum.getLblcQt()!=null?sum.getLblcQt():0, c.getLblcQt())); | |
| 373 | - sum.setJhyybc(sum.getJhyybc() + c.getJhyybc()); | |
| 374 | - sum.setJhyybczgf(sum.getJhyybczgf() + c.getJhyybczgf()); | |
| 375 | - sum.setJhyybcwgf(sum.getJhyybcwgf() + c.getJhyybcwgf()); | |
| 376 | - sum.setSjyybc(sum.getSjyybc() + c.getSjyybc()); | |
| 377 | - sum.setSjyybczgf(sum.getSjyybczgf() + c.getSjyybczgf()); | |
| 378 | - sum.setSjyybcwgf(sum.getSjyybcwgf() + c.getSjyybcwgf()); | |
| 379 | - sum.setLjbc(sum.getLjbc() + c.getLjbc()); | |
| 380 | - sum.setLjbczgf(sum.getLjbczgf() + c.getLjbczgf()); | |
| 381 | - sum.setLjbcwgf(sum.getLjbcwgf() + c.getLjbcwgf()); | |
| 382 | - sum.setFzbc(sum.getFzbc() + c.getFzbc()); | |
| 383 | - sum.setFzbczgf(sum.getFzbczgf() + c.getFzbczgf()); | |
| 384 | - sum.setFzbcwgf(sum.getFzbcwgf() + c.getFzbcwgf()); | |
| 385 | - sum.setDtbc(sum.getDtbc() + c.getDtbc()); | |
| 386 | - sum.setDtbczgf(sum.getDtbczgf() + c.getDtbczgf()); | |
| 387 | - sum.setDtbcwgf(sum.getDtbcwgf() + c.getDtbcwgf()); | |
| 388 | - } | |
| 389 | - if(lists.size() > 0){ | |
| 390 | - lists.add(sum); | |
| 391 | - } | |
| 392 | - | |
| 393 | - for(CalcWaybill c : lists){ | |
| 394 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 395 | - m.put("xlName", c.getXlName()); | |
| 396 | - m.put("jhzlc", Arith.add(c.getJhyylc(), c.getJhfyylc())); | |
| 397 | - m.put("jhlc", c.getJhyylc()); | |
| 398 | - m.put("jcclc", c.getJhfyylc()); | |
| 399 | -// m.put("sjzgl", Arith.add(Arith.add(c.getSjyylc(), c.getLjyylc()), Arith.add(c.getSjfyylc(), c.getLjfyylc()))); | |
| 400 | -// m.put("sjgl", Arith.add(c.getSjyylc(), c.getLjyylc())); | |
| 401 | -// m.put("sjksgl", Arith.add(c.getSjfyylc(), c.getLjfyylc())); | |
| 402 | - m.put("sjzgl", Arith.add(c.getSjyylc(), c.getSjfyylc())); | |
| 403 | - m.put("sjgl", c.getSjyylc()); | |
| 404 | - m.put("sjksgl", c.getSjfyylc()); | |
| 405 | - m.put("ssgl", c.getLblc()); | |
| 406 | - m.put("ssbc", c.getLbbc()); | |
| 407 | - m.put("ssgl_lz", c.getLblcLz()); | |
| 408 | - m.put("ssgl_dm", c.getLblcDm()); | |
| 409 | - m.put("ssgl_gz", c.getLblcGz()); | |
| 410 | - m.put("ssgl_jf", c.getLblcJf()); | |
| 411 | - m.put("ssgl_zs", c.getLblcZs()); | |
| 412 | - m.put("ssgl_qr", c.getLblcQr()); | |
| 413 | - m.put("ssgl_qc", c.getLblcQc()); | |
| 414 | - m.put("ssgl_kx", c.getLblcKx()); | |
| 415 | - m.put("ssgl_qh", c.getLblcQh()); | |
| 416 | - m.put("ssgl_yw", c.getLblcYw()); | |
| 417 | - m.put("ssgl_other", c.getLblcQt()); | |
| 418 | - m.put("ljgl", c.getLjyylc()); | |
| 419 | - m.put("jhbc", c.getJhyybc()); | |
| 420 | - m.put("jhbc_m", c.getJhyybczgf()); | |
| 421 | - m.put("jhbc_a", c.getJhyybcwgf()); | |
| 422 | - m.put("sjbc", c.getSjyybc()); | |
| 423 | - m.put("sjbc_m", c.getSjyybczgf()); | |
| 424 | - m.put("sjbc_a", c.getSjyybcwgf()); | |
| 425 | - m.put("ljbc", c.getLjbc()); | |
| 426 | - m.put("ljbc_m", c.getLjbczgf()); | |
| 427 | - m.put("ljbc_a", c.getLjbcwgf()); | |
| 428 | - m.put("fzbc", c.getFzbc()); | |
| 429 | - m.put("fzbc_m", c.getFzbczgf()); | |
| 430 | - m.put("fzbc_a", c.getFzbcwgf()); | |
| 431 | - m.put("dtbc", c.getDtbc()); | |
| 432 | - m.put("dtbc_m", c.getDtbczgf()); | |
| 433 | - m.put("dtbc_a", c.getDtbcwgf()); | |
| 434 | - resList.add(m); | |
| 435 | - } | |
| 436 | - | |
| 437 | - if (type != null && type.length() != 0 && type.equals("export")) { | |
| 438 | - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 439 | - sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 440 | - List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 441 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 442 | - m.put("date", date+"至"+date2); | |
| 443 | - ReportUtils ee = new ReportUtils(); | |
| 444 | - try { | |
| 445 | - String dateTime = ""; | |
| 446 | - if(date.equals(date2)){ | |
| 447 | - dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 448 | - } else { | |
| 449 | - dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 450 | - +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 451 | - } | |
| 452 | - listI.add(resList.iterator()); | |
| 453 | - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 454 | - ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_.xls", | |
| 455 | - path + "export/" + dateTime + "-" + xlName + "-统计日报.xls"); | |
| 456 | - } catch (Exception e) { | |
| 457 | - // TODO: handle exception | |
| 458 | - //e.printStackTrace(); | |
| 459 | - logger.info("" , e); | |
| 460 | - } | |
| 461 | - } | |
| 462 | - | |
| 463 | - return resList; | |
| 464 | - } | |
| 465 | - | |
| 466 | - /** | |
| 467 | - * @param rq 格式如:2018-03-22(留空""默认当前日期前四天) | |
| 468 | - * @param line (留空""默认全部线路) | |
| 469 | - */ | |
| 470 | - @Transactional | |
| 471 | - @Override | |
| 472 | - public String calcDaily(String rq, String line) throws Exception{ | |
| 473 | - String result = ""; | |
| 474 | - try { | |
| 475 | - List<String> dateList = new ArrayList<String>(); | |
| 476 | - if(rq == null || rq.trim().length() == 0){ | |
| 477 | - SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); | |
| 478 | - Date dNow = new Date(); //当前时间 | |
| 479 | - Date dBefore = new Date(); | |
| 480 | - Calendar calendar = Calendar.getInstance(); //得到日历 | |
| 481 | - calendar.setTime(dNow);//把当前时间赋给日历 | |
| 482 | - calendar.add(Calendar.DAY_OF_MONTH, -4); //设置为前一天 | |
| 483 | - dBefore = calendar.getTime(); //得到前一天的时间 | |
| 484 | -// rq = sdf.format(dBefore); | |
| 485 | - dateList.add(sdf.format(dBefore)); | |
| 486 | - Date date = new Date(); | |
| 487 | - date.setTime(dBefore.getTime() - 1l*1000*60*60*24); | |
| 488 | - dateList.add(sdf.format(date)); | |
| 489 | - } else { | |
| 490 | -// rq = rq.trim(); | |
| 491 | - dateList.add(rq.trim()); | |
| 492 | - } | |
| 493 | - if(line == null || line.trim().length() == 0){ | |
| 494 | - line = ""; | |
| 495 | - } else { | |
| 496 | - line = line.trim(); | |
| 497 | - } | |
| 498 | - | |
| 499 | - for(int j = 0; j < dateList.size(); j++){ | |
| 500 | - rq = dateList.get(j); | |
| 501 | - | |
| 502 | - List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); | |
| 503 | - List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>(); | |
| 504 | - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>(); | |
| 505 | - | |
| 506 | - String gsSql="select gs_bm, fgs_bm from bsth_c_s_sp_info_real where schedule_date_str = '"+rq+"'"; | |
| 507 | - if(line.trim().length() > 0) | |
| 508 | - gsSql += " and xl_bm = '"+line+"'"; | |
| 509 | - gsSql += " group by gs_bm, fgs_bm"; | |
| 510 | - List<Map<String, String>> gsList=jdbcTemplate.query(gsSql, new RowMapper<Map<String, String>>() { | |
| 511 | - @Override | |
| 512 | - public Map<String, String> mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 513 | - Map<String, String> m = new HashMap<String, String>(); | |
| 514 | - m.put("gsdm", arg0.getString("gs_bm")); | |
| 515 | - m.put("fgsdm", arg0.getString("fgs_bm")); | |
| 516 | - return m; | |
| 517 | - }}); | |
| 518 | - | |
| 519 | - //查询所有线路 | |
| 520 | - for(Map<String, String> m : gsList){ | |
| 521 | - list.addAll(calcStatisticsRepository.scheduleByDateAndLine(line, rq, rq, m.get("gsdm"), m.get("fgsdm"))); | |
| 522 | - } | |
| 523 | - | |
| 524 | - List<CalcInterval> listInterval=calcIntervalRepository.selectByDateAndCompany(rq, "", "",""); | |
| 525 | - Map<String,CalcInterval> mapInterval=new HashMap<String,CalcInterval>(); | |
| 526 | - for (int i = 0; i < listInterval.size(); i++) { | |
| 527 | - CalcInterval c=listInterval.get(i); | |
| 528 | - mapInterval.put(c.getXlBm(), c); | |
| 529 | - } | |
| 530 | - | |
| 531 | - | |
| 532 | - for (int i = 0; i < list.size(); i++) { | |
| 533 | - ScheduleRealInfo s=list.get(i); | |
| 534 | - Set<ChildTaskPlan> cts = s.getcTasks(); | |
| 535 | - if(cts != null && cts.size() > 0){ | |
| 536 | - list_s.add(s); | |
| 537 | - }else{ | |
| 538 | - if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){ | |
| 539 | - list_s.add(s); | |
| 540 | - } | |
| 541 | - } | |
| 542 | - } | |
| 543 | - List<CalcStatistics> lMap = new ArrayList<CalcStatistics>(); | |
| 544 | - for (int i = 0; i < list.size(); i++) { | |
| 545 | - if(i<list.size()-1){ | |
| 546 | - if(list.get(i+1).getXlBm().equals(list.get(i).getXlBm())){ | |
| 547 | - lists.add(list.get(i)); | |
| 548 | - }else{ | |
| 549 | - lists.add(list.get(i)); | |
| 550 | - CalcInterval t=null; | |
| 551 | - if(mapInterval.get(lists.get(0).getXlBm())!=null){ | |
| 552 | - t=mapInterval.get(lists.get(0).getXlBm()); | |
| 553 | - } | |
| 554 | - | |
| 555 | - CalcStatistics s=staticTj(lists,t); | |
| 556 | - lMap.add(s); | |
| 557 | - lists=new ArrayList<ScheduleRealInfo>(); | |
| 558 | - } | |
| 559 | - }else{ | |
| 560 | - if(list.get(i).getXlBm().equals(list.get(i-1).getXlBm())){ | |
| 561 | - lists.add(list.get(i)); | |
| 562 | - CalcInterval t=null; | |
| 563 | - if(mapInterval.get(lists.get(0).getXlBm())!=null){ | |
| 564 | - t=mapInterval.get(lists.get(0).getXlBm()); | |
| 565 | - } | |
| 566 | - CalcStatistics s=staticTj(lists,t); | |
| 567 | - lMap.add(s); | |
| 568 | - }else{ | |
| 569 | - lists=new ArrayList<ScheduleRealInfo>(); | |
| 570 | - lists.add(list.get(i)); | |
| 571 | - CalcInterval t=null; | |
| 572 | - if(mapInterval.get(lists.get(0).getXlBm())!=null){ | |
| 573 | - t=mapInterval.get(lists.get(0).getXlBm()); | |
| 574 | - } | |
| 575 | - CalcStatistics s=staticTj(lists,t); | |
| 576 | - lMap.add(s); | |
| 577 | - } | |
| 578 | - } | |
| 579 | - } | |
| 580 | - // Collections.sort(lMap,new AccountXlbm()); | |
| 581 | - | |
| 582 | - if(line.trim().length() > 0){ | |
| 583 | - calcStatisticsRepository.deleteByDateAndLine(rq, line); | |
| 584 | - } else { | |
| 585 | - calcStatisticsRepository.deleteByDate(rq); | |
| 586 | - } | |
| 587 | - calcStatisticsRepository.saveAll(lMap); | |
| 588 | - | |
| 589 | - System.out.println(rq); | |
| 590 | - System.out.println(dateList.size()); | |
| 591 | - } | |
| 592 | - | |
| 593 | - result = "success"; | |
| 594 | - } catch (Exception e) { | |
| 595 | - // TODO: handle exception | |
| 596 | - throw e; | |
| 597 | - }finally{ | |
| 598 | - logger.info("result:"+result); | |
| 599 | - } | |
| 600 | - return result; | |
| 601 | - } | |
| 602 | - | |
| 603 | - public final CalcStatistics staticTj(List<ScheduleRealInfo> list,CalcInterval t){ | |
| 604 | - | |
| 605 | - List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>(); | |
| 606 | - for(int i=0;i<list.size();i++){ | |
| 607 | - ScheduleRealInfo s=list.get(i); | |
| 608 | - Set<ChildTaskPlan> cts = s.getcTasks(); | |
| 609 | - if(cts != null && cts.size() > 0){ | |
| 610 | - lists.add(s); | |
| 611 | - }else{ | |
| 612 | - if(s.getZdsjActual()!=null&& s.getFcsjActual()!=null){ | |
| 613 | - lists.add(s); | |
| 614 | - } | |
| 615 | - } | |
| 616 | - } | |
| 617 | -// Map<String, Object> map = new HashMap<String, Object>(); | |
| 618 | - CalcStatistics s = new CalcStatistics(); | |
| 619 | - if(list.size() > 0){ | |
| 620 | - ScheduleRealInfo sche = list.get(0); | |
| 621 | - s.setXl(sche.getXlBm()); | |
| 622 | - s.setXlName(sche.getXlName()); | |
| 623 | - s.setDate(sche.getScheduleDate()); | |
| 624 | - s.setDateStr(sche.getScheduleDateStr()); | |
| 625 | - s.setGsdm(sche.getGsBm()); | |
| 626 | - s.setFgsdm(sche.getFgsBm()); | |
| 627 | - | |
| 628 | - double jhyygl=culateService.culateJhgl(list);//计划营运公里 | |
| 629 | - double jhjcclc= culateService.culateJhJccgl(list);//计划进出场公里(计划空驶公里) | |
| 630 | - s.setJhyylc(jhyygl); | |
| 631 | - s.setJhkslc(jhjcclc); | |
| 632 | - s.setJhzlc(Arith.add(jhyygl, jhjcclc)); | |
| 633 | - | |
| 634 | - double ljgl= culateService.culateLjgl(lists); | |
| 635 | - double sjyygl= culateService.culateSjgl(lists); | |
| 636 | - double zyygl= Arith.add(sjyygl,ljgl); | |
| 637 | - | |
| 638 | - double ljksgl= culateService.culateLjksgl(lists); | |
| 639 | - double sjjccgl=culateService.culateJccgl(lists); | |
| 640 | - double sjksgl=culateService.culateKsgl(lists); | |
| 641 | - double zksgl=Arith.add(sjjccgl, sjksgl); | |
| 642 | - s.setSjyylc(zyygl); | |
| 643 | - s.setSjkslc(zksgl); | |
| 644 | - s.setSjzlc(Arith.add(zyygl, zksgl)); | |
| 645 | - | |
| 646 | - s.setLjkslc(ljksgl); | |
| 647 | - | |
| 648 | - s.setSslc(culateService.culateLbgl(list)); | |
| 649 | - s.setSsbc(culateService.culateLbbc(list)); | |
| 650 | - | |
| 651 | - //计划+临加-少驶=实驶 | |
| 652 | -// double jl=Arith.sub(Arith.add(jhyygl, ljgl),ssgl); | |
| 653 | -// if(jl==zyygl){ | |
| 654 | -// map.put("zt", 0); | |
| 655 | -// }else{ | |
| 656 | -// map.put("zt", 1); | |
| 657 | -// } | |
| 658 | - | |
| 659 | - s.setLzlc(culateService.culateCJLC(list, "路阻")); | |
| 660 | - s.setDmlc(culateService.culateCJLC(list, "吊慢")); | |
| 661 | - s.setGzlc(culateService.culateCJLC(list, "故障")); | |
| 662 | - s.setJflc(culateService.culateCJLC(list, "纠纷")); | |
| 663 | - s.setZslc(culateService.culateCJLC(list, "肇事")); | |
| 664 | - s.setQrlc(culateService.culateCJLC(list, "缺人")); | |
| 665 | - s.setQclc(culateService.culateCJLC(list, "缺车")); | |
| 666 | - s.setKxlc(culateService.culateCJLC(list, "客稀")); | |
| 667 | - s.setQhlc(culateService.culateCJLC(list, "气候")); | |
| 668 | - s.setYwlc(culateService.culateCJLC(list, "援外")); | |
| 669 | - double ssgl_pc=culateService.culateCJLC(list, "配车"); | |
| 670 | - double ssgl_by=culateService.culateCJLC(list, "保养"); | |
| 671 | - double ssgl_cj=culateService.culateCJLC(list, "抽减"); | |
| 672 | - double ssgl_qt=culateService.culateCJLC(list, "其他"); | |
| 673 | - s.setQtlc(Arith.add(Arith.add(ssgl_pc, ssgl_by),Arith.add(ssgl_cj, ssgl_qt))); | |
| 674 | - s.setLjlc(ljgl); | |
| 675 | - | |
| 676 | - s.setJhbcq(culateService.culateJhbc(list,"")); | |
| 677 | - s.setJhbcz(culateService.culateJhbc(list, "zgf")); | |
| 678 | - s.setJhbcw(culateService.culateJhbc(list, "wgf")); | |
| 679 | - s.setSjbcq(culateService.culateSjbc(lists,"")); | |
| 680 | - s.setSjbcz(culateService.culateSjbc(lists,"zgf")); | |
| 681 | - s.setSjbcw(culateService.culateSjbc(lists,"wgf")); | |
| 682 | - s.setLjbcq(culateService.culateLjbc(lists,"")); | |
| 683 | - s.setLjbcz(culateService.culateLjbc(lists,"zgf")); | |
| 684 | - s.setLjbcw(culateService.culateLjbc(lists,"wgf")); | |
| 685 | - s.setFzbcq(culateService.culateFzbc(lists, "")); | |
| 686 | - s.setFzbcz(culateService.culateFzbc(lists, "zgf")); | |
| 687 | - s.setFzbcw(culateService.culateFzbc(lists, "wgf")); | |
| 688 | - s.setDtbcq(0); | |
| 689 | - s.setDtbcz(0); | |
| 690 | - s.setDtbcw(0); | |
| 691 | - if(t==null){ | |
| 692 | - Map<String, Object> m_=culateService.culateDjg(lists, list.get(0).getXlBm()); | |
| 693 | - if(m_.containsKey("djgcsq") && m_.get("djgcsq")!=null) | |
| 694 | - s.setDjgq(Integer.valueOf(m_.get("djgcsq").toString())); | |
| 695 | - else | |
| 696 | - s.setDjgq(0); | |
| 697 | - if(m_.containsKey("djgcsz") && m_.get("djgcsz")!=null) | |
| 698 | - s.setDjgz(Integer.valueOf(m_.get("djgcsz").toString())); | |
| 699 | - else | |
| 700 | - s.setDjgz(0); | |
| 701 | - if(m_.containsKey("djgcsw") && m_.get("djgcsw")!=null) | |
| 702 | - s.setDjgw(Integer.valueOf(m_.get("djgcsw").toString())); | |
| 703 | - else | |
| 704 | - s.setDjgw(0); | |
| 705 | - if(m_.containsKey("djgsj") && m_.get("djgsj")!=null) | |
| 706 | - s.setDjgsj(Integer.valueOf(m_.get("djgsj").toString())); | |
| 707 | - else | |
| 708 | - s.setDjgsj(0); | |
| 709 | - }else{ | |
| 710 | - s.setDjgq(t.getDjgAll()); | |
| 711 | - s.setDjgz(t.getDjgZgf()); | |
| 712 | - s.setDjgw(t.getDjgWgf()); | |
| 713 | - s.setDjgsj(t.getDjgTime()); | |
| 714 | - } | |
| 715 | - } | |
| 716 | - return s; | |
| 717 | - } | |
| 718 | - | |
| 719 | - class AccountXlbm implements Comparator<Map<String, Object>>{ | |
| 720 | - @Override | |
| 721 | - public int compare(Map<String, Object> o1, Map<String, Object> o2) { | |
| 722 | - // TODO Auto-generated method stub | |
| 723 | -// PinyinHelper.convertToPinyinString(ppy.getName(), | |
| 724 | -// "" , PinyinFormat.WITHOUT_TONE) | |
| 725 | - return o1.get("xlNamePy").toString().compareTo( | |
| 726 | - o2.get("xlNamePy").toString()); | |
| 727 | - } | |
| 728 | - } | |
| 729 | - | |
| 730 | - class AccountXlbmStr implements Comparator<String>{ | |
| 731 | - @Override | |
| 732 | - public int compare(String o1, String o2) { | |
| 733 | - // TODO Auto-generated method stub | |
| 734 | - return o1.compareTo(o2); | |
| 735 | - } | |
| 736 | - } | |
| 737 | - | |
| 738 | - @Override | |
| 739 | - public List<CalcStatistics> calcStatisticsDaily(String gsdm, String fgsdm, | |
| 740 | - String line, String date, String date2, String xlName, String type,String nature) { | |
| 741 | - // TODO Auto-generated method stub | |
| 742 | - List<CalcStatistics> listAll = new ArrayList<CalcStatistics>(); | |
| 743 | - if(line.length() > 0){ | |
| 744 | - listAll = calcStatisticsRepository.selectByDateAndLineTj2(line, date, date2); | |
| 745 | - } else { | |
| 746 | - listAll = calcStatisticsRepository.selectByDateAndLineTj(line, date, date2, gsdm, fgsdm); | |
| 747 | - } | |
| 748 | - Map<String, Boolean> lineMap=lineService.lineNature(); | |
| 749 | - List<CalcStatistics> list = new ArrayList<CalcStatistics>(); | |
| 750 | - if(nature.equals("0")){ | |
| 751 | - list=listAll; | |
| 752 | - }else{ | |
| 753 | - for (int i = 0; i < listAll.size(); i++) { | |
| 754 | - CalcStatistics c=listAll.get(i); | |
| 755 | - if(nature.equals("1")){ | |
| 756 | - if(lineMap.get(c.getXl())){ | |
| 757 | - list.add(c); | |
| 758 | - } | |
| 759 | - }else{ | |
| 760 | - if(!lineMap.get(c.getXl())){ | |
| 761 | - list.add(c); | |
| 762 | - } | |
| 763 | - } | |
| 764 | - } | |
| 765 | - } | |
| 766 | - List<CalcStatistics> resList = new ArrayList<CalcStatistics>(); | |
| 767 | - Map<String, List<CalcStatistics>> keyMap = new HashMap<String, List<CalcStatistics>>(); | |
| 768 | - List<String> keyList = new ArrayList<String>(); | |
| 769 | - | |
| 770 | - for(CalcStatistics s : list){ | |
| 771 | - try { | |
| 772 | -// String key = PinyinHelper.convertToPinyinString(s.getXl(), "" , PinyinFormat.WITHOUT_TONE); | |
| 773 | - String key =s.getFgsdm()+s.getXl(); | |
| 774 | -// if(line.equals("")){ | |
| 775 | -// key =s.getFgsdm()+s.getXl(); | |
| 776 | -// }else{ | |
| 777 | -// key =s.getXl(); | |
| 778 | -// } | |
| 779 | - if(!keyMap.containsKey(key)){ | |
| 780 | - keyMap.put(key, new ArrayList<CalcStatistics>()); | |
| 781 | - keyList.add(key); | |
| 782 | - } | |
| 783 | - keyMap.get(key).add(s); | |
| 784 | - } catch (Exception e) { | |
| 785 | - // TODO Auto-generated catch block | |
| 786 | - e.printStackTrace(); | |
| 787 | - } | |
| 788 | - } | |
| 789 | - Collections.sort(keyList, new AccountXlbmStr()); | |
| 790 | - | |
| 791 | - for(String key : keyList){ | |
| 792 | - if(keyMap.get(key).size() > 0){ | |
| 793 | - CalcStatistics s = keyMap.get(key).get(0); | |
| 794 | - if(keyMap.get(key).size() > 1) | |
| 795 | - for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 796 | - CalcStatistics s_ = keyMap.get(key).get(i); | |
| 797 | - s = addStatistics(s, s_); | |
| 798 | - } | |
| 799 | -// if(line.equals("")){ | |
| 800 | - s.setFgsName(BasicData.businessFgsCodeNameMap.get(s.getFgsdm()+"_"+s.getGsdm())); | |
| 801 | - /*}else{ | |
| 802 | - List<Line> l=lineRepository.findLineByCode(line); | |
| 803 | - if(l.size()>0) | |
| 804 | - s.setFgsName(BasicData.businessFgsCodeNameMap.get(l.get(0).getBrancheCompany()+"_"+l.get(0).getCompany())); | |
| 805 | - }*/ | |
| 806 | - resList.add(s); | |
| 807 | - } | |
| 808 | - } | |
| 809 | - | |
| 810 | - if(resList.size() > 0){ | |
| 811 | - CalcStatistics temp = new CalcStatistics(); | |
| 812 | - temp.setXlName("合计"); | |
| 813 | - temp.setFgsName(""); | |
| 814 | - for(CalcStatistics s : resList){ | |
| 815 | - temp = addStatistics(temp, s); | |
| 816 | - } | |
| 817 | - resList.add(temp); | |
| 818 | - } | |
| 819 | - | |
| 820 | - List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>(); | |
| 821 | - for(CalcStatistics c : resList){ | |
| 822 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 823 | - m.put("fgsName", c.getFgsName()); | |
| 824 | - m.put("xlName", c.getXlName()); | |
| 825 | - m.put("jhzlc", c.getJhzlc()); | |
| 826 | - m.put("jhlc", c.getJhyylc()); | |
| 827 | - m.put("jcclc", c.getJhkslc()); | |
| 828 | - m.put("sjzgl", c.getSjzlc()); | |
| 829 | - m.put("sjgl", c.getSjyylc()); | |
| 830 | - m.put("sjksgl", c.getSjkslc()); | |
| 831 | - m.put("ssgl", c.getSslc()); | |
| 832 | - m.put("ssbc", c.getSsbc()); | |
| 833 | - m.put("ssgl_lz", c.getLzlc()); | |
| 834 | - m.put("ssgl_dm", c.getDmlc()); | |
| 835 | - m.put("ssgl_gz", c.getGzlc()); | |
| 836 | - m.put("ssgl_jf", c.getJflc()); | |
| 837 | - m.put("ssgl_zs", c.getZslc()); | |
| 838 | - m.put("ssgl_qr", c.getQrlc()); | |
| 839 | - m.put("ssgl_qc", c.getQclc()); | |
| 840 | - m.put("ssgl_kx", c.getKxlc()); | |
| 841 | - m.put("ssgl_qh", c.getQhlc()); | |
| 842 | - m.put("ssgl_yw", c.getYwlc()); | |
| 843 | - m.put("ssgl_other", c.getQtlc()); | |
| 844 | - m.put("ljgl", c.getLjlc()); | |
| 845 | - m.put("ljks", c.getLjkslc()); | |
| 846 | - m.put("jhbc", c.getJhbcq()); | |
| 847 | - m.put("jhbc_m", c.getJhbcz()); | |
| 848 | - m.put("jhbc_a", c.getJhbcw()); | |
| 849 | - m.put("sjbc", c.getSjbcq()); | |
| 850 | - m.put("sjbc_m", c.getSjbcz()); | |
| 851 | - m.put("sjbc_a", c.getSjbcw()); | |
| 852 | - m.put("ljbc", c.getLjbcq()); | |
| 853 | - m.put("ljbc_m", c.getLjbcz()); | |
| 854 | - m.put("ljbc_a", c.getLjbcw()); | |
| 855 | - m.put("fzbc", c.getFzbcq()); | |
| 856 | - m.put("fzbc_m", c.getFzbcz()); | |
| 857 | - m.put("fzbc_a", c.getFzbcw()); | |
| 858 | - m.put("dtbc", c.getDtbcq()); | |
| 859 | - m.put("dtbc_m", c.getDtbcz()); | |
| 860 | - m.put("dtbc_a", c.getDtbcw()); | |
| 861 | - m.put("djg", c.getDjgq()); | |
| 862 | - m.put("djg_m", c.getDjgz()); | |
| 863 | - m.put("djg_a", c.getDjgw()); | |
| 864 | - m.put("djg_time", c.getDjgsj()); | |
| 865 | - mapList.add(m); | |
| 866 | - } | |
| 867 | - | |
| 868 | - if (type != null && type.length() != 0 && type.equals("export")) { | |
| 869 | - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 870 | - sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 871 | - List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 872 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 873 | - m.put("date", date+"至"+date2); | |
| 874 | - ReportUtils ee = new ReportUtils(); | |
| 875 | - try { | |
| 876 | - String dateTime = ""; | |
| 877 | - if(date.equals(date2)){ | |
| 878 | - dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 879 | - } else { | |
| 880 | - dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 881 | - +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 882 | - } | |
| 883 | - listI.add(mapList.iterator()); | |
| 884 | - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 885 | - ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_.xls", | |
| 886 | - path + "export/" + dateTime + "-" + xlName + "-统计日报.xls"); | |
| 887 | - } catch (Exception e) { | |
| 888 | - // TODO: handle exception | |
| 889 | - //e.printStackTrace(); | |
| 890 | - logger.info("" , e); | |
| 891 | - } | |
| 892 | - } | |
| 893 | - | |
| 894 | - return resList; | |
| 895 | - } | |
| 896 | - | |
| 897 | - @Override | |
| 898 | - public List<Map<String, Object>> calcStatisticsDaily2(String gsdm, String fgsdm, | |
| 899 | - String line, String date, String date2, String xlName, String type,String nature) { | |
| 900 | - // TODO Auto-generated method stub | |
| 901 | - SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd"); | |
| 902 | - Date beginDate = new Date(); | |
| 903 | - Calendar calendar = Calendar.getInstance(); | |
| 904 | - calendar.setTime(beginDate); | |
| 905 | - calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 4); | |
| 906 | - String d2 = dft.format(calendar.getTime()); //当前日期前4天 | |
| 907 | - calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) +1); | |
| 908 | - String d3= dft.format(calendar.getTime()); //当前日期前3天 | |
| 909 | - | |
| 910 | - String d1=""; | |
| 911 | - String d4=""; | |
| 912 | - try { | |
| 913 | - long t3 = dft.parse(d2).getTime(); | |
| 914 | - long t1=dft.parse(date).getTime(); | |
| 915 | - long t2=dft.parse(date2).getTime(); | |
| 916 | - | |
| 917 | - if(t1<=t3 && t2>t3){ | |
| 918 | - //所选日期区间区间既有实时数据也有历史数据 | |
| 919 | - d1=date; | |
| 920 | - d4=date2; | |
| 921 | - } else if (t1>t3&&t2>t3){ | |
| 922 | - d1=date; | |
| 923 | - d2=date2; | |
| 924 | - d3=date; | |
| 925 | - d4=date2; | |
| 926 | - }else{ | |
| 927 | - d1=date; | |
| 928 | - d2=date2; | |
| 929 | - //实时数据无需 | |
| 930 | - d3=""; | |
| 931 | - d4=""; | |
| 932 | - } | |
| 933 | - } catch (ParseException e1) { | |
| 934 | - // TODO Auto-generated catch block | |
| 935 | - e1.printStackTrace(); | |
| 936 | - } | |
| 937 | - | |
| 938 | - | |
| 939 | - List<CalcStatistics> listAll = new ArrayList<CalcStatistics>(); | |
| 940 | - if(line.length() > 0){ | |
| 941 | - listAll = calcStatisticsRepository.selectByDateAndLineTj2(line, d1, d2); | |
| 942 | - } else { | |
| 943 | - listAll = calcStatisticsRepository.selectByDateAndLineTj(line, d1, d2, gsdm, fgsdm); | |
| 944 | - } | |
| 945 | - Map<String, Boolean> lineMap=lineService.lineNature(); | |
| 946 | - List<CalcStatistics> list=new ArrayList<CalcStatistics>(); | |
| 947 | - | |
| 948 | - for (int i = 0; i < listAll.size(); i++) { | |
| 949 | - CalcStatistics s=listAll.get(i); | |
| 950 | - if(nature.equals("0")){ | |
| 951 | - list.add(s); | |
| 952 | - }else if(nature.equals("1")){ | |
| 953 | - if(lineMap.containsKey(s.getXl()) && lineMap.get(s.getXl())){ | |
| 954 | - list.add(s); | |
| 955 | - } | |
| 956 | - }else{ | |
| 957 | - if(lineMap.containsKey(s.getXl()) && !lineMap.get(s.getXl())){ | |
| 958 | - list.add(s); | |
| 959 | - } | |
| 960 | - } | |
| 961 | - } | |
| 962 | - List<CalcStatistics> resList = new ArrayList<CalcStatistics>(); | |
| 963 | - Map<String, List<CalcStatistics>> keyMap = new HashMap<String, List<CalcStatistics>>(); | |
| 964 | - List<String> keyList = new ArrayList<String>(); | |
| 965 | - | |
| 966 | - for(CalcStatistics s : list){ | |
| 967 | - try { | |
| 968 | -// String key = PinyinHelper.convertToPinyinString(s.getXlName(), "" , PinyinFormat.WITHOUT_TONE); | |
| 969 | - String key =s.getFgsdm()+s.getXl(); | |
| 970 | -// if(line.equals("")){ | |
| 971 | -// key =s.getFgsdm()+s.getXl(); | |
| 972 | -// }else{ | |
| 973 | -// key =s.getXl(); | |
| 974 | -// } | |
| 975 | - if(!keyMap.containsKey(key)){ | |
| 976 | - keyMap.put(key, new ArrayList<CalcStatistics>()); | |
| 977 | - keyList.add(key); | |
| 978 | - } | |
| 979 | - keyMap.get(key).add(s); | |
| 980 | - } catch (Exception e) { | |
| 981 | - // TODO Auto-generated catch block | |
| 982 | - e.printStackTrace(); | |
| 983 | - } | |
| 984 | - } | |
| 985 | - Collections.sort(keyList, new AccountXlbmStr()); | |
| 986 | - | |
| 987 | - for(String key : keyList){ | |
| 988 | - if(keyMap.get(key).size() > 0){ | |
| 989 | - CalcStatistics s = keyMap.get(key).get(0); | |
| 990 | - if(keyMap.get(key).size() > 1) | |
| 991 | - for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 992 | - CalcStatistics s_ = keyMap.get(key).get(i); | |
| 993 | - s = addStatistics(s, s_); | |
| 994 | - } | |
| 995 | - resList.add(s); | |
| 996 | - } | |
| 997 | - } | |
| 998 | - | |
| 999 | - if(resList.size() > 0){ | |
| 1000 | - CalcStatistics temp = new CalcStatistics(); | |
| 1001 | - temp.setXlName("合计"); | |
| 1002 | - temp.setXl("hj"); | |
| 1003 | - for(CalcStatistics s : resList){ | |
| 1004 | - temp = addStatistics(temp, s); | |
| 1005 | - } | |
| 1006 | - resList.add(temp); | |
| 1007 | - } | |
| 1008 | - //统计数据 | |
| 1009 | - List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>(); | |
| 1010 | - for(CalcStatistics c : resList){ | |
| 1011 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 1012 | - if(c.getXl().equals("hj")){ | |
| 1013 | - m.put("fgsName", ""); | |
| 1014 | - m.put("fgsBm", ""); | |
| 1015 | - }else{ | |
| 1016 | - m.put("fgsName", BasicData.businessFgsCodeNameMap.get(c.getFgsdm()+"_"+c.getGsdm())); | |
| 1017 | - m.put("fgsBm", c.getFgsdm()); | |
| 1018 | - } | |
| 1019 | - m.put("xlBm", c.getXl()); | |
| 1020 | - m.put("xlName", c.getXlName()); | |
| 1021 | - m.put("jhzlc", c.getJhzlc()); | |
| 1022 | - m.put("jhlc", c.getJhyylc()); | |
| 1023 | - m.put("jcclc", c.getJhkslc()); | |
| 1024 | - m.put("sjzgl", c.getSjzlc()); | |
| 1025 | - m.put("sjgl", c.getSjyylc()); | |
| 1026 | - m.put("sjksgl", c.getSjkslc()); | |
| 1027 | - m.put("ssgl", c.getSslc()); | |
| 1028 | - m.put("ssbc", c.getSsbc()); | |
| 1029 | - m.put("ssgl_lz", c.getLzlc()); | |
| 1030 | - m.put("ssgl_dm", c.getDmlc()); | |
| 1031 | - m.put("ssgl_gz", c.getGzlc()); | |
| 1032 | - m.put("ssgl_jf", c.getJflc()); | |
| 1033 | - m.put("ssgl_zs", c.getZslc()); | |
| 1034 | - m.put("ssgl_qr", c.getQrlc()); | |
| 1035 | - m.put("ssgl_qc", c.getQclc()); | |
| 1036 | - m.put("ssgl_kx", c.getKxlc()); | |
| 1037 | - m.put("ssgl_qh", c.getQhlc()); | |
| 1038 | - m.put("ssgl_yw", c.getYwlc()); | |
| 1039 | - m.put("ssgl_other", c.getQtlc()); | |
| 1040 | - m.put("ljgl", c.getLjlc()); | |
| 1041 | - m.put("ljks", c.getLjkslc()); | |
| 1042 | - m.put("jhbc", c.getJhbcq()); | |
| 1043 | - m.put("jhbc_m", c.getJhbcz()); | |
| 1044 | - m.put("jhbc_a", c.getJhbcw()); | |
| 1045 | - m.put("sjbc", c.getSjbcq()); | |
| 1046 | - m.put("sjbc_m", c.getSjbcz()); | |
| 1047 | - m.put("sjbc_a", c.getSjbcw()); | |
| 1048 | - m.put("ljbc", c.getLjbcq()); | |
| 1049 | - m.put("ljbc_m", c.getLjbcz()); | |
| 1050 | - m.put("ljbc_a", c.getLjbcw()); | |
| 1051 | - m.put("fzbc", c.getFzbcq()); | |
| 1052 | - m.put("fzbc_m", c.getFzbcz()); | |
| 1053 | - m.put("fzbc_a", c.getFzbcw()); | |
| 1054 | - m.put("dtbc", c.getDtbcq()); | |
| 1055 | - m.put("dtbc_m", c.getDtbcz()); | |
| 1056 | - m.put("dtbc_a", c.getDtbcw()); | |
| 1057 | - m.put("djg", c.getDjgq()); | |
| 1058 | - m.put("djg_m", c.getDjgz()); | |
| 1059 | - m.put("djg_a", c.getDjgw()); | |
| 1060 | - m.put("djg_time", c.getDjgsj()); | |
| 1061 | - double jl = Arith.sub(Arith.add(m.get("jhlc"), m.get("ljgl")), m.get("ssgl")); | |
| 1062 | - if (jl == Double.parseDouble(m.get("sjgl").toString())) { | |
| 1063 | - m.put("zt", 0); | |
| 1064 | - } else { | |
| 1065 | - m.put("zt", 1); | |
| 1066 | - } | |
| 1067 | - mapList.add(m); | |
| 1068 | - } | |
| 1069 | - | |
| 1070 | - //实时数据 | |
| 1071 | - List<Map<String, Object>> tjlist=new ArrayList<Map<String, Object>>(); | |
| 1072 | - if(!d4.equals("")){ | |
| 1073 | - tjlist= scheduleRealInfoService.statisticsDailyTjHb(gsdm, fgsdm, line, d3, d4, xlName, type,nature); | |
| 1074 | - } | |
| 1075 | - List<Map<String, Object>> mapListHj = new ArrayList<Map<String, Object>>(); | |
| 1076 | -// List<String> lineList=new ArrayList<String>(); | |
| 1077 | - Map<String, Object> kMap=new HashMap<String,Object>(); | |
| 1078 | - mapList.addAll(tjlist); | |
| 1079 | - for (int i = 0; i < mapList.size(); i++) { | |
| 1080 | - Map<String, Object> m =mapList.get(i); | |
| 1081 | -// if(line.equals("")){ | |
| 1082 | - if(kMap.get(m.get("fgsBm")+"_"+m.get("xlBm").toString())==null){ | |
| 1083 | - kMap.put(m.get("fgsBm")+"_"+m.get("xlBm").toString(), m.get("fgsBm")+"_"+m.get("xlBm").toString()); | |
| 1084 | - } | |
| 1085 | -// }else{ | |
| 1086 | -// if(kMap.get(m.get("xlBm").toString())==null){ | |
| 1087 | -// kMap.put(m.get("xlBm").toString(), m.get("xlBm").toString()); | |
| 1088 | -// } | |
| 1089 | -// } | |
| 1090 | - | |
| 1091 | - } | |
| 1092 | - for (Object xlbm : kMap.keySet()) { | |
| 1093 | - Map<String, Object> hjMap = new HashMap<String, Object>(); | |
| 1094 | - for (int i = 0; i < mapList.size(); i++) { | |
| 1095 | - Map<String, Object> lsMap=mapList.get(i); | |
| 1096 | - String xlbm_=""; | |
| 1097 | -// if(line.equals("")){ | |
| 1098 | - xlbm_=lsMap.get("fgsBm").toString()+"_"+lsMap.get("xlBm").toString(); | |
| 1099 | -// }else{ | |
| 1100 | -// xlbm_=lsMap.get("xlBm").toString(); | |
| 1101 | -// } | |
| 1102 | - if (xlbm_.equals(xlbm)) { | |
| 1103 | - if(hjMap.get("xlBm")==null){ | |
| 1104 | - hjMap.put("xlBm", lsMap.get("xlBm")); | |
| 1105 | - hjMap.put("xlName", lsMap.get("xlName")); | |
| 1106 | - hjMap.put("fgsName", lsMap.get("fgsName")); | |
| 1107 | - try { | |
| 1108 | - if(lsMap.get("xlBm").toString().equals("hj")){ | |
| 1109 | - hjMap.put("xlNamePy", "zzzzz"); | |
| 1110 | - }else{ | |
| 1111 | - hjMap.put("xlNamePy", PinyinHelper.convertToPinyinString(lsMap.get("fgsBm").toString()+lsMap.get("xlName").toString(), "", PinyinFormat.WITHOUT_TONE)); | |
| 1112 | - } | |
| 1113 | - } catch (PinyinException e) { | |
| 1114 | - // TODO Auto-generated catch block | |
| 1115 | - e.printStackTrace(); | |
| 1116 | - } | |
| 1117 | - } | |
| 1118 | - hjMap.put("jhzlc", Arith.add(lsMap.get("jhzlc"), hjMap.get("jhzlc")==null?"0":hjMap.get("jhzlc"))); | |
| 1119 | - hjMap.put("jhlc", Arith.add(lsMap.get("jhlc"), hjMap.get("jhlc")==null?"0":hjMap.get("jhlc"))); | |
| 1120 | - hjMap.put("jcclc",Arith.add(lsMap.get("jcclc"), hjMap.get("jcclc")==null?"0":hjMap.get("jcclc"))); | |
| 1121 | - hjMap.put("sjzgl",Arith.add(lsMap.get("sjzgl"), hjMap.get("sjzgl")==null?"0": hjMap.get("sjzgl"))); | |
| 1122 | - hjMap.put("sjgl", Arith.add(lsMap.get("sjgl"), hjMap.get("sjgl")==null?"0":hjMap.get("sjgl"))); | |
| 1123 | - hjMap.put("sjksgl", Arith.add(lsMap.get("sjksgl"), hjMap.get("sjksgl")==null?"0":hjMap.get("sjksgl"))); | |
| 1124 | - hjMap.put("ssgl", Arith.add(lsMap.get("ssgl"), hjMap.get("ssgl")==null?"0":hjMap.get("ssgl"))); | |
| 1125 | - hjMap.put("ssbc", Integer.parseInt(lsMap.get("ssbc").toString())+Integer.parseInt(hjMap.get("ssbc")==null?"0":hjMap.get("ssbc").toString())); | |
| 1126 | - hjMap.put("ssgl_lz", Arith.add(lsMap.get("ssgl_lz"), hjMap.get("ssgl_lz")==null?"0":hjMap.get("ssgl_lz"))); | |
| 1127 | - hjMap.put("ssgl_dm", Arith.add(lsMap.get("ssgl_dm"), hjMap.get("ssgl_dm")==null?"0":hjMap.get("ssgl_dm"))); | |
| 1128 | - hjMap.put("ssgl_gz", Arith.add(lsMap.get("ssgl_gz"), hjMap.get("ssgl_gz")==null?"0":hjMap.get("ssgl_gz"))); | |
| 1129 | - hjMap.put("ssgl_jf", Arith.add(lsMap.get("ssgl_jf"), hjMap.get("ssgl_jf")==null?"0":hjMap.get("ssgl_jf"))); | |
| 1130 | - hjMap.put("ssgl_zs", Arith.add(lsMap.get("ssgl_zs"), hjMap.get("ssgl_zs")==null?"0":hjMap.get("ssgl_zs"))); | |
| 1131 | - hjMap.put("ssgl_qr", Arith.add(lsMap.get("ssgl_qr"), hjMap.get("ssgl_qr")==null?"0":hjMap.get("ssgl_qr"))); | |
| 1132 | - hjMap.put("ssgl_qc", Arith.add(lsMap.get("ssgl_qc"), hjMap.get("ssgl_qc")==null?"0":hjMap.get("ssgl_qc"))); | |
| 1133 | - hjMap.put("ssgl_kx", Arith.add(lsMap.get("ssgl_kx"), hjMap.get("ssgl_kx")==null?"0":hjMap.get("ssgl_kx"))); | |
| 1134 | - hjMap.put("ssgl_qh", Arith.add(lsMap.get("ssgl_qh"), hjMap.get("ssgl_qh")==null?"0":hjMap.get("ssgl_qh"))); | |
| 1135 | - hjMap.put("ssgl_yw", Arith.add(lsMap.get("ssgl_yw"), hjMap.get("ssgl_yw")==null?"0":hjMap.get("ssgl_yw"))); | |
| 1136 | - hjMap.put("ssgl_other", Arith.add(lsMap.get("ssgl_other"), hjMap.get("ssgl_other")==null?"0":hjMap.get("ssgl_other"))); | |
| 1137 | - hjMap.put("ljgl", Arith.add(lsMap.get("ljgl"), hjMap.get("ljgl")==null?"0":hjMap.get("ljgl"))); | |
| 1138 | - hjMap.put("ljks", Arith.add(lsMap.get("ljks"), hjMap.get("ljks")==null?"0":hjMap.get("ljks"))); | |
| 1139 | - hjMap.put("jhbc", Integer.parseInt(lsMap.get("jhbc").toString())+ Integer.parseInt(hjMap.get("jhbc")==null?"0":hjMap.get("jhbc").toString())); | |
| 1140 | - hjMap.put("jhbc_m", Integer.parseInt(lsMap.get("jhbc_m").toString())+Integer.parseInt(hjMap.get("jhbc_m")==null?"0":hjMap.get("jhbc_m").toString())); | |
| 1141 | - hjMap.put("jhbc_a", Integer.parseInt(lsMap.get("jhbc_a").toString())+ Integer.parseInt(hjMap.get("jhbc_a")==null?"0":hjMap.get("jhbc_a").toString())); | |
| 1142 | - hjMap.put("sjbc", Integer.parseInt(lsMap.get("sjbc").toString())+ Integer.parseInt(hjMap.get("sjbc")==null?"0":hjMap.get("sjbc").toString())); | |
| 1143 | - hjMap.put("sjbc_m",Integer.parseInt(lsMap.get("sjbc_m").toString())+ Integer.parseInt(hjMap.get("sjbc_m")==null?"0":hjMap.get("sjbc_m").toString())); | |
| 1144 | - hjMap.put("sjbc_a", Integer.parseInt(lsMap.get("sjbc_a").toString())+ Integer.parseInt(hjMap.get("sjbc_a")==null?"0":hjMap.get("sjbc_a").toString())); | |
| 1145 | - hjMap.put("ljbc", Integer.parseInt(lsMap.get("ljbc").toString())+ Integer.parseInt(hjMap.get("ljbc")==null?"0":hjMap.get("ljbc").toString())); | |
| 1146 | - hjMap.put("ljbc_m", Integer.parseInt(lsMap.get("ljbc_m").toString())+ Integer.parseInt(hjMap.get("ljbc_m")==null?"0":hjMap.get("ljbc_m").toString())); | |
| 1147 | - hjMap.put("ljbc_a", Integer.parseInt(lsMap.get("ljbc_a").toString())+Integer.parseInt(hjMap.get("ljbc_a")==null?"0":hjMap.get("ljbc_a").toString())); | |
| 1148 | - hjMap.put("fzbc", Integer.parseInt(lsMap.get("fzbc").toString())+ Integer.parseInt(hjMap.get("fzbc")==null?"0":hjMap.get("fzbc").toString())); | |
| 1149 | - hjMap.put("fzbc_m",Integer.parseInt(lsMap.get("fzbc_m").toString())+ Integer.parseInt(hjMap.get("fzbc_m")==null?"0":hjMap.get("fzbc_m").toString())); | |
| 1150 | - hjMap.put("fzbc_a",Integer.parseInt(lsMap.get("fzbc_a").toString())+ Integer.parseInt(hjMap.get("fzbc_a")==null?"0":hjMap.get("fzbc_a").toString())); | |
| 1151 | - hjMap.put("dtbc", Integer.parseInt(lsMap.get("dtbc").toString())+ Integer.parseInt(hjMap.get("dtbc")==null?"0":hjMap.get("dtbc").toString())); | |
| 1152 | - hjMap.put("dtbc_m", Integer.parseInt(lsMap.get("dtbc_m").toString())+ Integer.parseInt(hjMap.get("dtbc_m")==null?"0":hjMap.get("dtbc_m").toString())); | |
| 1153 | - hjMap.put("dtbc_a", Integer.parseInt(lsMap.get("dtbc_a").toString())+ Integer.parseInt(hjMap.get("dtbc_a")==null?"0":hjMap.get("dtbc_a").toString())); | |
| 1154 | - hjMap.put("djg", Integer.parseInt(lsMap.get("djg").toString())+ Integer.parseInt(hjMap.get("djg")==null?"0":hjMap.get("djg").toString())); | |
| 1155 | - hjMap.put("djg_m", Integer.parseInt(lsMap.get("djg_m").toString())+ Integer.parseInt(hjMap.get("djg_m")==null?"0":hjMap.get("djg_m").toString())); | |
| 1156 | - hjMap.put("djg_a", Integer.parseInt(lsMap.get("djg_a").toString())+ Integer.parseInt(hjMap.get("djg_a")==null?"0":hjMap.get("djg_a").toString())); | |
| 1157 | - if(hjMap.get("djg_time")==null){ | |
| 1158 | - hjMap.put("djg_time", lsMap.get("djg_time")); | |
| 1159 | - }else{ | |
| 1160 | - if(Arith.add(lsMap.get("djg_time"),0)>Arith.add(hjMap.get("djg_time"), 0)){ | |
| 1161 | - hjMap.put("djg_time", lsMap.get("djg_time")); | |
| 1162 | - }else{ | |
| 1163 | - hjMap.put("djg_time",hjMap.get("djg_time")); | |
| 1164 | - } | |
| 1165 | - } | |
| 1166 | - double jl = Arith.sub(Arith.add(hjMap.get("jhlc"), hjMap.get("ljgl")), hjMap.get("ssgl")); | |
| 1167 | - if (jl == Double.parseDouble(hjMap.get("sjgl").toString())) { | |
| 1168 | - hjMap.put("zt", 0); | |
| 1169 | - } else { | |
| 1170 | - hjMap.put("zt", 1); | |
| 1171 | - } | |
| 1172 | - } | |
| 1173 | - } | |
| 1174 | - mapListHj.add(hjMap); | |
| 1175 | - } | |
| 1176 | - | |
| 1177 | - Collections.sort(mapListHj, new AccountXlbmByping()); | |
| 1178 | - | |
| 1179 | - /*if(!line.equals("")){ | |
| 1180 | - for (int i = 0; i < mapListHj.size(); i++) { | |
| 1181 | - if(mapListHj.get(i).get("xlBm").equals(line)){ | |
| 1182 | - List<Line> l=lineRepository.findLineByCode(line); | |
| 1183 | - if(l.size()>0) | |
| 1184 | - mapListHj.get(i).put("fgsName", BasicData.businessFgsCodeNameMap.get(l.get(0).getBrancheCompany()+"_"+l.get(0).getCompany())); | |
| 1185 | - } | |
| 1186 | - } | |
| 1187 | - }*/ | |
| 1188 | - if (type != null && type.length() != 0 && type.equals("export")) { | |
| 1189 | - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 1190 | - sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 1191 | - List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 1192 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 1193 | - m.put("date", date+"至"+date2); | |
| 1194 | - ReportUtils ee = new ReportUtils(); | |
| 1195 | - try { | |
| 1196 | - String dateTime = ""; | |
| 1197 | - if(date.equals(date2)){ | |
| 1198 | - dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 1199 | - } else { | |
| 1200 | - dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 1201 | - +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 1202 | - } | |
| 1203 | - listI.add(mapListHj.iterator()); | |
| 1204 | - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 1205 | - ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_2.xls", | |
| 1206 | - path + "export/" + dateTime + "-" + xlName + "-统计日报.xls"); | |
| 1207 | - } catch (Exception e) { | |
| 1208 | - // TODO: handle exception | |
| 1209 | - //e.printStackTrace(); | |
| 1210 | - logger.info("" , e); | |
| 1211 | - } | |
| 1212 | - } | |
| 1213 | - | |
| 1214 | - return mapListHj; | |
| 1215 | - } | |
| 1216 | - | |
| 1217 | - public CalcStatistics addStatistics(CalcStatistics s, CalcStatistics s_){ | |
| 1218 | - s.setJhzlc(Arith.add(s.getJhzlc()!=null?s.getJhzlc():0, s_.getJhzlc())); | |
| 1219 | - s.setJhyylc(Arith.add(s.getJhyylc()!=null?s.getJhyylc():0, s_.getJhyylc())); | |
| 1220 | - s.setJhkslc(Arith.add(s.getJhkslc()!=null?s.getJhkslc():0, s_.getJhkslc())); | |
| 1221 | - s.setSjzlc(Arith.add(s.getSjzlc()!=null?s.getSjzlc():0, s_.getSjzlc())); | |
| 1222 | - s.setSjyylc(Arith.add(s.getSjyylc()!=null?s.getSjyylc():0, s_.getSjyylc())); | |
| 1223 | - s.setSjkslc(Arith.add(s.getSjkslc()!=null?s.getSjkslc():0, s_.getSjkslc())); | |
| 1224 | - s.setSslc(Arith.add(s.getSslc()!=null?s.getSslc():0, s_.getSslc())); | |
| 1225 | - s.setSsbc(s.getSsbc() + s_.getSsbc()); | |
| 1226 | - s.setLzlc(Arith.add(s.getLzlc()!=null?s.getLzlc():0, s_.getLzlc())); | |
| 1227 | - s.setDmlc(Arith.add(s.getDmlc()!=null?s.getDmlc():0, s_.getDmlc())); | |
| 1228 | - s.setGzlc(Arith.add(s.getGzlc()!=null?s.getGzlc():0, s_.getGzlc())); | |
| 1229 | - s.setJflc(Arith.add(s.getJflc()!=null?s.getJflc():0, s_.getJflc())); | |
| 1230 | - s.setZslc(Arith.add(s.getZslc()!=null?s.getZslc():0, s_.getZslc())); | |
| 1231 | - s.setQrlc(Arith.add(s.getQrlc()!=null?s.getQrlc():0, s_.getQrlc())); | |
| 1232 | - s.setQclc(Arith.add(s.getQclc()!=null?s.getQclc():0, s_.getQclc())); | |
| 1233 | - s.setKxlc(Arith.add(s.getKxlc()!=null?s.getKxlc():0, s_.getKxlc())); | |
| 1234 | - s.setQhlc(Arith.add(s.getQhlc()!=null?s.getQhlc():0, s_.getQhlc())); | |
| 1235 | - s.setYwlc(Arith.add(s.getYwlc()!=null?s.getYwlc():0, s_.getYwlc())); | |
| 1236 | - s.setQtlc(Arith.add(s.getQtlc()!=null?s.getQtlc():0, s_.getQtlc())); | |
| 1237 | - s.setLjlc(Arith.add(s.getLjlc()!=null?s.getLjlc():0, s_.getLjlc())); | |
| 1238 | - if(s_.getLjkslc() == null){ | |
| 1239 | - s_.setLjkslc(0d); | |
| 1240 | - } | |
| 1241 | - s.setLjkslc(Arith.add(s.getLjkslc()!=null?s.getLjkslc():0, s_.getLjkslc())); | |
| 1242 | - s.setJhbcq(s.getJhbcq() + s_.getJhbcq()); | |
| 1243 | - s.setJhbcz(s.getJhbcz() + s_.getJhbcz()); | |
| 1244 | - s.setJhbcw(s.getJhbcw() + s_.getJhbcw()); | |
| 1245 | - s.setSjbcq(s.getSjbcq() + s_.getSjbcq()); | |
| 1246 | - s.setSjbcz(s.getSjbcz() + s_.getSjbcz()); | |
| 1247 | - s.setSjbcw(s.getSjbcw() + s_.getSjbcw()); | |
| 1248 | - s.setLjbcq(s.getLjbcq() + s_.getLjbcq()); | |
| 1249 | - s.setLjbcz(s.getLjbcz() + s_.getLjbcz()); | |
| 1250 | - s.setLjbcw(s.getLjbcw() + s_.getLjbcw()); | |
| 1251 | - s.setFzbcq(s.getFzbcq() + s_.getFzbcq()); | |
| 1252 | - s.setFzbcz(s.getFzbcz() + s_.getFzbcz()); | |
| 1253 | - s.setFzbcw(s.getFzbcw() + s_.getFzbcw()); | |
| 1254 | - s.setDtbcq(s.getDtbcq() + s_.getDtbcq()); | |
| 1255 | - s.setDtbcz(s.getDtbcz() + s_.getDtbcz()); | |
| 1256 | - s.setDtbcw(s.getDtbcw() + s_.getDtbcw()); | |
| 1257 | - s.setDjgq(s.getDjgq() + s_.getDjgq()); | |
| 1258 | - s.setDjgz(s.getDjgz() + s_.getDjgz()); | |
| 1259 | - s.setDjgw(s.getDjgw() + s_.getDjgw()); | |
| 1260 | - s.setDjgsj(s.getDjgsj()>s_.getDjgsj()?s.getDjgsj():s_.getDjgsj()); | |
| 1261 | - return s; | |
| 1262 | - } | |
| 1263 | - | |
| 1264 | - @Transactional | |
| 1265 | - @Override | |
| 1266 | - public Map<String, Object> calcLineMileage(String date, String line) { | |
| 1267 | - Map<String, Object> resMap = new HashMap<String, Object>(); | |
| 1268 | - | |
| 1269 | - if(date.length() == 0){ | |
| 1270 | - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 1271 | - Date d = new Date(); | |
| 1272 | - d.setTime(d.getTime() - 4 * 1000 * 60 * 60 * 24); | |
| 1273 | - date = sdf.format(d); | |
| 1274 | - } | |
| 1275 | - | |
| 1276 | - resMap.put("date", date); | |
| 1277 | - resMap.put("line", line); | |
| 1278 | - if(date == null || date.trim().length() == 0){ | |
| 1279 | - resMap.put("status", ResponseCode.ERROR); | |
| 1280 | - resMap.put("remark", "日期不正确或为空"); | |
| 1281 | - return resMap; | |
| 1282 | - } else { | |
| 1283 | - date = date.trim(); | |
| 1284 | - } | |
| 1285 | - if(line == null){ | |
| 1286 | - line = ""; | |
| 1287 | - } else { | |
| 1288 | - line = line.trim(); | |
| 1289 | - } | |
| 1290 | - | |
| 1291 | - Map<String, Object> map = new HashMap<String, Object>(); | |
| 1292 | - List<CalcLineMileage> list = new ArrayList<CalcLineMileage>(); | |
| 1293 | - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 1294 | - Date dateTime = new Date(); | |
| 1295 | - | |
| 1296 | - try { | |
| 1297 | - | |
| 1298 | - String gsSql="select gs_bm, fgs_bm from bsth_c_s_sp_info_real where schedule_date_str = '"+date+"'"; | |
| 1299 | - if(line.trim().length() > 0) | |
| 1300 | - gsSql += " and xl_bm = '"+line+"'"; | |
| 1301 | - gsSql += " group by gs_bm, fgs_bm"; | |
| 1302 | - List<Map<String, String>> gsList=jdbcTemplate.query(gsSql, new RowMapper<Map<String, String>>() { | |
| 1303 | - @Override | |
| 1304 | - public Map<String, String> mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 1305 | - Map<String, String> m = new HashMap<String, String>(); | |
| 1306 | - m.put("gsdm", arg0.getString("gs_bm")); | |
| 1307 | - m.put("fgsdm", arg0.getString("fgs_bm")); | |
| 1308 | - return m; | |
| 1309 | - }}); | |
| 1310 | - | |
| 1311 | - map.put("date", date); | |
| 1312 | - map.put("date2", date); | |
| 1313 | - for(Map<String, String> tempMap : gsList){ | |
| 1314 | - map.put("gsdm", tempMap.get("gsdm").toString()); | |
| 1315 | - map.put("fgsdm", tempMap.get("fgsdm").toString()); | |
| 1316 | - List<Map<String, Object>> countByList = reportService.countByList(map); | |
| 1317 | - for(Map<String, Object> m : countByList){ | |
| 1318 | - if(!m.containsKey("xlName") || m.get("xlName")==null | |
| 1319 | - || m.get("xlName").toString().equals("合计")) | |
| 1320 | - continue; | |
| 1321 | - CalcLineMileage c = new CalcLineMileage(); | |
| 1322 | - c.setDate(sdf.parse(date)); | |
| 1323 | - c.setDateStr(date); | |
| 1324 | - c.setGsdm(map.get("gsdm").toString()); | |
| 1325 | - c.setGsName(m.get("gs").toString()); | |
| 1326 | - c.setFgsdm(map.get("fgsdm").toString()); | |
| 1327 | - c.setFgsName(m.get("fgs").toString()); | |
| 1328 | - c.setXl(m.get("line").toString()); | |
| 1329 | - c.setXlName(m.get("xlName").toString()); | |
| 1330 | - c.setJhzlc(Double.valueOf(m.get("jhzlc").toString())); | |
| 1331 | - c.setJhlc(Double.valueOf(m.get("jhlc").toString())); | |
| 1332 | - c.setJcclc(Double.valueOf(m.get("jcclc").toString())); | |
| 1333 | - c.setSjzgl(Double.valueOf(m.get("sjzgl").toString())); | |
| 1334 | - c.setJhnlc(Double.valueOf(m.get("jhnlc").toString())); | |
| 1335 | - c.setJhwlc(Double.valueOf(m.get("jhwlc").toString())); | |
| 1336 | - c.setJhnjcclc(Double.valueOf(m.get("jhnjcclc").toString())); | |
| 1337 | - c.setJhwjcclc(Double.valueOf(m.get("jhwjcclc").toString())); | |
| 1338 | - c.setJhwjcclcz(Double.valueOf(m.get("jhwjcclc_z").toString())); | |
| 1339 | - c.setZrwjcclc(Double.valueOf(m.get("zrwjcclc").toString())); | |
| 1340 | - c.setZrwjcclc1(Double.valueOf(m.get("zrwjcclc1").toString())); | |
| 1341 | - c.setZrwjcclc2(Double.valueOf(m.get("zrwjcclc2").toString())); | |
| 1342 | - c.setZrwjcclcqt(Double.valueOf(m.get("zrwjcclcqt").toString())); | |
| 1343 | - c.setKfks(Double.valueOf(m.get("kfks").toString())); | |
| 1344 | - c.setLbss(Double.valueOf(m.get("lbss").toString())); | |
| 1345 | - c.setSsglLz(Double.valueOf(m.get("ssgl_lz").toString())); | |
| 1346 | - c.setSsglDm(Double.valueOf(m.get("ssgl_dm").toString())); | |
| 1347 | - c.setSsglGz(Double.valueOf(m.get("ssgl_gz").toString())); | |
| 1348 | - c.setSsglJf(Double.valueOf(m.get("ssgl_jf").toString())); | |
| 1349 | - c.setSsglZs(Double.valueOf(m.get("ssgl_zs").toString())); | |
| 1350 | - c.setSsglQr(Double.valueOf(m.get("ssgl_qr").toString())); | |
| 1351 | - c.setSsglQc(Double.valueOf(m.get("ssgl_qc").toString())); | |
| 1352 | - c.setSsglKx(Double.valueOf(m.get("ssgl_kx").toString())); | |
| 1353 | - c.setSsglQh(Double.valueOf(m.get("ssgl_qh").toString())); | |
| 1354 | - c.setSsglYw(Double.valueOf(m.get("ssgl_yw").toString())); | |
| 1355 | - c.setSsglOther(Double.valueOf(m.get("ssgl_other").toString())); | |
| 1356 | - c.setLjyy(Double.valueOf(m.get("ljyy").toString())); | |
| 1357 | - c.setLjjcc(Double.valueOf(m.get("ljjcc").toString())); | |
| 1358 | - c.setLjkfks(Double.valueOf(m.get("ljkfks").toString())); | |
| 1359 | - c.setCreateDate(dateTime); | |
| 1360 | - list.add(c); | |
| 1361 | - } | |
| 1362 | - } | |
| 1363 | - | |
| 1364 | - if(line.length() > 0){ | |
| 1365 | - calcLineMileageRepository.deleteByDateAndLine(date, line); | |
| 1366 | - } else { | |
| 1367 | - calcLineMileageRepository.deleteByDate(date); | |
| 1368 | - } | |
| 1369 | - calcLineMileageRepository.saveAll(list); | |
| 1370 | - | |
| 1371 | - resMap.put("status", ResponseCode.SUCCESS); | |
| 1372 | - } catch (Exception e) { | |
| 1373 | - // TODO: handle exception | |
| 1374 | - resMap.put("status", ResponseCode.ERROR); | |
| 1375 | - logger.error("save erro.", e); | |
| 1376 | - e.printStackTrace(); | |
| 1377 | - } | |
| 1378 | - return resMap; | |
| 1379 | - } | |
| 1380 | - | |
| 1381 | - @Transactional | |
| 1382 | - @Override | |
| 1383 | - public Map<String, Object> calcBusMileage(String date, String line) { | |
| 1384 | - Map<String, Object> resMap = new HashMap<String, Object>(); | |
| 1385 | - | |
| 1386 | - if(date.length() == 0){ | |
| 1387 | - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 1388 | - Date d = new Date(); | |
| 1389 | - d.setTime(d.getTime() - 4 * 1000 * 60 * 60 * 24); | |
| 1390 | - date = sdf.format(d); | |
| 1391 | - } | |
| 1392 | - | |
| 1393 | - resMap.put("date", date); | |
| 1394 | - resMap.put("line", line); | |
| 1395 | - if(date == null || date.trim().length() == 0){ | |
| 1396 | - resMap.put("status", ResponseCode.ERROR); | |
| 1397 | - resMap.put("remark", "日期不正确或为空"); | |
| 1398 | - return resMap; | |
| 1399 | - } else { | |
| 1400 | - date = date.trim(); | |
| 1401 | - } | |
| 1402 | - if(line == null){ | |
| 1403 | - line = ""; | |
| 1404 | - } else { | |
| 1405 | - line = line.trim(); | |
| 1406 | - } | |
| 1407 | - | |
| 1408 | - Map<String, Object> map = new HashMap<String, Object>(); | |
| 1409 | - Map<String, Object> xlmap = new HashMap<String, Object>(); | |
| 1410 | - List<CalcBusMileage> list = new ArrayList<CalcBusMileage>(); | |
| 1411 | - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 1412 | - Date dateTime = new Date(); | |
| 1413 | - | |
| 1414 | - try { | |
| 1415 | - | |
| 1416 | - String gsSql="select gs_bm, max(gs_name) gs_name, fgs_bm from bsth_c_s_sp_info_real" | |
| 1417 | - + " where schedule_date_str = '"+date+"'"; | |
| 1418 | - if(line.trim().length() > 0) | |
| 1419 | - gsSql += " and xl_bm = '"+line+"'"; | |
| 1420 | - gsSql += " group by gs_bm, fgs_bm"; | |
| 1421 | - List<Map<String, String>> gsList=jdbcTemplate.query(gsSql, new RowMapper<Map<String, String>>() { | |
| 1422 | - @Override | |
| 1423 | - public Map<String, String> mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 1424 | - Map<String, String> m = new HashMap<String, String>(); | |
| 1425 | - m.put("gsdm", arg0.getString("gs_bm")); | |
| 1426 | - m.put("gsName", arg0.getString("gs_name")); | |
| 1427 | - m.put("fgsdm", arg0.getString("fgs_bm")); | |
| 1428 | - return m; | |
| 1429 | - }}); | |
| 1430 | - | |
| 1431 | - List<Line> xlList = lineRepository.findAllService(); | |
| 1432 | - for(Line l : xlList){ | |
| 1433 | - xlmap.put(l.getName(), l.getLineCode()); | |
| 1434 | - } | |
| 1435 | - | |
| 1436 | - map.put("date", date); | |
| 1437 | - map.put("date2", date); | |
| 1438 | - map.put("zs", "js"); | |
| 1439 | - for(Map<String, String> tempMap : gsList){ | |
| 1440 | - map.put("gsdm", tempMap.get("gsdm").toString()); | |
| 1441 | - map.put("fgsdm", tempMap.get("fgsdm").toString()); | |
| 1442 | - List<Map<String, Object>> countByList = reportService.countByBusList(map); | |
| 1443 | - for(Map<String, Object> m : countByList){ | |
| 1444 | - if(!m.containsKey("xlName") || m.get("xlName")==null | |
| 1445 | - || m.get("xlName").toString().equals("合计")) | |
| 1446 | - continue; | |
| 1447 | - CalcBusMileage c = new CalcBusMileage(); | |
| 1448 | - c.setDate(sdf.parse(date)); | |
| 1449 | - c.setDateStr(date); | |
| 1450 | - c.setGsdm(map.get("gsdm").toString()); | |
| 1451 | - c.setGsName(tempMap.get("gsName").toString()); | |
| 1452 | - c.setFgsdm(map.get("fgsdm").toString()); | |
| 1453 | - c.setFgsName(m.get("fgs").toString()); | |
| 1454 | - c.setXl(xlmap.get(m.get("xlName").toString()).toString()); | |
| 1455 | - c.setXlName(m.get("xlName").toString()); | |
| 1456 | - c.setNbbm(m.get("nbbm").toString()); | |
| 1457 | - c.setjGh(m.get("jGh").toString()); | |
| 1458 | - c.setjName(m.get("jName").toString()); | |
| 1459 | - c.setsGh(m.get("sGh").toString()); | |
| 1460 | - c.setsName(m.get("sName").toString()); | |
| 1461 | - c.setZlc(Double.valueOf(m.get("zlc").toString())); | |
| 1462 | - c.setJhnlc(Double.valueOf(m.get("jhnlc").toString())); | |
| 1463 | - c.setJhwlc(Double.valueOf(m.get("jhwlc").toString())); | |
| 1464 | - c.setJhnjcclc(Double.valueOf(m.get("jhnjcclc").toString())); | |
| 1465 | - c.setJhwjcclc(Double.valueOf(m.get("jhwjcclc").toString())); | |
| 1466 | - c.setJhwjcclcz(Double.valueOf(m.get("jhwjcclc_z").toString())); | |
| 1467 | - c.setKfks(Double.valueOf(m.get("kfks").toString())); | |
| 1468 | - c.setZrwjcclc(Double.valueOf(m.get("zrwjcclc").toString())); | |
| 1469 | - c.setZrwjcclc1(Double.valueOf(m.get("zrwjcclc1").toString())); | |
| 1470 | - c.setZrwjcclc2(Double.valueOf(m.get("zrwjcclc2").toString())); | |
| 1471 | - c.setZrwjcclcqt(Double.valueOf(m.get("zrwjcclcqt").toString())); | |
| 1472 | - c.setLjyy(Double.valueOf(m.get("ljyy").toString())); | |
| 1473 | - c.setLjjcc(Double.valueOf(m.get("ljjcc").toString())); | |
| 1474 | - if(m.containsKey("ljkfks") && m.get("ljkfks") != null){ | |
| 1475 | - c.setLjkfks(Double.valueOf(m.get("ljkfks").toString())); | |
| 1476 | - } else { | |
| 1477 | - c.setLjkfks(0d); | |
| 1478 | - } | |
| 1479 | - c.setDhl(Double.valueOf(m.get("dhl").toString())); | |
| 1480 | - c.setCdl(Double.valueOf(m.get("cdl").toString())); | |
| 1481 | - c.setYhl(Double.valueOf(m.get("yhl").toString())); | |
| 1482 | - c.setJzl(Double.valueOf(m.get("jzl").toString())); | |
| 1483 | - c.setHyl(Double.valueOf(m.get("hyl").toString())); | |
| 1484 | - c.setJhzlc(Double.valueOf(m.get("jhzlc").toString())); | |
| 1485 | - c.setCreateDate(dateTime); | |
| 1486 | - list.add(c); | |
| 1487 | - } | |
| 1488 | - } | |
| 1489 | - | |
| 1490 | - if(line.length() > 0){ | |
| 1491 | - calcBusMileageRepository.deleteByDateAndLine(date, line); | |
| 1492 | - } else { | |
| 1493 | - calcBusMileageRepository.deleteByDate(date); | |
| 1494 | - } | |
| 1495 | - calcBusMileageRepository.saveAll(list); | |
| 1496 | - | |
| 1497 | - resMap.put("status", ResponseCode.SUCCESS); | |
| 1498 | - } catch (Exception e) { | |
| 1499 | - // TODO: handle exception | |
| 1500 | - resMap.put("status", ResponseCode.ERROR); | |
| 1501 | - logger.error("save erro.", e); | |
| 1502 | - e.printStackTrace(); | |
| 1503 | - } | |
| 1504 | - return resMap; | |
| 1505 | - } | |
| 1506 | - | |
| 1507 | - @Override | |
| 1508 | - public List<Map<String, Object>> getLineMileage(String gsdm, String fgsdm, String line, | |
| 1509 | - String date, String date2, String xlName, String zt, String by, String type) { | |
| 1510 | - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); | |
| 1511 | - List<CalcLineMileage> resList = new ArrayList<CalcLineMileage>(); | |
| 1512 | - List<CalcLineMileage> list = new ArrayList<CalcLineMileage>(); | |
| 1513 | - List<CalcLineMileage> calcs = new ArrayList<CalcLineMileage>(); | |
| 1514 | - List<String> keyList = new ArrayList<String>(); | |
| 1515 | - Map<String, List<CalcLineMileage>> keyMap = new HashMap<String, List<CalcLineMileage>>(); | |
| 1516 | - | |
| 1517 | - if(line == null || line.trim().length() == 0){ | |
| 1518 | - list = calcLineMileageRepository.selectByDateAndLineTj(line, date, date2, gsdm, fgsdm); | |
| 1519 | - } else { | |
| 1520 | - list = calcLineMileageRepository.selectByDateAndLineTj2(line, date, date2); | |
| 1521 | - } | |
| 1522 | - | |
| 1523 | - for(CalcLineMileage c : list){ | |
| 1524 | - String key = c.getXlName(); | |
| 1525 | - if(!keyMap.containsKey(key)){ | |
| 1526 | - keyMap.put(key, new ArrayList<CalcLineMileage>()); | |
| 1527 | - keyList.add(key); | |
| 1528 | - } | |
| 1529 | - keyMap.get(key).add(c); | |
| 1530 | - } | |
| 1531 | - | |
| 1532 | - for(String key : keyList){ | |
| 1533 | - CalcLineMileage c1 = keyMap.get(key).get(0); | |
| 1534 | - for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 1535 | - CalcLineMileage c2 = keyMap.get(key).get(i); | |
| 1536 | - c1 = addLineMileage(c1, c2); | |
| 1537 | - } | |
| 1538 | - calcs.add(c1); | |
| 1539 | - } | |
| 1540 | - | |
| 1541 | - CalcLineMileage temp = new CalcLineMileage(); | |
| 1542 | - temp.setXlName("合计"); | |
| 1543 | - for(CalcLineMileage c : calcs){ | |
| 1544 | - temp = addLineMileage(temp, c); | |
| 1545 | - resList.add(c); | |
| 1546 | - } | |
| 1547 | - if(resList.size() > 0) | |
| 1548 | - resList.add(temp); | |
| 1549 | - | |
| 1550 | - for(CalcLineMileage c : resList){ | |
| 1551 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 1552 | - if(c.getXlName().equals("合计")){ | |
| 1553 | - m.put("gsdm", ""); | |
| 1554 | - m.put("gs", ""); | |
| 1555 | - m.put("fgsdm", ""); | |
| 1556 | - m.put("fgs", ""); | |
| 1557 | - } else { | |
| 1558 | - m.put("gsdm", c.getGsdm()); | |
| 1559 | - m.put("gs", c.getGsName()); | |
| 1560 | - m.put("fgsdm", c.getFgsdm()); | |
| 1561 | - m.put("fgs", c.getFgsName()); | |
| 1562 | - } | |
| 1563 | - m.put("xlName", c.getXlName()); | |
| 1564 | - m.put("jhzlc", c.getJhzlc()); | |
| 1565 | - m.put("jhlc", c.getJhlc()); | |
| 1566 | - m.put("jcclc", c.getJcclc()); | |
| 1567 | - m.put("sjzgl", c.getSjzgl()); | |
| 1568 | - m.put("jhnlc", c.getJhnlc()); | |
| 1569 | - m.put("jhwlc", c.getJhwlc()); | |
| 1570 | - m.put("jhnjcclc", c.getJhnjcclc()); | |
| 1571 | - m.put("jhwjcclc", c.getJhwjcclc()); | |
| 1572 | - m.put("jhwjcclc_z", c.getJhwjcclcz()); | |
| 1573 | - m.put("zrwjcclc", c.getZrwjcclc()); | |
| 1574 | - m.put("zrwjcclc1", c.getZrwjcclc1()); | |
| 1575 | - m.put("zrwjcclc2", c.getZrwjcclc2()); | |
| 1576 | - m.put("zrwjcclcqt", c.getZrwjcclcqt()); | |
| 1577 | - m.put("kfks", c.getKfks()); | |
| 1578 | - m.put("lbss", c.getLbss()); | |
| 1579 | - m.put("ssgl_lz", c.getSsglLz()); | |
| 1580 | - m.put("ssgl_dm", c.getSsglDm()); | |
| 1581 | - m.put("ssgl_gz", c.getSsglGz()); | |
| 1582 | - m.put("ssgl_jf", c.getSsglJf()); | |
| 1583 | - m.put("ssgl_zs", c.getSsglZs()); | |
| 1584 | - m.put("ssgl_qr", c.getSsglQr()); | |
| 1585 | - m.put("ssgl_qc", c.getSsglQc()); | |
| 1586 | - m.put("ssgl_kx", c.getSsglKx()); | |
| 1587 | - m.put("ssgl_qh", c.getSsglQh()); | |
| 1588 | - m.put("ssgl_yw", c.getSsglYw()); | |
| 1589 | - m.put("ssgl_other", c.getSsglOther()); | |
| 1590 | - m.put("ljyy", c.getLjyy()); | |
| 1591 | - m.put("ljjcc", c.getLjjcc()); | |
| 1592 | - m.put("ljkfks", c.getLjkfks()); | |
| 1593 | - lMap.add(m); | |
| 1594 | - } | |
| 1595 | - | |
| 1596 | - if(type.equals("export")){ | |
| 1597 | - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 1598 | - sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 1599 | - List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 1600 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 1601 | - m.put("date", date); | |
| 1602 | - m.put("date1", date2); | |
| 1603 | -// String by=map.get("by").toString(); | |
| 1604 | - String xls=""; | |
| 1605 | - if(by.equals("sj")){ | |
| 1606 | - xls="countByLine.xls"; | |
| 1607 | - }else{ | |
| 1608 | - xls="countByLines.xls"; | |
| 1609 | - } | |
| 1610 | - ReportUtils ee = new ReportUtils(); | |
| 1611 | - try { | |
| 1612 | - String dateTime = ""; | |
| 1613 | - if(date.equals(date2)){ | |
| 1614 | - dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 1615 | - } else { | |
| 1616 | - dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 1617 | - +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 1618 | - } | |
| 1619 | - listI.add(lMap.iterator()); | |
| 1620 | - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 1621 | - ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls, | |
| 1622 | - path + "export/"+dateTime+"-"+xlName+"-线路公里统计表.xls"); | |
| 1623 | - } catch (Exception e) { | |
| 1624 | - // TODO: handle exception | |
| 1625 | - e.printStackTrace(); | |
| 1626 | - } | |
| 1627 | - } | |
| 1628 | - | |
| 1629 | - return lMap; | |
| 1630 | - } | |
| 1631 | - | |
| 1632 | - @Override | |
| 1633 | - public List<Map<String, Object>> getBusMileage(String line, String date, | |
| 1634 | - String date2, String xlName, String zt, String by, String type) { | |
| 1635 | - List<CalcBusMileage> resList = new ArrayList<CalcBusMileage>(); | |
| 1636 | - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); | |
| 1637 | - List<CalcBusMileage> list = calcBusMileageRepository.selectByDateAndLineTj2(line, date, date2); | |
| 1638 | - | |
| 1639 | - if(zt.equals("zbh")){ | |
| 1640 | - List<String> keyList = new ArrayList<String>(); | |
| 1641 | - Map<String, List<CalcBusMileage>> keyMap = new HashMap<>(); | |
| 1642 | - for(CalcBusMileage c : list){ | |
| 1643 | - String nbbm = c.getNbbm(); | |
| 1644 | - if(!keyMap.containsKey(nbbm)){ | |
| 1645 | - keyMap.put(nbbm, new ArrayList<CalcBusMileage>()); | |
| 1646 | - keyList.add(nbbm); | |
| 1647 | - } | |
| 1648 | - keyMap.get(nbbm).add(c); | |
| 1649 | - } | |
| 1650 | - for(String key : keyList){ | |
| 1651 | - CalcBusMileage c1 = keyMap.get(key).get(0); | |
| 1652 | - for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 1653 | - CalcBusMileage c2 = keyMap.get(key).get(i); | |
| 1654 | - c1.setZlc(Arith.add(c1.getZlc(), c2.getZlc())); | |
| 1655 | - c1.setJhnlc(Arith.add(c1.getJhnlc(), c2.getJhnlc())); | |
| 1656 | - c1.setJhwlc(Arith.add(c1.getJhwlc(), c2.getJhwlc())); | |
| 1657 | - c1.setJhnjcclc(Arith.add(c1.getJhnjcclc(), c2.getJhnjcclc())); | |
| 1658 | - c1.setJhwjcclc(Arith.add(c1.getJhwjcclc(), c2.getJhwjcclc())); | |
| 1659 | - c1.setKfks(Arith.add(c1.getKfks(), c2.getKfks())); | |
| 1660 | - c1.setZrwjcclc(Arith.add(c1.getZrwjcclc(), c2.getZrwjcclc())); | |
| 1661 | - c1.setZrwjcclc1(Arith.add(c1.getZrwjcclc1(), c2.getZrwjcclc1())); | |
| 1662 | - c1.setZrwjcclc2(Arith.add(c1.getZrwjcclc2(), c2.getZrwjcclc2())); | |
| 1663 | - c1.setZrwjcclcqt(Arith.add(c1.getZrwjcclcqt(), c2.getZrwjcclcqt())); | |
| 1664 | - c1.setLjyy(Arith.add(c1.getLjyy(), c2.getLjyy())); | |
| 1665 | - c1.setLjjcc(Arith.add(c1.getLjjcc(), c2.getLjjcc())); | |
| 1666 | - c1.setLjkfks(Arith.add(c1.getLjkfks(), c2.getLjkfks())); | |
| 1667 | - c1.setDhl(Arith.add(c1.getDhl(), c2.getDhl())); | |
| 1668 | - c1.setCdl(Arith.add(c1.getCdl(), c2.getCdl())); | |
| 1669 | - c1.setYhl(Arith.add(c1.getYhl(), c2.getYhl())); | |
| 1670 | - c1.setJzl(Arith.add(c1.getJzl(), c2.getJzl())); | |
| 1671 | - c1.setHyl(Arith.add(c1.getHyl(), c2.getHyl())); | |
| 1672 | - c1.setJhzlc(Arith.add(c1.getJhzlc(), c2.getJhzlc())); | |
| 1673 | - } | |
| 1674 | - resList.add(c1); | |
| 1675 | - } | |
| 1676 | - } else { | |
| 1677 | - List<String> keyList = new ArrayList<String>(); | |
| 1678 | - Map<String, List<CalcBusMileage>> keyMap = new HashMap<>(); | |
| 1679 | - for(CalcBusMileage c : list){ | |
| 1680 | - String key = c.getNbbm() + c.getjGh() + c.getjName() + c.getsGh() + c.getsName(); | |
| 1681 | - if(!keyMap.containsKey(key)){ | |
| 1682 | - keyMap.put(key, new ArrayList<CalcBusMileage>()); | |
| 1683 | - keyList.add(key); | |
| 1684 | - } | |
| 1685 | - keyMap.get(key).add(c); | |
| 1686 | - } | |
| 1687 | - for(String key : keyList){ | |
| 1688 | - CalcBusMileage c1 = keyMap.get(key).get(0); | |
| 1689 | - for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 1690 | - CalcBusMileage c2 = keyMap.get(key).get(i); | |
| 1691 | - c1.setZlc(Arith.add(c1.getZlc(), c2.getZlc())); | |
| 1692 | - c1.setJhnlc(Arith.add(c1.getJhnlc(), c2.getJhnlc())); | |
| 1693 | - c1.setJhwlc(Arith.add(c1.getJhwlc(), c2.getJhwlc())); | |
| 1694 | - c1.setJhnjcclc(Arith.add(c1.getJhnjcclc(), c2.getJhnjcclc())); | |
| 1695 | - c1.setJhwjcclc(Arith.add(c1.getJhwjcclc(), c2.getJhwjcclc())); | |
| 1696 | - c1.setKfks(Arith.add(c1.getKfks(), c2.getKfks())); | |
| 1697 | - c1.setZrwjcclc(Arith.add(c1.getZrwjcclc(), c2.getZrwjcclc())); | |
| 1698 | - c1.setZrwjcclc1(Arith.add(c1.getZrwjcclc1(), c2.getZrwjcclc1())); | |
| 1699 | - c1.setZrwjcclc2(Arith.add(c1.getZrwjcclc2(), c2.getZrwjcclc2())); | |
| 1700 | - c1.setZrwjcclcqt(Arith.add(c1.getZrwjcclcqt(), c2.getZrwjcclcqt())); | |
| 1701 | - c1.setLjyy(Arith.add(c1.getLjyy(), c2.getLjyy())); | |
| 1702 | - c1.setLjjcc(Arith.add(c1.getLjjcc(), c2.getLjjcc())); | |
| 1703 | - c1.setLjkfks(Arith.add(c1.getLjkfks(), c2.getLjkfks())); | |
| 1704 | - c1.setDhl(Arith.add(c1.getDhl(), c2.getDhl())); | |
| 1705 | - c1.setCdl(Arith.add(c1.getCdl(), c2.getCdl())); | |
| 1706 | - c1.setYhl(Arith.add(c1.getYhl(), c2.getYhl())); | |
| 1707 | - c1.setJzl(Arith.add(c1.getJzl(), c2.getJzl())); | |
| 1708 | - c1.setHyl(Arith.add(c1.getHyl(), c2.getHyl())); | |
| 1709 | - c1.setJhzlc(Arith.add(c1.getJhzlc(), c2.getJhzlc())); | |
| 1710 | - } | |
| 1711 | - resList.add(c1); | |
| 1712 | - } | |
| 1713 | - } | |
| 1714 | - | |
| 1715 | - for(CalcBusMileage c : resList){ | |
| 1716 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 1717 | - if(date.equals(date2)){ | |
| 1718 | - m.put("rq", date); | |
| 1719 | - } else { | |
| 1720 | - m.put("rq", date + "至" + date2); | |
| 1721 | - } | |
| 1722 | - m.put("fgs", c.getFgsName()); | |
| 1723 | - m.put("xlName", c.getXlName()); | |
| 1724 | - m.put("nbbm", c.getNbbm()); | |
| 1725 | - m.put("jGh", c.getjGh()); | |
| 1726 | - m.put("jName", c.getjName()); | |
| 1727 | - m.put("sGh", c.getsGh()); | |
| 1728 | - m.put("sName", c.getsName()); | |
| 1729 | - m.put("zlc", c.getZlc()); | |
| 1730 | - m.put("jhnlc", c.getJhnlc()); | |
| 1731 | - m.put("jhwlc", c.getJhwlc()); | |
| 1732 | - m.put("jhnjcclc", c.getJhnjcclc()); | |
| 1733 | - m.put("jhwjcclc", c.getJhwjcclc()); | |
| 1734 | - m.put("jhwjcclc_z", c.getJhwjcclcz()); | |
| 1735 | - m.put("kfks", c.getKfks()); | |
| 1736 | - m.put("zrwjcclc", c.getZrwjcclc()); | |
| 1737 | - m.put("zrwjcclc1", c.getZrwjcclc1()); | |
| 1738 | - m.put("zrwjcclc2", c.getZrwjcclc2()); | |
| 1739 | - m.put("zrwjcclcqt", c.getZrwjcclcqt()); | |
| 1740 | - m.put("ljyy", c.getLjyy()); | |
| 1741 | - m.put("ljjcc", c.getLjjcc()); | |
| 1742 | - m.put("ljkfks", c.getLjkfks()); | |
| 1743 | - m.put("dhl", c.getDhl()); | |
| 1744 | - m.put("cdl", c.getCdl()); | |
| 1745 | - m.put("yhl", c.getYhl()); | |
| 1746 | - m.put("jzl", c.getJzl()); | |
| 1747 | - m.put("hyl", c.getYhl()); | |
| 1748 | - m.put("jhzlc", c.getJhzlc()); | |
| 1749 | - lMap.add(m); | |
| 1750 | - } | |
| 1751 | - | |
| 1752 | - if(type.equals("export")){ | |
| 1753 | - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 1754 | - sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 1755 | - List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 1756 | - Map<String, Object> m = new HashMap<String, Object>(); | |
| 1757 | - m.put("date", date); | |
| 1758 | - m.put("date1", date2); | |
| 1759 | - String xls=""; | |
| 1760 | -// String by=map.get("by").toString(); | |
| 1761 | - | |
| 1762 | - if(zt.equals("zbh")){ | |
| 1763 | - if(by.equals("sj")){ | |
| 1764 | - xls="countByBus1.xls"; | |
| 1765 | - }else{ | |
| 1766 | - xls="countByBus1s.xls"; | |
| 1767 | - } | |
| 1768 | - }else{ | |
| 1769 | - | |
| 1770 | - if(by.equals("sj")){ | |
| 1771 | - xls="countByBus2.xls"; | |
| 1772 | - }else{ | |
| 1773 | - xls="countByBus2s.xls"; | |
| 1774 | - } | |
| 1775 | - } | |
| 1776 | - ReportUtils ee = new ReportUtils(); | |
| 1777 | - try { | |
| 1778 | - String dateTime = ""; | |
| 1779 | - if(date.equals(date2)){ | |
| 1780 | - dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 1781 | - } else { | |
| 1782 | - dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 1783 | - +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 1784 | - } | |
| 1785 | - listI.add(lMap.iterator()); | |
| 1786 | - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 1787 | - ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls, | |
| 1788 | - path + "export/"+dateTime+"-"+xlName+"-路单数据统计表.xls"); | |
| 1789 | - } catch (Exception e) { | |
| 1790 | - // TODO: handle exception | |
| 1791 | - e.printStackTrace(); | |
| 1792 | - } | |
| 1793 | - } | |
| 1794 | - | |
| 1795 | - return lMap; | |
| 1796 | - } | |
| 1797 | - | |
| 1798 | - public CalcLineMileage addLineMileage(CalcLineMileage temp, CalcLineMileage c){ | |
| 1799 | - temp.setJhzlc(Arith.add(temp.getJhzlc()!=null?temp.getJhzlc():0, c.getJhzlc())); | |
| 1800 | - temp.setJhlc(Arith.add(temp.getJhlc()!=null?temp.getJhlc():0, c.getJhlc())); | |
| 1801 | - temp.setJcclc(Arith.add(temp.getJcclc()!=null?temp.getJcclc():0, c.getJcclc())); | |
| 1802 | - temp.setSjzgl(Arith.add(temp.getSjzgl()!=null?temp.getSjzgl():0, c.getSjzgl())); | |
| 1803 | - temp.setJhnlc(Arith.add(temp.getJhnlc()!=null?temp.getJhnlc():0, c.getJhnlc())); | |
| 1804 | - temp.setJhwlc(Arith.add(temp.getJhwlc()!=null?temp.getJhwlc():0, c.getJhwlc())); | |
| 1805 | - temp.setJhnjcclc(Arith.add(temp.getJhnjcclc()!=null?temp.getJhnjcclc():0, c.getJhnjcclc())); | |
| 1806 | - temp.setJhwjcclc(Arith.add(temp.getJhwjcclc()!=null?temp.getJhwjcclc():0, c.getJhwjcclc())); | |
| 1807 | - temp.setJhwjcclcz(Arith.add(temp.getJhwjcclcz()!=null?temp.getJhwjcclcz():0, c.getJhwjcclcz())); | |
| 1808 | - temp.setZrwjcclc(Arith.add(temp.getZrwjcclc()!=null?temp.getZrwjcclc():0, c.getZrwjcclc())); | |
| 1809 | - temp.setZrwjcclc1(Arith.add(temp.getZrwjcclc1()!=null?temp.getZrwjcclc1():0, c.getZrwjcclc1())); | |
| 1810 | - temp.setZrwjcclc2(Arith.add(temp.getZrwjcclc2()!=null?temp.getZrwjcclc2():0, c.getZrwjcclc2())); | |
| 1811 | - temp.setZrwjcclcqt(Arith.add(temp.getZrwjcclcqt()!=null?temp.getZrwjcclcqt():0, c.getZrwjcclcqt())); | |
| 1812 | - temp.setKfks(Arith.add(temp.getKfks()!=null?temp.getKfks():0, c.getKfks())); | |
| 1813 | - temp.setLbss(Arith.add(temp.getLbss()!=null?temp.getLbss():0, c.getLbss())); | |
| 1814 | - temp.setSsglLz(Arith.add(temp.getSsglLz()!=null?temp.getSsglLz():0, c.getSsglLz())); | |
| 1815 | - temp.setSsglDm(Arith.add(temp.getSsglDm()!=null?temp.getSsglDm():0, c.getSsglDm())); | |
| 1816 | - temp.setSsglGz(Arith.add(temp.getSsglGz()!=null?temp.getSsglGz():0, c.getSsglGz())); | |
| 1817 | - temp.setSsglJf(Arith.add(temp.getSsglJf()!=null?temp.getSsglJf():0, c.getSsglJf())); | |
| 1818 | - temp.setSsglZs(Arith.add(temp.getSsglZs()!=null?temp.getSsglZs():0, c.getSsglZs())); | |
| 1819 | - temp.setSsglQr(Arith.add(temp.getSsglQr()!=null?temp.getSsglQr():0, c.getSsglQr())); | |
| 1820 | - temp.setSsglQc(Arith.add(temp.getSsglQc()!=null?temp.getSsglQc():0, c.getSsglQc())); | |
| 1821 | - temp.setSsglKx(Arith.add(temp.getSsglKx()!=null?temp.getSsglKx():0, c.getSsglKx())); | |
| 1822 | - temp.setSsglQh(Arith.add(temp.getSsglQh()!=null?temp.getSsglQh():0, c.getSsglQh())); | |
| 1823 | - temp.setSsglYw(Arith.add(temp.getSsglYw()!=null?temp.getSsglYw():0, c.getSsglYw())); | |
| 1824 | - temp.setSsglOther(Arith.add(temp.getSsglOther()!=null?temp.getSsglOther():0, c.getSsglOther())); | |
| 1825 | - temp.setLjyy(Arith.add(temp.getLjyy()!=null?temp.getLjyy():0, c.getLjyy())); | |
| 1826 | - temp.setLjjcc(Arith.add(temp.getLjjcc()!=null?temp.getLjjcc():0, c.getLjjcc())); | |
| 1827 | - temp.setLjkfks(Arith.add(temp.getLjkfks()!=null?temp.getLjkfks():0, c.getLjkfks())); | |
| 1828 | - return temp; | |
| 1829 | - } | |
| 1830 | - | |
| 1831 | - @Override | |
| 1832 | - public List<List<String>> calcDetailMonthly(Map<String, Object> map) { | |
| 1833 | - List<Integer> destroy= new ArrayList<>(); | |
| 1834 | - String destroyStr = ""; | |
| 1835 | - if(map.get("destroy")!=null){ | |
| 1836 | - destroyStr = map.get("destroy").toString().trim(); | |
| 1837 | - String[] destroys = destroyStr.split(","); | |
| 1838 | - for (int i = 0; i < destroys.length; i++){ | |
| 1839 | - destroy.add(Integer.parseInt(destroys[i])); | |
| 1840 | - } | |
| 1841 | - } | |
| 1842 | - List<String> gsdm= new ArrayList<>(); | |
| 1843 | - String gsdmStr = ""; | |
| 1844 | - if(map.get("gsdm")!=null){ | |
| 1845 | - gsdmStr = map.get("gsdm").toString().trim(); | |
| 1846 | - String[] gsdms = gsdmStr.split(","); | |
| 1847 | - for (int i = 0; i < gsdms.length; i++){ | |
| 1848 | - gsdm.add(gsdms[i]); | |
| 1849 | - } | |
| 1850 | - } | |
| 1851 | - List<String> fgsdm= new ArrayList<>(); | |
| 1852 | - String fgsdmStr = ""; | |
| 1853 | - if(map.get("fgsdm")!=null){ | |
| 1854 | - fgsdmStr = map.get("fgsdm").toString().trim(); | |
| 1855 | - String[] fgsdms = fgsdmStr.split(","); | |
| 1856 | - for (int i = 0; i < fgsdms.length; i++){ | |
| 1857 | - fgsdm.add(fgsdms[i]); | |
| 1858 | - } | |
| 1859 | - } | |
| 1860 | -// String line= null; | |
| 1861 | - List<String> line= new ArrayList<>(); | |
| 1862 | - String lineStr = ""; | |
| 1863 | - if(map.get("lineCode")!=null){ | |
| 1864 | - lineStr = map.get("lineCode").toString().trim(); | |
| 1865 | - String[] lines = lineStr.split(","); | |
| 1866 | - for (int i = 0; i < lines.length; i++){ | |
| 1867 | - line.add(lines[i]); | |
| 1868 | - } | |
| 1869 | - } | |
| 1870 | - String startDate=""; | |
| 1871 | - if(map.get("startDate")!=null){ | |
| 1872 | - startDate=map.get("startDate").toString().trim(); | |
| 1873 | - } | |
| 1874 | - String endDate=""; | |
| 1875 | - if(map.get("endDate")!=null){ | |
| 1876 | - endDate=map.get("endDate").toString().trim(); | |
| 1877 | - } | |
| 1878 | - String type=""; | |
| 1879 | - if(map.get("type")!=null){ | |
| 1880 | - type=map.get("type").toString().trim(); | |
| 1881 | - } | |
| 1882 | - String statisticalObj=""; | |
| 1883 | - if(map.get("statisticalObj")!=null){ | |
| 1884 | - statisticalObj=map.get("statisticalObj").toString().trim(); | |
| 1885 | - } | |
| 1886 | - String itemDetails=""; | |
| 1887 | - if(map.get("itemDetails")!=null){ | |
| 1888 | - itemDetails=map.get("itemDetails").toString().trim(); | |
| 1889 | - } | |
| 1890 | -// Boolean item=false; | |
| 1891 | - /*String item=""; | |
| 1892 | - if(map.get("item")!=null){ | |
| 1893 | - if("dh".equals(map.get("item").toString().trim())) | |
| 1894 | - item=" where c.sfdc = 1"; | |
| 1895 | -// item=false; | |
| 1896 | - else if ("dh".equals(map.get("item").toString().trim())) | |
| 1897 | - item=" where c.sfdc = 0"; | |
| 1898 | -// item=true; | |
| 1899 | - else | |
| 1900 | - item=""; | |
| 1901 | - }*/ | |
| 1902 | - String timeType=map.get("timeType").toString().trim(); | |
| 1903 | - | |
| 1904 | - List<List<String>> resList = new ArrayList<>(); | |
| 1905 | - List<CalcWaybill> list = new ArrayList<CalcWaybill>(); | |
| 1906 | -// List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | |
| 1907 | - // 右边可变天数 | |
| 1908 | - TreeMap<String, List<CalcWaybillDetail>> keyMapList = new TreeMap<String, List<CalcWaybillDetail>>(); | |
| 1909 | - // 左边固定列 | |
| 1910 | - TreeMap<String, CalcWaybillDetail> keyMap = new TreeMap<String, CalcWaybillDetail>(); | |
| 1911 | - | |
| 1912 | - List<Map<String, CalcWaybillDetail>> dayList = new ArrayList<>(); | |
| 1913 | - int day = 0, day2 = 0; | |
| 1914 | - if("m".equals(timeType)){ | |
| 1915 | - day = Integer.parseInt(startDate.substring(8,10)); | |
| 1916 | - day2 = Integer.parseInt(endDate.substring(8,10)); | |
| 1917 | - for(int i=day; i<=day2; i++){ | |
| 1918 | - Map<String, CalcWaybillDetail> daym = new HashMap<>(); | |
| 1919 | - daym.put(startDate.substring(0,7)+"-"+(i<10?"0"+i:i),this.initCalcWaybillDetail()); | |
| 1920 | - dayList.add(daym); | |
| 1921 | - } | |
| 1922 | - } else if("y".equals(timeType)){ | |
| 1923 | - day = Integer.parseInt(startDate.substring(5,7)); | |
| 1924 | - day2 = Integer.parseInt(endDate.substring(5,7)); | |
| 1925 | - for(int i=day; i<=day2; i++){ | |
| 1926 | - Map<String, CalcWaybillDetail> daym = new HashMap<>(); | |
| 1927 | - daym.put(startDate.substring(0,5)+(i<10?"0"+i:i),this.initCalcWaybillDetail()); | |
| 1928 | - dayList.add(daym); | |
| 1929 | - } | |
| 1930 | - startDate += "-01"; | |
| 1931 | - endDate += "-31"; | |
| 1932 | - } | |
| 1933 | - | |
| 1934 | - int flag = 0; | |
| 1935 | - if("jsy".equals(statisticalObj)){ | |
| 1936 | - flag = 1; | |
| 1937 | - list = calcRepository.scheduleByJsy2(line, startDate, endDate, gsdm, fgsdm, destroy); | |
| 1938 | - } else if("cwy".equals(statisticalObj)){ | |
| 1939 | - flag = 2; | |
| 1940 | - list = calcRepository.scheduleBySpy2(line, startDate, endDate, gsdm, fgsdm, destroy); | |
| 1941 | - } else if("cl".equals(statisticalObj)){ | |
| 1942 | - flag = 3; | |
| 1943 | - list = calcRepository.scheduleByZbh2(line, startDate, endDate, gsdm, fgsdm, destroy); | |
| 1944 | - } else if("xl".equals(statisticalObj)){ | |
| 1945 | - flag = 4; | |
| 1946 | - list = calcRepository.scheduleByDateAndLineTjPx(line,startDate,endDate,gsdm,fgsdm, destroy); | |
| 1947 | - /*if(line.equals("")){ | |
| 1948 | - //查询所有线路 | |
| 1949 | - }else{ | |
| 1950 | - //查询单条线路 | |
| 1951 | - list = calcRepository.scheduleByDateAndLineTjPx2(line,startDate,endDate); | |
| 1952 | - }*/ | |
| 1953 | - } | |
| 1954 | - | |
| 1955 | - | |
| 1956 | - // List类转换 | |
| 1957 | - final List<CalcWaybillDetail> listNew = JSONArray.parseArray(JSON.toJSONString(list), CalcWaybillDetail.class); | |
| 1958 | - | |
| 1959 | - if(listNew.size() <= 0){ | |
| 1960 | - return resList; | |
| 1961 | - } | |
| 1962 | - Map<String,Ylb> ylbMap = new HashMap<>(); | |
| 1963 | - Map<String,Ylb> ylbCLMap = new HashMap<>(); | |
| 1964 | - Map<String,Dlb> dlbMap = new HashMap<>(); | |
| 1965 | - Map<String,Dlb> dlbCLMap = new HashMap<>(); | |
| 1966 | - | |
| 1967 | - final SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); | |
| 1968 | - | |
| 1969 | - // 只有在选择 车辆,驾驶员查询时才有 | |
| 1970 | - // 把油量和电量数据查出来,封装成Map,计算时直接取 | |
| 1971 | - if(flag != 2 ){ | |
| 1972 | - String linesql=""; | |
| 1973 | - if(!lineStr.equals("")){ | |
| 1974 | - linesql +=" and xlbm in("+lineStr+") "; | |
| 1975 | - } | |
| 1976 | - if(!gsdmStr.equals("")){ | |
| 1977 | - linesql +=" and ssgsdm in("+gsdmStr+") "; | |
| 1978 | - } | |
| 1979 | - if(!fgsdmStr.equals("")){ | |
| 1980 | - linesql +=" and fgsdm in("+fgsdmStr+") "; | |
| 1981 | - } | |
| 1982 | - String ylsql="SELECT * FROM bsth_c_ylb" | |
| 1983 | -// String ylsql="SELECT id,xlbm,nbbm,jsy,jzl,czyl,jzyl,yh,sh,fgsdm FROM bsth_c_ylb" | |
| 1984 | - + " WHERE rq >= '"+startDate+"' and rq <= '"+endDate+"' " | |
| 1985 | - + linesql; | |
| 1986 | - String dlSal= " SELECT * FROM bsth_c_dlb" | |
| 1987 | -// String dlSal= " SELECT id,xlbm,nbbm,jsy,cdl,czcd,jzcd,hd,sh,fgsdm FROM bsth_c_dlb" | |
| 1988 | - + " WHERE rq >= '"+startDate+"' and rq <= '"+endDate+"' " | |
| 1989 | - + linesql; | |
| 1990 | - List<Ylb> ylbList = jdbcTemplate.query(ylsql, new RowMapper<Ylb>() { | |
| 1991 | - @Override | |
| 1992 | - public Ylb mapRow(ResultSet arg0, int arg1) throws SQLException{ | |
| 1993 | - Ylb ylb = new Ylb(); | |
| 1994 | - Date rq = null; | |
| 1995 | - try{ | |
| 1996 | - rq = ft.parse(arg0.getString("rq")); | |
| 1997 | - } catch (ParseException e){ | |
| 1998 | - logger.error(e.toString(),e); | |
| 1999 | - } | |
| 2000 | -// Date rq = ft.parse(arg0.getString("rq")); | |
| 2001 | - ylb.setXlbm(arg0.getString("xlbm")); | |
| 2002 | - ylb.setJsy(arg0.getString("jsy")); | |
| 2003 | - ylb.setJname(arg0.getString("jname")); | |
| 2004 | - ylb.setNbbm(arg0.getString("nbbm")); | |
| 2005 | - ylb.setZlc(Double.parseDouble(arg0.getString("zlc"))); | |
| 2006 | - ylb.setJzl(Double.parseDouble(arg0.getString("jzl"))); | |
| 2007 | - ylb.setJzyl(Double.parseDouble(arg0.getString("jzyl"))); | |
| 2008 | - ylb.setCzyl(Double.parseDouble(arg0.getString("czyl"))); | |
| 2009 | - ylb.setYh(Double.parseDouble(arg0.getString("yh"))); | |
| 2010 | - ylb.setSh(Double.parseDouble(arg0.getString("sh"))); | |
| 2011 | - ylb.setRylx(arg0.getString("rylx")); | |
| 2012 | - ylb.setFgsdm(arg0.getString("fgsdm")); | |
| 2013 | - ylb.setRq(rq); | |
| 2014 | - return ylb; | |
| 2015 | - } | |
| 2016 | - }); | |
| 2017 | - List<Dlb> dlbList = jdbcTemplate.query(dlSal, new RowMapper<Dlb>() { | |
| 2018 | - @Override | |
| 2019 | - public Dlb mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 2020 | - Dlb dlb = new Dlb();Date rq = null; | |
| 2021 | - try{ | |
| 2022 | - rq = ft.parse(arg0.getString("rq")); | |
| 2023 | - } catch (ParseException e){ | |
| 2024 | - logger.error(e.toString(),e); | |
| 2025 | - } | |
| 2026 | - dlb.setXlbm(arg0.getString("xlbm")); | |
| 2027 | - dlb.setJsy(arg0.getString("jsy")); | |
| 2028 | - dlb.setJname(arg0.getString("jname")); | |
| 2029 | - dlb.setNbbm(arg0.getString("nbbm")); | |
| 2030 | - dlb.setZlc(Double.parseDouble(arg0.getString("zlc"))); | |
| 2031 | - dlb.setCdl(Double.parseDouble(arg0.getString("cdl"))); | |
| 2032 | - dlb.setJzcd(Double.parseDouble(arg0.getString("jzcd"))); | |
| 2033 | - dlb.setCzcd(Double.parseDouble(arg0.getString("czcd"))); | |
| 2034 | - dlb.setHd(Double.parseDouble(arg0.getString("hd"))); | |
| 2035 | - dlb.setSh(Double.parseDouble(arg0.getString("sh"))); | |
| 2036 | - dlb.setFgsdm(arg0.getString("fgsdm")); | |
| 2037 | - dlb.setRq(rq); | |
| 2038 | - return dlb; | |
| 2039 | - } | |
| 2040 | - }); | |
| 2041 | - | |
| 2042 | - for (Ylb y:ylbList) { | |
| 2043 | - if(ylbMap.containsKey(y.getRq().getTime()+"_"+y.getXlbm()+"_"+y.getJsy()+"_"+y.getNbbm())){ | |
| 2044 | - Ylb yo = ylbMap.get(y.getRq().getTime()+"_"+y.getXlbm()+"_"+y.getJsy()+"_"+y.getNbbm()); | |
| 2045 | - yo.setZlc(Arith.add(yo.getZlc(),y.getZlc())); | |
| 2046 | - yo.setCzyl(Arith.add(yo.getCzyl(),y.getCzyl())); | |
| 2047 | - yo.setJzyl(Arith.add(yo.getJzyl(),y.getJzyl())); | |
| 2048 | - yo.setJzl(Arith.add(yo.getJzl(),y.getJzl())); | |
| 2049 | - yo.setYh(Arith.add(yo.getYh(),y.getYh())); | |
| 2050 | - } else | |
| 2051 | - ylbMap.put(y.getRq().getTime()+"_"+y.getXlbm()+"_"+y.getJsy()+"_"+y.getNbbm(),y); | |
| 2052 | - | |
| 2053 | -// ylbMap.put(y.getRq().getTime()+"_"+y.getXlbm()+"_"+y.getJsy()+"_"+y.getJname()+"_"+y.getNbbm(),y); | |
| 2054 | -// ylbCLMap.put(y.getRq().getTime()+"_"+y.getXlbm()+"_"+y.getNbbm(),y); | |
| 2055 | - } | |
| 2056 | - for (Dlb d:dlbList) { | |
| 2057 | - if(dlbMap.containsKey(d.getRq().getTime()+"_"+d.getXlbm()+"_"+d.getJsy()+"_"+d.getNbbm())){ | |
| 2058 | - Dlb dold = dlbMap.get(d.getRq().getTime()+"_"+d.getXlbm()+"_"+d.getJsy()+"_"+d.getNbbm()); | |
| 2059 | - dold.setZlc(Arith.add(dold.getZlc(),d.getZlc())); | |
| 2060 | - dold.setHd(Arith.add(dold.getHd(),d.getHd())); | |
| 2061 | - dold.setCzcd(Arith.add(dold.getCzcd(),d.getCzcd())); | |
| 2062 | - dold.setJzcd(Arith.add(dold.getJzcd(),d.getJzcd())); | |
| 2063 | - dold.setCdl(Arith.add(dold.getCdl(),d.getCdl())); | |
| 2064 | - dold.setHd(Arith.add(dold.getHd(),d.getHd())); | |
| 2065 | - } else | |
| 2066 | - dlbMap.put(d.getRq().getTime()+"_"+d.getXlbm()+"_"+d.getJsy()+"_"+d.getNbbm(),d); | |
| 2067 | -// dlbMap.put(d.getRq().getTime()+"_"+d.getXlbm()+"_"+d.getJsy()+"_"+d.getJname()+"_"+d.getNbbm(),d); | |
| 2068 | -// dlbCLMap.put(d.getRq().getTime()+"_"+d.getXlbm()+"_"+d.getNbbm(),d); | |
| 2069 | - } | |
| 2070 | - } | |
| 2071 | - | |
| 2072 | - CalcWaybillDetail zjCalc = this.initCalcWaybillDetail(); | |
| 2073 | - zjCalc.setjName("合计"); | |
| 2074 | - // 横向数据的第几天下标 | |
| 2075 | - int dayIndex = 0; | |
| 2076 | - int dayIndexPrev = -1; | |
| 2077 | - // 报表纵向列数据生成 | |
| 2078 | - for (int i = 0; listNew.size() > i; i++) { | |
| 2079 | - CalcWaybillDetail cw = listNew.get(i); | |
| 2080 | - | |
| 2081 | - CalcWaybillDetail cwNext = new CalcWaybillDetail(); | |
| 2082 | - if(i<listNew.size()-1){ | |
| 2083 | - cwNext = listNew.get(i+1); | |
| 2084 | - } | |
| 2085 | - String xl = cw.getXl(); | |
| 2086 | - String jsy = cw.getjGh(); | |
| 2087 | - String cwy = cw.getsGh(); | |
| 2088 | - String cl = cw.getCl(); | |
| 2089 | - | |
| 2090 | - Ylb y = new Ylb(); | |
| 2091 | - Dlb d = new Dlb(); | |
| 2092 | - // 统计类型不同统计的左边列不同 | |
| 2093 | - // 赋值油、电量 | |
| 2094 | - if(flag != 2){ | |
| 2095 | - // 取了之后删除,防止重复取,应为添加的时候已经合并了 | |
| 2096 | - y = ylbMap.get(cw.getRq().getTime()+"_"+cw.getXl()+"_"+cw.getjGh()+"_"+cw.getCl()); | |
| 2097 | - ylbMap.remove(cw.getRq().getTime()+"_"+cw.getXl()+"_"+cw.getjGh()+"_"+cw.getCl()); | |
| 2098 | - d = dlbMap.get(cw.getRq().getTime()+"_"+cw.getXl()+"_"+cw.getjGh()+"_"+cw.getCl()); | |
| 2099 | - dlbMap.remove(cw.getRq().getTime()+"_"+cw.getXl()+"_"+cw.getjGh()+"_"+cw.getCl()); | |
| 2100 | - if(y != null){ | |
| 2101 | - cw.setZlc(y.getZlc()); | |
| 2102 | - cw.setYh(y.getYh()); | |
| 2103 | - cw.setJzl(y.getJzl()); | |
| 2104 | - if("0".equals(y.getRylx())){ | |
| 2105 | - cw.setJzl0(y.getJzl()); | |
| 2106 | - }else if("1".equals(y.getRylx())){ | |
| 2107 | - cw.setJzl10(y.getJzl()); | |
| 2108 | - } | |
| 2109 | - cw.setJzyl(y.getJzyl()); | |
| 2110 | - cw.setCzyl(y.getCzyl()); | |
| 2111 | - cw.setRylx(y.getRylx()); | |
| 2112 | - cw.setBglyh((y.getZlc()==0? 0:100*y.getYh()/y.getZlc())); | |
| 2113 | - } | |
| 2114 | - if(d != null) { | |
| 2115 | - cw.setZlc(d.getZlc()); | |
| 2116 | - cw.setHd(d.getHd()); | |
| 2117 | - cw.setJzcd(d.getJzcd()); | |
| 2118 | - cw.setCzcd(d.getCzcd()); | |
| 2119 | - cw.setCdl(d.getCdl()); | |
| 2120 | - cw.setBglyh((d.getZlc()==0? 0:100*d.getHd()/d.getZlc())); | |
| 2121 | - } | |
| 2122 | - } | |
| 2123 | - | |
| 2124 | - String key = "",keyNext = ""; | |
| 2125 | - if(flag == 1){ | |
| 2126 | - if(cw.getjGh() != null && cw.getjName() != null) | |
| 2127 | - key += cw.getjGh() + "/" + cw.getjName(); | |
| 2128 | - if(cwNext.getjGh() != null && cwNext.getjName() != null) | |
| 2129 | - keyNext += cwNext.getjGh() + "/" + cwNext.getjName(); | |
| 2130 | - } else if(flag == 2){ | |
| 2131 | - if(cw.getsGh() != null && cw.getsName() != null) | |
| 2132 | - key += cw.getsGh() + "/" + cw.getsName(); | |
| 2133 | - if(cwNext.getsGh() != null && cwNext.getsName() != null) | |
| 2134 | - keyNext += cwNext.getsGh() + "/" + cwNext.getsName(); | |
| 2135 | - } else if(flag == 3){ | |
| 2136 | - if(cw.getCl() != null) | |
| 2137 | - key += cw.getCl(); | |
| 2138 | - if(cwNext.getCl() != null) | |
| 2139 | - keyNext += cwNext.getCl(); | |
| 2140 | - } | |
| 2141 | - key = cw.getFgsdm()+"/"+cw.getXl() + "/" + key; | |
| 2142 | - keyNext = cw.getFgsdm()+"/"+cwNext.getXl() + "/" + keyNext; | |
| 2143 | - CalcWaybillDetail calc = new CalcWaybillDetail(); | |
| 2144 | - List<CalcWaybillDetail> calcList = new ArrayList<>(); | |
| 2145 | - // 是否一行数据的第一个、生成key,calc为刚添加,不去和cw相加 | |
| 2146 | - boolean ifFirst = false; | |
| 2147 | - if(keyMapList.containsKey(key)){ | |
| 2148 | - calc = keyMap.get(key); | |
| 2149 | - calcList = keyMapList.get(key); | |
| 2150 | - } else { | |
| 2151 | - // 深度拷贝对象 | |
| 2152 | - BeanUtils.copyProperties(cw,calc); | |
| 2153 | - keyMap.put(key, calc); | |
| 2154 | - dayIndex = 0; | |
| 2155 | - ifFirst = true; | |
| 2156 | - } | |
| 2157 | - | |
| 2158 | - CalcWaybillDetail dayc = null; | |
| 2159 | - if("m".equals(timeType)){ | |
| 2160 | - while (!dayList.get(dayIndex).containsKey(cw.getRqStr())){ | |
| 2161 | - calcList.add(new CalcWaybillDetail()); | |
| 2162 | - dayIndex++; | |
| 2163 | - } | |
| 2164 | - dayc = dayList.get(dayIndex).get(cw.getRqStr()); | |
| 2165 | - } else if("y".equals(timeType)){ | |
| 2166 | - while (!dayList.get(dayIndex).containsKey(cw.getRqStr().substring(0,7))){ | |
| 2167 | - calcList.add(new CalcWaybillDetail()); | |
| 2168 | - dayIndex++; | |
| 2169 | - } | |
| 2170 | - dayc = dayList.get(dayIndex).get(cw.getRqStr().substring(0,7)); | |
| 2171 | - } | |
| 2172 | - | |
| 2173 | - | |
| 2174 | - // 天数相加 | |
| 2175 | - this.summation(dayc, cw); | |
| 2176 | - // 左边固定列数据相加 | |
| 2177 | - if(!ifFirst) | |
| 2178 | - this.summation(calc, cw); | |
| 2179 | - // 左边合计相加 | |
| 2180 | - this.summation(zjCalc, cw); | |
| 2181 | - | |
| 2182 | - | |
| 2183 | - if(dayIndexPrev == dayIndex){ | |
| 2184 | - CalcWaybillDetail cwPrev = calcList.get(dayIndex); | |
| 2185 | - this.summation(cwPrev, cw); | |
| 2186 | - } else { | |
| 2187 | - CalcWaybillDetail cwd = new CalcWaybillDetail(); | |
| 2188 | - // 深度拷贝对象 | |
| 2189 | - BeanUtils.copyProperties(cw,cwd); | |
| 2190 | - calcList.add(cwd); | |
| 2191 | - calc.setTs(calc.getTs()+1); | |
| 2192 | - zjCalc.setTs(zjCalc.getTs()+1); | |
| 2193 | - } | |
| 2194 | - | |
| 2195 | - // 把下标 | |
| 2196 | - dayIndexPrev = dayIndex; | |
| 2197 | - // timeType 为m 月报表时,日期不一样就换列,为y 年报表是,月份不一样换列 | |
| 2198 | - if("m".equals(timeType) && cwNext != null && key.equals(keyNext) && !cw.getRqStr().equals(cwNext.getRqStr())){ | |
| 2199 | - dayIndex++; | |
| 2200 | - } else if("y".equals(timeType) && cwNext != null && key.equals(keyNext) && !cw.getRqStr().substring(0,7).equals(cwNext.getRqStr().substring(0,7))){ | |
| 2201 | - dayIndex++; | |
| 2202 | - } else if(!key.equals(keyNext)){ | |
| 2203 | - // 满数据的不用补空格 | |
| 2204 | - while (dayList.size() > dayIndex+1){ | |
| 2205 | - calcList.add(new CalcWaybillDetail()); | |
| 2206 | - dayIndex++; | |
| 2207 | - } | |
| 2208 | - // 换列了从头开始,上一个下标赋值为初始 | |
| 2209 | - dayIndexPrev = -1; | |
| 2210 | - } | |
| 2211 | - // 右边可变列添加数据 | |
| 2212 | - keyMapList.put(key,calcList); | |
| 2213 | - } | |
| 2214 | - | |
| 2215 | - // 表头和数据 | |
| 2216 | - Iterator iter = keyMap.entrySet().iterator(); | |
| 2217 | - | |
| 2218 | - List<String> list1 = new ArrayList<>(); | |
| 2219 | - list1.add("序号"); | |
| 2220 | - list1.add("所属公司"); | |
| 2221 | - list1.add("线路"); | |
| 2222 | - if(flag==1 ||flag==2 ){ | |
| 2223 | - list1.add("工号"); | |
| 2224 | - list1.add("姓名"); | |
| 2225 | - } else if(flag==3){ | |
| 2226 | - list1.add("自编号"); | |
| 2227 | - list1.add("车牌号"); | |
| 2228 | - list1.add("燃油类型"); | |
| 2229 | - } | |
| 2230 | - list1.add("计划公里"); | |
| 2231 | - list1.add("总公里"); | |
| 2232 | - list1.add("空驶公里"); | |
| 2233 | - list1.add("临加公里"); | |
| 2234 | - list1.add("烂班公里"); | |
| 2235 | - list1.add("m".equals(timeType)?"天数":"月数"); | |
| 2236 | - for(int i=day; i<=day2; i++){ | |
| 2237 | - list1.add((i<10?"0"+i:i)+("m".equals(timeType)?"日":"月")); | |
| 2238 | - } | |
| 2239 | - if("bgldh".equals(itemDetails) || "bglyh".equals(itemDetails)){ | |
| 2240 | - list1.add("平均"); | |
| 2241 | - } else | |
| 2242 | - list1.add("合计"); | |
| 2243 | - resList.add(list1); | |
| 2244 | - | |
| 2245 | - Map<String, String> carsMap = new HashMap<>(); | |
| 2246 | - List<Cars> carsList = carsRepository.findCars(); | |
| 2247 | - for (Cars c:carsList) { | |
| 2248 | - String sfdc = c.getSfdc()+""; | |
| 2249 | - carsMap.put(c.getInsideCode(), sfdc.equals("true")?"纯电动":"柴油"); | |
| 2250 | - } | |
| 2251 | - | |
| 2252 | - int i=1; | |
| 2253 | - DecimalFormat df = new DecimalFormat("0.00");//格式化小数 | |
| 2254 | - double allNum = 0.0; | |
| 2255 | - while (iter.hasNext()) { | |
| 2256 | - Map.Entry entry = (Map.Entry) iter.next(); | |
| 2257 | - // 获取key | |
| 2258 | - String key = (String) entry.getKey(); | |
| 2259 | - // 获取value | |
| 2260 | - CalcWaybillDetail c = (CalcWaybillDetail) entry.getValue(); | |
| 2261 | - | |
| 2262 | - List<CalcWaybillDetail> cList = keyMapList.get(key); | |
| 2263 | - | |
| 2264 | - List<String> listStr = new ArrayList<>(); | |
| 2265 | - listStr.add(i+""); | |
| 2266 | - i++; | |
| 2267 | - listStr.add(c.getFgsname()); | |
| 2268 | - listStr.add(c.getXlName()); | |
| 2269 | - if("jsy".equals(statisticalObj)){ | |
| 2270 | - listStr.add(c.getjGh()); | |
| 2271 | - listStr.add(c.getjName()); | |
| 2272 | - } else if("cwy".equals(statisticalObj)){ | |
| 2273 | - listStr.add(c.getsGh()); | |
| 2274 | - listStr.add(c.getsName()); | |
| 2275 | - } else if("cl".equals(statisticalObj)){ | |
| 2276 | - listStr.add(c.getCl()); | |
| 2277 | - listStr.add(BasicData.nbbmCompanyPlateMap.get(c.getCl())+""); | |
| 2278 | - listStr.add(carsMap.get(c.getCl())); | |
| 2279 | - } else if("xl".equals(statisticalObj)){ | |
| 2280 | - | |
| 2281 | - } | |
| 2282 | - listStr.add(df.format(c.getJhyylc()+c.getJhfyylc())); | |
| 2283 | - listStr.add(df.format(c.getSjyylc()+c.getSjfyylc()+c.getLjyylc()+c.getLjfyylc())); | |
| 2284 | -// listStr.add(df.format(c.getSjyylc()+c.getLjyylc())); | |
| 2285 | - listStr.add(df.format(c.getSjfyylc()+c.getLjfyylc())); | |
| 2286 | - listStr.add(df.format(c.getLjyylc()+c.getLjfyylc())); | |
| 2287 | - listStr.add(df.format(c.getLblc())); | |
| 2288 | - listStr.add(c.getTs()+""); | |
| 2289 | - c.setBglhd(c.getBglhd()/c.getTs()); | |
| 2290 | - c.setBglyh(c.getBglyh()/c.getTs()); | |
| 2291 | - // 把列合计的数添加到最后一个 | |
| 2292 | - cList.add(c); | |
| 2293 | - // DecimalFormat df = new DecimalFormat("0.00");//格式化小数 | |
| 2294 | - for (CalcWaybillDetail c1:cList) { | |
| 2295 | - if(StringUtils.isEmpty(c1.getXl())) { | |
| 2296 | - listStr.add(""); | |
| 2297 | - } else{ | |
| 2298 | - if("jzlAll".equals(itemDetails)){ | |
| 2299 | - listStr.add(df.format(c1.getJzl())); | |
| 2300 | - }else if("jzl0".equals(itemDetails)){ | |
| 2301 | - listStr.add(df.format(c1.getJzl0())); | |
| 2302 | - } else if("jzl-10".equals(itemDetails)){ | |
| 2303 | - listStr.add(df.format(c1.getJzl10())); | |
| 2304 | - } else if("yhl".equals(itemDetails)){ | |
| 2305 | - listStr.add(df.format(c1.getYh())); | |
| 2306 | - } else if("jccy".equals(itemDetails)){ | |
| 2307 | - listStr.add(df.format(c1.getJzyl())); | |
| 2308 | - } else if("cccy".equals(itemDetails)){ | |
| 2309 | - listStr.add(df.format(c1.getCzyl())); | |
| 2310 | - } else if("bglyh".equals(itemDetails)){ | |
| 2311 | -// listStr.add(df.format(c1.getBglyh())); | |
| 2312 | - listStr.add(df.format(c1.getZlc()==0? 0:100*c1.getYh()/c1.getZlc())); | |
| 2313 | - } else if("dh".equals(itemDetails)){ | |
| 2314 | - listStr.add(df.format(c1.getHd())); | |
| 2315 | - } else if("cdl".equals(itemDetails)){ | |
| 2316 | - listStr.add(df.format(c1.getCdl())); | |
| 2317 | - } else if("cccd".equals(itemDetails)){ | |
| 2318 | - listStr.add(df.format(c1.getCzcd())); | |
| 2319 | - } else if("jccd".equals(itemDetails)){ | |
| 2320 | - listStr.add(df.format(c1.getJzcd())); | |
| 2321 | - } else if("bgldh".equals(itemDetails)){ | |
| 2322 | - listStr.add(df.format(c1.getZlc()==0? 0:100*c1.getHd()/c1.getZlc())); | |
| 2323 | -// listStr.add(df.format(c1.getBglhd())); | |
| 2324 | - } else if("zgl".equals(itemDetails)){ | |
| 2325 | - listStr.add(df.format((c1.getSjyylc()+c1.getSjfyylc()+c1.getLjfyylc()+c1.getLjyylc()))); | |
| 2326 | - } else if("jhgl".equals(itemDetails)){ | |
| 2327 | - listStr.add(df.format(c1.getJhyylc()+c1.getJhfyylc())); | |
| 2328 | - } else if("sjbc".equals(itemDetails)){ | |
| 2329 | - listStr.add(c1.getSjyybc()+c1.getSjfyybc()+""); | |
| 2330 | - } else if("jhbc".equals(itemDetails)){ | |
| 2331 | - listStr.add(c1.getJhyybc()+c1.getJhfyybc()+""); | |
| 2332 | - } | |
| 2333 | - } | |
| 2334 | - } | |
| 2335 | - allNum = allNum + Double.parseDouble(listStr.get(listStr.size()-1)); | |
| 2336 | - resList.add(listStr); | |
| 2337 | - } | |
| 2338 | - | |
| 2339 | - // 合计列 | |
| 2340 | - List<String> listEnd = new ArrayList<>(); | |
| 2341 | - listEnd.add("合计"); | |
| 2342 | - listEnd.add(df.format(zjCalc.getJhyylc()+zjCalc.getJhfyylc())); | |
| 2343 | - listEnd.add(df.format(zjCalc.getSjfyylc()+zjCalc.getSjyylc()+zjCalc.getLjyylc()+zjCalc.getLjfyylc()));//总公里 | |
| 2344 | -// listEnd.add(df.format(zjCalc.getSjyylc()+zjCalc.getLjyylc()));//营运 | |
| 2345 | - listEnd.add(df.format(zjCalc.getSjfyylc()+zjCalc.getLjfyylc())); | |
| 2346 | - listEnd.add(df.format(zjCalc.getLjfyylc()+zjCalc.getLjyylc())); | |
| 2347 | - listEnd.add(df.format(zjCalc.getLblc())); | |
| 2348 | - listEnd.add(zjCalc.getTs()+""); | |
| 2349 | - double all = 0.0; | |
| 2350 | - for (Map<String, CalcWaybillDetail> cmap:dayList) { | |
| 2351 | - for (Map.Entry<String, CalcWaybillDetail> cw : cmap.entrySet()) { | |
| 2352 | -// System.out.println("key = " + cw.getKey() + ", value = " + cw.getValue()); | |
| 2353 | - CalcWaybillDetail c1 = cw.getValue(); | |
| 2354 | - if("jzlAll".equals(itemDetails)){ | |
| 2355 | - listEnd.add(df.format(c1.getJzl())); | |
| 2356 | - } else if("jzl0".equals(itemDetails)){ | |
| 2357 | - listEnd.add(df.format(c1.getJzl0())); | |
| 2358 | - } else if("jzl-10".equals(itemDetails)){ | |
| 2359 | - listEnd.add(df.format(c1.getJzl10())); | |
| 2360 | - } else if("yhl".equals(itemDetails)){ | |
| 2361 | - listEnd.add(df.format(c1.getYh())); | |
| 2362 | - } else if("jccy".equals(itemDetails)){ | |
| 2363 | - listEnd.add(df.format(c1.getJzyl())); | |
| 2364 | - } else if("cccy".equals(itemDetails)){ | |
| 2365 | - listEnd.add(df.format(c1.getCzyl())); | |
| 2366 | - } else if("bglyh".equals(itemDetails)){ | |
| 2367 | -// listEnd.add(df.format(c1.getBglyh())); | |
| 2368 | - listEnd.add(df.format(c1.getZlc()==0? 0:100*c1.getYh()/c1.getZlc())); | |
| 2369 | - } else if("dh".equals(itemDetails)){ | |
| 2370 | - listEnd.add(df.format(c1.getHd())); | |
| 2371 | - } else if("cdl".equals(itemDetails)){ | |
| 2372 | - listEnd.add(df.format(c1.getCdl())); | |
| 2373 | - } else if("cccd".equals(itemDetails)){ | |
| 2374 | - listEnd.add(df.format(c1.getCzcd())); | |
| 2375 | - } else if("jccd".equals(itemDetails)){ | |
| 2376 | - listEnd.add(df.format(c1.getJzcd())); | |
| 2377 | - } else if("bgldh".equals(itemDetails)){ | |
| 2378 | -// listEnd.add(df.format(c1.getBglhd())); | |
| 2379 | - listEnd.add(df.format(c1.getZlc()==0? 0:100*c1.getHd()/c1.getZlc())); | |
| 2380 | - } else if("zgl".equals(itemDetails)){ | |
| 2381 | - listEnd.add((df.format(c1.getSjyylc()+c1.getSjfyylc()+c1.getLjfyylc()+c1.getLjyylc()))); | |
| 2382 | - } else if("jhgl".equals(itemDetails)){ | |
| 2383 | - listEnd.add((df.format(c1.getJhyylc()+c1.getJhfyylc()))); | |
| 2384 | - } else if("sjbc".equals(itemDetails)){ | |
| 2385 | - listEnd.add(c1.getSjyybc()+c1.getSjfyybc()+""); | |
| 2386 | - } else if("jhbc".equals(itemDetails)){ | |
| 2387 | - listEnd.add((c1.getJhyybc()+c1.getJhfyybc())+""); | |
| 2388 | - } | |
| 2389 | - } | |
| 2390 | - all = all + Double.parseDouble(listEnd.get(listEnd.size()-1)); | |
| 2391 | - } | |
| 2392 | - | |
| 2393 | - // 百公里电油耗时为平均数 | |
| 2394 | - if("bgldh".equals(itemDetails) || "bglyh".equals(itemDetails)){ | |
| 2395 | - allNum = allNum/keyMap.size(); | |
| 2396 | - all = all/dayList.size(); | |
| 2397 | - } | |
| 2398 | -// listEnd.add(df.format(allNum)+"/"+df.format(all)); | |
| 2399 | - listEnd.add(df.format(all)); | |
| 2400 | - resList.add(listEnd); | |
| 2401 | - | |
| 2402 | - return resList; | |
| 2403 | - } | |
| 2404 | - | |
| 2405 | - public CalcWaybillDetail initCalcWaybillDetail(){ | |
| 2406 | - CalcWaybillDetail calc = new CalcWaybillDetail(); | |
| 2407 | - calc.setJhyybc(0); | |
| 2408 | - calc.setJhyylc(0d); | |
| 2409 | - calc.setJhfyybc(0); | |
| 2410 | - calc.setJhfyylc(0d); | |
| 2411 | - calc.setSjyybc(0); | |
| 2412 | - calc.setSjyylc(0d); | |
| 2413 | - calc.setSjfyybc(0); | |
| 2414 | - calc.setSjfyylc(0d); | |
| 2415 | - calc.setLbbc(0); | |
| 2416 | - calc.setLblc(0d); | |
| 2417 | - calc.setLjbc(0); | |
| 2418 | - calc.setLjyylc(0d); | |
| 2419 | - calc.setZlc(0d); | |
| 2420 | - calc.setCzyl(0d); | |
| 2421 | - calc.setJzyl(0d); | |
| 2422 | - calc.setJzl(0d); | |
| 2423 | - calc.setJzl0(0d); | |
| 2424 | - calc.setJzl10(0d); | |
| 2425 | - calc.setYh(0d); | |
| 2426 | - calc.setCzcd(0d); | |
| 2427 | - calc.setJzcd(0d); | |
| 2428 | - calc.setCdl(0d); | |
| 2429 | - calc.setHd(0d); | |
| 2430 | - calc.setTs(0); | |
| 2431 | - return calc; | |
| 2432 | - } | |
| 2433 | - | |
| 2434 | - public CalcWaybillDetail summation(CalcWaybillDetail c1, CalcWaybillDetail c2){ | |
| 2435 | - c1.setJhyybc(c1.getJhyybc() + c2.getJhyybc()); | |
| 2436 | - c1.setJhyylc(Arith.add(c1.getJhyylc(), c2.getJhyylc())); | |
| 2437 | - c1.setJhfyybc(c1.getJhfyybc() + c2.getJhfyybc()); | |
| 2438 | - c1.setJhfyylc(Arith.add(c1.getJhfyylc(), c2.getJhfyylc())); | |
| 2439 | - c1.setSjyybc(c1.getSjyybc() + c2.getSjyybc()); | |
| 2440 | - c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getSjyylc())); | |
| 2441 | -// c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getLjyylc()));// 把临加的也算上了,后面不用加了 | |
| 2442 | - c1.setSjfyybc(c1.getSjfyybc() + c2.getSjfyybc()); | |
| 2443 | - c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getSjfyylc())); | |
| 2444 | -// c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getLjfyylc()));// 把临加的也算上了,后面不用加了 | |
| 2445 | - c1.setLbbc(c1.getLbbc() + c2.getLbbc()); | |
| 2446 | - c1.setLblc(Arith.add(c1.getLblc(), c2.getLblc())); | |
| 2447 | - c1.setLjbc(c1.getLjbc() + c2.getLjbc()); | |
| 2448 | - c1.setLjyylc(Arith.add(c1.getLjyylc(), c2.getLjyylc())); | |
| 2449 | - c1.setLjfyylc(Arith.add(c1.getLjfyylc(), c2.getLjfyylc())); | |
| 2450 | - c1.setZlc(Arith.add(c1.getZlc(),c2.getZlc())); | |
| 2451 | - c1.setCzyl(Arith.add(c1.getCzyl(),c2.getCzyl())); | |
| 2452 | - c1.setJzyl(Arith.add(c1.getJzyl(),c2.getJzyl())); | |
| 2453 | - c1.setJzl(Arith.add(c1.getJzl(),c2.getJzl())); | |
| 2454 | - c1.setJzl0(Arith.add(c1.getJzl0(),c2.getJzl0())); | |
| 2455 | - c1.setJzl10(Arith.add(c1.getJzl10(),c2.getJzl10())); | |
| 2456 | - c1.setYh(Arith.add(c1.getYh(),c2.getYh())); | |
| 2457 | - c1.setHd(Arith.add(c1.getHd(),c2.getHd())); | |
| 2458 | - c1.setCzcd(Arith.add(c1.getCzcd(),c2.getCzcd())); | |
| 2459 | - c1.setJzcd(Arith.add(c1.getJzcd(),c2.getJzcd())); | |
| 2460 | - c1.setCdl(Arith.add(c1.getCdl(),c2.getCdl())); | |
| 2461 | - c1.setHd(Arith.add(c1.getHd(),c2.getHd())); | |
| 2462 | - c1.setTs(c1.getTs()+c2.getTs()); | |
| 2463 | -// c1.setDtbc(c1.getDtbc() + c2.getDtbc()); | |
| 2464 | - return c1; | |
| 2465 | - } | |
| 2466 | -} | |
| 2467 | - | |
| 2468 | -class AccountXlbmByping implements Comparator<Map<String, Object>> { | |
| 2469 | - @Override | |
| 2470 | - public int compare(Map<String, Object> o1, Map<String, Object> o2) { | |
| 2471 | - // TODO Auto-generated method stub | |
| 2472 | -// PinyinHelper.convertToPinyinString(ppy.getName(), | |
| 2473 | -// "" , PinyinFormat.WITHOUT_TONE) | |
| 2474 | - return o1.get("xlNamePy").toString().compareTo( | |
| 2475 | - o2.get("xlNamePy").toString()); | |
| 2476 | - } | |
| 2477 | -} | |
| 1 | +package com.bsth.service.calc.impl; | |
| 2 | + | |
| 3 | +import com.alibaba.fastjson.JSON; | |
| 4 | +import com.alibaba.fastjson.JSONArray; | |
| 5 | +import com.bsth.common.ResponseCode; | |
| 6 | +import com.bsth.data.BasicData; | |
| 7 | +import com.bsth.entity.Cars; | |
| 8 | +import com.bsth.entity.Line; | |
| 9 | +import com.bsth.entity.calc.CalcBusMileage; | |
| 10 | +import com.bsth.entity.calc.CalcInterval; | |
| 11 | +import com.bsth.entity.calc.CalcLineMileage; | |
| 12 | +import com.bsth.entity.calc.CalcStatistics; | |
| 13 | +import com.bsth.entity.calc.CalcWaybill; | |
| 14 | +import com.bsth.entity.calc.CalcWaybillDetail; | |
| 15 | +import com.bsth.entity.oil.Dlb; | |
| 16 | +import com.bsth.entity.oil.Ylb; | |
| 17 | +import com.bsth.entity.realcontrol.ChildTaskPlan; | |
| 18 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 19 | +import com.bsth.entity.sys.Interval; | |
| 20 | +import com.bsth.repository.CarsRepository; | |
| 21 | +import com.bsth.repository.LineRepository; | |
| 22 | +import com.bsth.repository.calc.CalcBusMileageRepository; | |
| 23 | +import com.bsth.repository.calc.CalcIntervalRepository; | |
| 24 | +import com.bsth.repository.calc.CalcLineMileageRepository; | |
| 25 | +import com.bsth.repository.calc.CalcStatisticsRepository; | |
| 26 | +import com.bsth.repository.calc.CalcWaybillRepository; | |
| 27 | +import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | |
| 28 | +import com.bsth.service.LineService; | |
| 29 | +import com.bsth.service.calc.CalcToolService; | |
| 30 | +import com.bsth.service.calc.CalcWaybillService; | |
| 31 | +import com.bsth.service.impl.BaseServiceImpl; | |
| 32 | +import com.bsth.service.realcontrol.ScheduleRealInfoService; | |
| 33 | +import com.bsth.service.report.CulateMileageService; | |
| 34 | +import com.bsth.service.report.ReportService; | |
| 35 | +import com.bsth.util.Arith; | |
| 36 | +import com.bsth.util.ReportUtils; | |
| 37 | +import com.github.stuxuhai.jpinyin.PinyinException; | |
| 38 | +import com.github.stuxuhai.jpinyin.PinyinFormat; | |
| 39 | +import com.github.stuxuhai.jpinyin.PinyinHelper; | |
| 40 | +import org.apache.commons.lang3.StringUtils; | |
| 41 | +import org.slf4j.Logger; | |
| 42 | +import org.slf4j.LoggerFactory; | |
| 43 | +import org.springframework.beans.BeanUtils; | |
| 44 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 45 | +import org.springframework.jdbc.core.JdbcTemplate; | |
| 46 | +import org.springframework.jdbc.core.RowMapper; | |
| 47 | +import org.springframework.stereotype.Service; | |
| 48 | + | |
| 49 | +import javax.transaction.Transactional; | |
| 50 | +import java.sql.ResultSet; | |
| 51 | +import java.sql.SQLException; | |
| 52 | +import java.text.DecimalFormat; | |
| 53 | +import java.text.ParseException; | |
| 54 | +import java.text.SimpleDateFormat; | |
| 55 | +import java.util.*; | |
| 56 | + | |
| 57 | +/** | |
| 58 | + * Created by 17/11/16. | |
| 59 | + */ | |
| 60 | +@Service | |
| 61 | +public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer> implements CalcWaybillService { | |
| 62 | + | |
| 63 | + @Autowired | |
| 64 | + private CalcWaybillRepository calcRepository; | |
| 65 | + | |
| 66 | + @Autowired | |
| 67 | + private CalcStatisticsRepository calcStatisticsRepository; | |
| 68 | + | |
| 69 | + @Autowired | |
| 70 | + private CalcLineMileageRepository calcLineMileageRepository; | |
| 71 | + | |
| 72 | + @Autowired | |
| 73 | + private CalcBusMileageRepository calcBusMileageRepository; | |
| 74 | + | |
| 75 | + @Autowired | |
| 76 | + private CalcToolService calcToolService; | |
| 77 | + | |
| 78 | + @Autowired | |
| 79 | + private CulateMileageService culateService; | |
| 80 | + | |
| 81 | + @Autowired | |
| 82 | + private ScheduleRealInfoService scheduleRealInfoService; | |
| 83 | + | |
| 84 | + @Autowired | |
| 85 | + private ScheduleRealInfoRepository scheduleRealInfoRepository; | |
| 86 | + | |
| 87 | + @Autowired | |
| 88 | + private CalcIntervalRepository calcIntervalRepository; | |
| 89 | + | |
| 90 | + @Autowired | |
| 91 | + private LineRepository lineRepository; | |
| 92 | + @Autowired | |
| 93 | + private LineService lineService; | |
| 94 | + @Autowired | |
| 95 | + private ReportService reportService; | |
| 96 | + @Autowired | |
| 97 | + CarsRepository carsRepository; | |
| 98 | + | |
| 99 | + @Autowired | |
| 100 | + JdbcTemplate jdbcTemplate; | |
| 101 | + | |
| 102 | + | |
| 103 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | |
| 104 | + | |
| 105 | + | |
| 106 | + public Map<String, Object> autoGenerate(String date, String line) throws Exception { | |
| 107 | + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 108 | + List<String> dateList = new ArrayList<String>(); | |
| 109 | + if(date == null || date.trim().length() == 0){ | |
| 110 | + Date d = new Date(); | |
| 111 | + d.setTime(d.getTime() - (4l * 1000 * 60 * 60 * 24)); | |
| 112 | + dateList.add(sdf.format(d)); | |
| 113 | + d.setTime(d.getTime() - (1l * 1000 * 60 * 60 * 24)); | |
| 114 | + dateList.add(sdf.format(d)); | |
| 115 | + } else { | |
| 116 | + date = date.trim(); | |
| 117 | + dateList.add(date); | |
| 118 | + } | |
| 119 | + if(line == null || line.trim().length() == 0){ | |
| 120 | + line = ""; | |
| 121 | + } else { | |
| 122 | + line = line.trim(); | |
| 123 | + } | |
| 124 | + | |
| 125 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 126 | + for(String d : dateList){ | |
| 127 | + try { | |
| 128 | + Map<String, Object> generateNew = generateNew(d, line); | |
| 129 | + m.put("generateNew", generateNew); | |
| 130 | + } catch (Exception e) { | |
| 131 | + // TODO: handle exception | |
| 132 | + logger.info("date="+d+";line="+line+";重新统计保存失败!"); | |
| 133 | + } | |
| 134 | + try { | |
| 135 | + Map<String, Object> calcLineMileage = calcLineMileage(d, line); | |
| 136 | + m.put("lineMileage", calcLineMileage); | |
| 137 | + } catch (Exception e) { | |
| 138 | + // TODO: handle exception | |
| 139 | + logger.info("date="+d+";line="+line+";线路公里审计保存失败!"); | |
| 140 | + } | |
| 141 | + try { | |
| 142 | + Map<String, Object> calcBusMileage = calcBusMileage(d, line); | |
| 143 | + m.put("busMileage", calcBusMileage); | |
| 144 | + } catch (Exception e) { | |
| 145 | + // TODO: handle exception | |
| 146 | + logger.info("date="+d+";line="+line+";路单数据审计保存失败!"); | |
| 147 | + } | |
| 148 | + } | |
| 149 | + | |
| 150 | + return m; | |
| 151 | + } | |
| 152 | + | |
| 153 | + @Transactional | |
| 154 | + @Override | |
| 155 | + public Map<String, Object> generateNew(String date, String line) throws Exception { | |
| 156 | + Map<String, Object> newMap = new HashMap<String, Object>(); | |
| 157 | + try { | |
| 158 | + if(date == null){ | |
| 159 | + date = ""; | |
| 160 | + } else { | |
| 161 | + date = date.trim(); | |
| 162 | + } | |
| 163 | + if(line == null){ | |
| 164 | + line = ""; | |
| 165 | + } else { | |
| 166 | + line = line.trim(); | |
| 167 | + } | |
| 168 | + if(date.length() != 0 && line.length() != 0){ | |
| 169 | + calcRepository.deleteByDateAndLine(date, line); | |
| 170 | + } else if(date.length() != 0){ | |
| 171 | + calcRepository.deleteByDate(date); | |
| 172 | + } else { | |
| 173 | + newMap.put("status", ResponseCode.ERROR); | |
| 174 | + logger.error("save erro.", "日期不能为空"); | |
| 175 | + return newMap; | |
| 176 | + } | |
| 177 | + | |
| 178 | + if(date.trim().length() == 0){ | |
| 179 | + newMap.put("status", ResponseCode.ERROR); | |
| 180 | + logger.error("save erro.", "日期不能为空"); | |
| 181 | + return newMap; | |
| 182 | + } | |
| 183 | + | |
| 184 | +// String sql = "select c.id,c.out_config,c.start_opt,t.line_code from bsth_c_line_config c LEFT JOIN bsth_c_line t on c.line=t.id"; | |
| 185 | + String sql="select xl_bm as line_code from bsth_c_s_sp_info_real where schedule_date_str = '"+date+"'"; | |
| 186 | + if(line.trim().length() > 0){ | |
| 187 | + sql += " and xl_bm = '"+line+"'"; | |
| 188 | +// sql += " where t.line_code = " + line; | |
| 189 | + } | |
| 190 | + sql += " group by xl_bm"; | |
| 191 | + List<Map<String, Object>> listLineConfig = jdbcTemplate.query(sql, | |
| 192 | + new RowMapper<Map<String, Object>>(){ | |
| 193 | + @Override | |
| 194 | + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { | |
| 195 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 196 | +// m.put("id", rs.getLong("id")); | |
| 197 | +// m.put("out_config", rs.getString("out_config")); | |
| 198 | +// m.put("start_opt", rs.getString("start_opt")); | |
| 199 | + m.put("line_code", rs.getString("line_code")); | |
| 200 | + return m; | |
| 201 | + }}); | |
| 202 | + | |
| 203 | + String xlSql="select line_code,spac_grade from bsth_c_line"; | |
| 204 | + if(line.length() != 0){ | |
| 205 | + xlSql += " where line_code ='"+line+"'"; | |
| 206 | + } | |
| 207 | + List<Map<String, Object>> xlList=jdbcTemplate.query(xlSql, new RowMapper<Map<String, Object>>() { | |
| 208 | + @Override | |
| 209 | + public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 210 | + Map<String, Object> map=new HashMap<String,Object>(); | |
| 211 | + map.put("line",arg0.getString("line_code")); | |
| 212 | + map.put("grade", arg0.getString("spac_grade")); | |
| 213 | + return map; | |
| 214 | + }}); | |
| 215 | + Map<String, List<Map<String, Object>>> xlMap = new HashMap<String, List<Map<String, Object>>>(); | |
| 216 | + for(Map<String, Object> m : xlList){ | |
| 217 | + if(m.containsKey("line") && m.get("line").toString().trim().length() > 0){ | |
| 218 | + String key = m.get("line").toString().trim(); | |
| 219 | + if(!xlMap.containsKey(key)) | |
| 220 | + xlMap.put(key, new ArrayList<Map<String, Object>>()); | |
| 221 | + xlMap.get(key).add(m); | |
| 222 | + } | |
| 223 | + } | |
| 224 | + //查询大间隔时间 | |
| 225 | + String djgSql="select * from bsth_c_interval"; | |
| 226 | + List<Interval> djgList=jdbcTemplate.query(djgSql, new RowMapper<Interval>() { | |
| 227 | + @Override | |
| 228 | + public Interval mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 229 | + Interval m=new Interval(); | |
| 230 | + m.setLevel(arg0.getString("level")); | |
| 231 | + m.setPeak(arg0.getInt("peak")); | |
| 232 | + m.setTrough(arg0.getInt("trough")); | |
| 233 | + return m; | |
| 234 | + }}); | |
| 235 | + | |
| 236 | + Map<String, List<ScheduleRealInfo>> scheMap = new HashMap<String, List<ScheduleRealInfo>>(); | |
| 237 | + List<ScheduleRealInfo> list = calcRepository.findAllScheduleByDate(date); | |
| 238 | + for(ScheduleRealInfo s : list){ | |
| 239 | + String xlBm = s.getXlBm(); | |
| 240 | + if(!scheMap.containsKey(xlBm)){ | |
| 241 | + scheMap.put(xlBm, new ArrayList<ScheduleRealInfo>()); | |
| 242 | + } | |
| 243 | + scheMap.get(xlBm).add(s); | |
| 244 | + } | |
| 245 | + | |
| 246 | + Set<String> lineSet = new HashSet<String>(); | |
| 247 | + List<CalcWaybill> all = new ArrayList<CalcWaybill>(); | |
| 248 | + for (int i = 0; i < listLineConfig.size(); i++) { | |
| 249 | + Map<String, Object> m =listLineConfig.get(i); | |
| 250 | + String lineCode=m.get("line_code").toString().trim(); | |
| 251 | +// String startOpt=m.get("start_opt").toString().trim(); | |
| 252 | + if(!lineSet.add(lineCode)) | |
| 253 | + continue; | |
| 254 | + | |
| 255 | + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); | |
| 256 | + if(xlMap.containsKey(lineCode) && xlMap.get(lineCode) != null){ | |
| 257 | + tempList = xlMap.get(lineCode); | |
| 258 | + } | |
| 259 | + | |
| 260 | + if(!scheMap.containsKey(lineCode)) | |
| 261 | + continue; | |
| 262 | + List<CalcWaybill> findAll = calcToolService.findAll(date, lineCode, scheMap.get(lineCode), tempList, djgList); | |
| 263 | + all.addAll(findAll); | |
| 264 | + | |
| 265 | + } | |
| 266 | +// new BatchSaveUtils<CalcWaybill>().saveList2(all, CalcWaybill.class); | |
| 267 | + calcRepository.saveAll(all); | |
| 268 | + | |
| 269 | + newMap.put("status", ResponseCode.SUCCESS); | |
| 270 | + } catch (Exception e) { | |
| 271 | + // TODO: handle exception | |
| 272 | + newMap.put("status", ResponseCode.ERROR); | |
| 273 | + logger.error("save erro.", e); | |
| 274 | + throw e; | |
| 275 | + } | |
| 276 | + | |
| 277 | + return newMap; | |
| 278 | + } | |
| 279 | + | |
| 280 | + @Override | |
| 281 | + public List<Map<String, Object>> statisticsDailyTj(String gsdm, | |
| 282 | + String fgsdm, String line, String date, String date2, | |
| 283 | + String xlName, String type) { | |
| 284 | + | |
| 285 | + List<String> keyList = new ArrayList<String>(); | |
| 286 | + List<CalcWaybill> list = new ArrayList<CalcWaybill>(); | |
| 287 | + List<CalcWaybill> lists = new ArrayList<CalcWaybill>(); | |
| 288 | + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | |
| 289 | + Map<String, List<CalcWaybill>> keyMap = new HashMap<String, List<CalcWaybill>>(); | |
| 290 | + | |
| 291 | + if(line.equals("")){ | |
| 292 | + //查询所有线路 | |
| 293 | + list = calcRepository.scheduleByDateAndLineTj(line,date,date2,gsdm,fgsdm); | |
| 294 | + }else{ | |
| 295 | + //查询单条线路 | |
| 296 | + list = calcRepository.scheduleByDateAndLineTj2(line,date,date2); | |
| 297 | + } | |
| 298 | + | |
| 299 | + for(CalcWaybill c : list){ | |
| 300 | + String key = c.getXlName(); | |
| 301 | + if(!keyMap.containsKey(key)){ | |
| 302 | + keyMap.put(key, new ArrayList<CalcWaybill>()); | |
| 303 | + keyList.add(key); | |
| 304 | + } | |
| 305 | + keyMap.get(key).add(c); | |
| 306 | + } | |
| 307 | + Collections.sort(keyList, new AccountXlbmStr()); | |
| 308 | + for(String key : keyList){ | |
| 309 | + CalcWaybill calc = keyMap.get(key).get(0); | |
| 310 | + for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 311 | + CalcWaybill c= keyMap.get(key).get(i); | |
| 312 | + calc.setJhyylc(Arith.add(calc.getJhyylc(), c.getJhyylc())); | |
| 313 | + calc.setJhfyylc(Arith.add(calc.getJhfyylc(), c.getJhfyylc())); | |
| 314 | + calc.setSjyylc(Arith.add(calc.getSjyylc(), c.getSjyylc())); | |
| 315 | + calc.setSjfyylc(Arith.add(calc.getSjfyylc(), c.getSjfyylc())); | |
| 316 | + calc.setLblc(Arith.add(calc.getLblc(), c.getLblc())); | |
| 317 | + calc.setLbbc(calc.getLbbc() + c.getLbbc()); | |
| 318 | + calc.setLblcLz(Arith.add(calc.getLblcLz(), c.getLblcLz())); | |
| 319 | + calc.setLblcDm(Arith.add(calc.getLblcDm(), c.getLblcDm())); | |
| 320 | + calc.setLblcGz(Arith.add(calc.getLblcGz(), c.getLblcGz())); | |
| 321 | + calc.setLblcJf(Arith.add(calc.getLblcJf(), c.getLblcJf())); | |
| 322 | + calc.setLblcZs(Arith.add(calc.getLblcZs(), c.getLblcZs())); | |
| 323 | + calc.setLblcQr(Arith.add(calc.getLblcQr(), c.getLblcQr())); | |
| 324 | + calc.setLblcQc(Arith.add(calc.getLblcQc(), c.getLblcQc())); | |
| 325 | + calc.setLblcKx(Arith.add(calc.getLblcKx(), c.getLblcKx())); | |
| 326 | + calc.setLblcQh(Arith.add(calc.getLblcQh(), c.getLblcQh())); | |
| 327 | + calc.setLblcYw(Arith.add(calc.getLblcYw(), c.getLblcYw())); | |
| 328 | + calc.setLblcQt(Arith.add(calc.getLblcQt(), c.getLblcQt())); | |
| 329 | + calc.setLjyylc(Arith.add(calc.getLjyylc(), c.getLjyylc())); | |
| 330 | + calc.setLjfyylc(Arith.add(calc.getLjfyylc(), c.getLjfyylc())); | |
| 331 | + calc.setJhyybc(calc.getJhyybc() + c.getJhyybc()); | |
| 332 | + calc.setJhyybczgf(calc.getJhyybczgf() + c.getJhyybczgf()); | |
| 333 | + calc.setJhyybcwgf(calc.getJhyybcwgf() + c.getJhyybcwgf()); | |
| 334 | + calc.setSjyybc(calc.getSjyybc() + c.getSjyybc()); | |
| 335 | + calc.setSjyybczgf(calc.getSjyybczgf() + c.getSjyybczgf()); | |
| 336 | + calc.setSjyybcwgf(calc.getSjyybcwgf() + c.getSjyybcwgf()); | |
| 337 | + calc.setLjbc(calc.getLjbc() + c.getLjbc()); | |
| 338 | + calc.setLjbczgf(calc.getLjbczgf() + c.getLjbczgf()); | |
| 339 | + calc.setLjbcwgf(calc.getLjbcwgf() + c.getLjbcwgf()); | |
| 340 | + calc.setFzbc(calc.getFzbc() + c.getFzbc()); | |
| 341 | + calc.setFzbczgf(calc.getFzbczgf() + c.getFzbczgf()); | |
| 342 | + calc.setFzbcwgf(calc.getFzbcwgf() + c.getFzbcwgf()); | |
| 343 | + calc.setDtbc(calc.getDtbc() + c.getDtbc()); | |
| 344 | + calc.setDtbczgf(calc.getDtbczgf() + c.getDtbczgf()); | |
| 345 | + calc.setDtbcwgf(calc.getDtbcwgf() + c.getDtbcwgf()); | |
| 346 | + } | |
| 347 | + calc.setSjyylc(Arith.add(calc.getSjyylc(), calc.getLjyylc())); | |
| 348 | + calc.setSjfyylc(Arith.add(calc.getSjfyylc(), calc.getLjfyylc())); | |
| 349 | + lists.add(calc); | |
| 350 | + } | |
| 351 | + CalcWaybill sum = new CalcWaybill(); | |
| 352 | + sum.setXlName("合计"); | |
| 353 | + for(CalcWaybill c : lists){ | |
| 354 | + sum.setJhyylc(Arith.add(sum.getJhyylc()!=null?sum.getJhyylc():0, c.getJhyylc())); | |
| 355 | + sum.setJhfyylc(Arith.add(sum.getJhfyylc()!=null?sum.getJhfyylc():0, c.getJhfyylc())); | |
| 356 | + sum.setSjyylc(Arith.add(sum.getSjyylc()!=null?sum.getSjyylc():0, c.getSjyylc())); | |
| 357 | + sum.setLjyylc(Arith.add(sum.getLjyylc()!=null?sum.getLjyylc():0, c.getLjyylc())); | |
| 358 | + sum.setSjfyylc(Arith.add(sum.getSjfyylc()!=null?sum.getSjfyylc():0, c.getSjfyylc())); | |
| 359 | + sum.setLjfyylc(Arith.add(sum.getLjfyylc()!=null?sum.getLjfyylc():0, c.getLjfyylc())); | |
| 360 | + sum.setLblc(Arith.add(sum.getLblc()!=null?sum.getLblc():0, c.getLblc())); | |
| 361 | + sum.setLbbc(sum.getLbbc() + c.getLbbc()); | |
| 362 | + sum.setLblcLz(Arith.add(sum.getLblcLz()!=null?sum.getLblcLz():0, c.getLblcLz())); | |
| 363 | + sum.setLblcDm(Arith.add(sum.getLblcDm()!=null?sum.getLblcDm():0, c.getLblcDm())); | |
| 364 | + sum.setLblcGz(Arith.add(sum.getLblcGz()!=null?sum.getLblcGz():0, c.getLblcGz())); | |
| 365 | + sum.setLblcJf(Arith.add(sum.getLblcJf()!=null?sum.getLblcJf():0, c.getLblcJf())); | |
| 366 | + sum.setLblcZs(Arith.add(sum.getLblcZs()!=null?sum.getLblcZs():0, c.getLblcZs())); | |
| 367 | + sum.setLblcQr(Arith.add(sum.getLblcQr()!=null?sum.getLblcQr():0, c.getLblcQr())); | |
| 368 | + sum.setLblcQc(Arith.add(sum.getLblcQc()!=null?sum.getLblcQc():0, c.getLblcQc())); | |
| 369 | + sum.setLblcKx(Arith.add(sum.getLblcKx()!=null?sum.getLblcKx():0, c.getLblcKx())); | |
| 370 | + sum.setLblcQh(Arith.add(sum.getLblcQh()!=null?sum.getLblcQh():0, c.getLblcQh())); | |
| 371 | + sum.setLblcYw(Arith.add(sum.getLblcYw()!=null?sum.getLblcYw():0, c.getLblcYw())); | |
| 372 | + sum.setLblcQt(Arith.add(sum.getLblcQt()!=null?sum.getLblcQt():0, c.getLblcQt())); | |
| 373 | + sum.setJhyybc(sum.getJhyybc() + c.getJhyybc()); | |
| 374 | + sum.setJhyybczgf(sum.getJhyybczgf() + c.getJhyybczgf()); | |
| 375 | + sum.setJhyybcwgf(sum.getJhyybcwgf() + c.getJhyybcwgf()); | |
| 376 | + sum.setSjyybc(sum.getSjyybc() + c.getSjyybc()); | |
| 377 | + sum.setSjyybczgf(sum.getSjyybczgf() + c.getSjyybczgf()); | |
| 378 | + sum.setSjyybcwgf(sum.getSjyybcwgf() + c.getSjyybcwgf()); | |
| 379 | + sum.setLjbc(sum.getLjbc() + c.getLjbc()); | |
| 380 | + sum.setLjbczgf(sum.getLjbczgf() + c.getLjbczgf()); | |
| 381 | + sum.setLjbcwgf(sum.getLjbcwgf() + c.getLjbcwgf()); | |
| 382 | + sum.setFzbc(sum.getFzbc() + c.getFzbc()); | |
| 383 | + sum.setFzbczgf(sum.getFzbczgf() + c.getFzbczgf()); | |
| 384 | + sum.setFzbcwgf(sum.getFzbcwgf() + c.getFzbcwgf()); | |
| 385 | + sum.setDtbc(sum.getDtbc() + c.getDtbc()); | |
| 386 | + sum.setDtbczgf(sum.getDtbczgf() + c.getDtbczgf()); | |
| 387 | + sum.setDtbcwgf(sum.getDtbcwgf() + c.getDtbcwgf()); | |
| 388 | + } | |
| 389 | + if(lists.size() > 0){ | |
| 390 | + lists.add(sum); | |
| 391 | + } | |
| 392 | + | |
| 393 | + for(CalcWaybill c : lists){ | |
| 394 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 395 | + m.put("xlName", c.getXlName()); | |
| 396 | + m.put("jhzlc", Arith.add(c.getJhyylc(), c.getJhfyylc())); | |
| 397 | + m.put("jhlc", c.getJhyylc()); | |
| 398 | + m.put("jcclc", c.getJhfyylc()); | |
| 399 | +// m.put("sjzgl", Arith.add(Arith.add(c.getSjyylc(), c.getLjyylc()), Arith.add(c.getSjfyylc(), c.getLjfyylc()))); | |
| 400 | +// m.put("sjgl", Arith.add(c.getSjyylc(), c.getLjyylc())); | |
| 401 | +// m.put("sjksgl", Arith.add(c.getSjfyylc(), c.getLjfyylc())); | |
| 402 | + m.put("sjzgl", Arith.add(c.getSjyylc(), c.getSjfyylc())); | |
| 403 | + m.put("sjgl", c.getSjyylc()); | |
| 404 | + m.put("sjksgl", c.getSjfyylc()); | |
| 405 | + m.put("ssgl", c.getLblc()); | |
| 406 | + m.put("ssbc", c.getLbbc()); | |
| 407 | + m.put("ssgl_lz", c.getLblcLz()); | |
| 408 | + m.put("ssgl_dm", c.getLblcDm()); | |
| 409 | + m.put("ssgl_gz", c.getLblcGz()); | |
| 410 | + m.put("ssgl_jf", c.getLblcJf()); | |
| 411 | + m.put("ssgl_zs", c.getLblcZs()); | |
| 412 | + m.put("ssgl_qr", c.getLblcQr()); | |
| 413 | + m.put("ssgl_qc", c.getLblcQc()); | |
| 414 | + m.put("ssgl_kx", c.getLblcKx()); | |
| 415 | + m.put("ssgl_qh", c.getLblcQh()); | |
| 416 | + m.put("ssgl_yw", c.getLblcYw()); | |
| 417 | + m.put("ssgl_other", c.getLblcQt()); | |
| 418 | + m.put("ljgl", c.getLjyylc()); | |
| 419 | + m.put("jhbc", c.getJhyybc()); | |
| 420 | + m.put("jhbc_m", c.getJhyybczgf()); | |
| 421 | + m.put("jhbc_a", c.getJhyybcwgf()); | |
| 422 | + m.put("sjbc", c.getSjyybc()); | |
| 423 | + m.put("sjbc_m", c.getSjyybczgf()); | |
| 424 | + m.put("sjbc_a", c.getSjyybcwgf()); | |
| 425 | + m.put("ljbc", c.getLjbc()); | |
| 426 | + m.put("ljbc_m", c.getLjbczgf()); | |
| 427 | + m.put("ljbc_a", c.getLjbcwgf()); | |
| 428 | + m.put("fzbc", c.getFzbc()); | |
| 429 | + m.put("fzbc_m", c.getFzbczgf()); | |
| 430 | + m.put("fzbc_a", c.getFzbcwgf()); | |
| 431 | + m.put("dtbc", c.getDtbc()); | |
| 432 | + m.put("dtbc_m", c.getDtbczgf()); | |
| 433 | + m.put("dtbc_a", c.getDtbcwgf()); | |
| 434 | + resList.add(m); | |
| 435 | + } | |
| 436 | + | |
| 437 | + if (type != null && type.length() != 0 && type.equals("export")) { | |
| 438 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 439 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 440 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 441 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 442 | + m.put("date", date+"至"+date2); | |
| 443 | + ReportUtils ee = new ReportUtils(); | |
| 444 | + try { | |
| 445 | + String dateTime = ""; | |
| 446 | + if(date.equals(date2)){ | |
| 447 | + dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 448 | + } else { | |
| 449 | + dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 450 | + +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 451 | + } | |
| 452 | + listI.add(resList.iterator()); | |
| 453 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 454 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_.xls", | |
| 455 | + path + "export/" + dateTime + "-" + xlName + "-统计日报.xls"); | |
| 456 | + } catch (Exception e) { | |
| 457 | + // TODO: handle exception | |
| 458 | + //e.printStackTrace(); | |
| 459 | + logger.info("" , e); | |
| 460 | + } | |
| 461 | + } | |
| 462 | + | |
| 463 | + return resList; | |
| 464 | + } | |
| 465 | + | |
| 466 | + /** | |
| 467 | + * @param rq 格式如:2018-03-22(留空""默认当前日期前四天) | |
| 468 | + * @param line (留空""默认全部线路) | |
| 469 | + */ | |
| 470 | + @Transactional | |
| 471 | + @Override | |
| 472 | + public String calcDaily(String rq, String line) throws Exception{ | |
| 473 | + String result = ""; | |
| 474 | + try { | |
| 475 | + List<String> dateList = new ArrayList<String>(); | |
| 476 | + if(rq == null || rq.trim().length() == 0){ | |
| 477 | + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); | |
| 478 | + Date dNow = new Date(); //当前时间 | |
| 479 | + Date dBefore = new Date(); | |
| 480 | + Calendar calendar = Calendar.getInstance(); //得到日历 | |
| 481 | + calendar.setTime(dNow);//把当前时间赋给日历 | |
| 482 | + calendar.add(Calendar.DAY_OF_MONTH, -4); //设置为前一天 | |
| 483 | + dBefore = calendar.getTime(); //得到前一天的时间 | |
| 484 | +// rq = sdf.format(dBefore); | |
| 485 | + dateList.add(sdf.format(dBefore)); | |
| 486 | + Date date = new Date(); | |
| 487 | + date.setTime(dBefore.getTime() - 1l*1000*60*60*24); | |
| 488 | + dateList.add(sdf.format(date)); | |
| 489 | + } else { | |
| 490 | +// rq = rq.trim(); | |
| 491 | + dateList.add(rq.trim()); | |
| 492 | + } | |
| 493 | + if(line == null || line.trim().length() == 0){ | |
| 494 | + line = ""; | |
| 495 | + } else { | |
| 496 | + line = line.trim(); | |
| 497 | + } | |
| 498 | + | |
| 499 | + for(int j = 0; j < dateList.size(); j++){ | |
| 500 | + rq = dateList.get(j); | |
| 501 | + | |
| 502 | + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); | |
| 503 | + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>(); | |
| 504 | + List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>(); | |
| 505 | + | |
| 506 | + String gsSql="select gs_bm, fgs_bm from bsth_c_s_sp_info_real where schedule_date_str = '"+rq+"'"; | |
| 507 | + if(line.trim().length() > 0) | |
| 508 | + gsSql += " and xl_bm = '"+line+"'"; | |
| 509 | + gsSql += " group by gs_bm, fgs_bm"; | |
| 510 | + List<Map<String, String>> gsList=jdbcTemplate.query(gsSql, new RowMapper<Map<String, String>>() { | |
| 511 | + @Override | |
| 512 | + public Map<String, String> mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 513 | + Map<String, String> m = new HashMap<String, String>(); | |
| 514 | + m.put("gsdm", arg0.getString("gs_bm")); | |
| 515 | + m.put("fgsdm", arg0.getString("fgs_bm")); | |
| 516 | + return m; | |
| 517 | + }}); | |
| 518 | + | |
| 519 | + //查询所有线路 | |
| 520 | + for(Map<String, String> m : gsList){ | |
| 521 | + list.addAll(calcStatisticsRepository.scheduleByDateAndLine(line, rq, rq, m.get("gsdm"), m.get("fgsdm"))); | |
| 522 | + } | |
| 523 | + | |
| 524 | + List<CalcInterval> listInterval=calcIntervalRepository.selectByDateAndCompany(rq, "", "",""); | |
| 525 | + Map<String,CalcInterval> mapInterval=new HashMap<String,CalcInterval>(); | |
| 526 | + for (int i = 0; i < listInterval.size(); i++) { | |
| 527 | + CalcInterval c=listInterval.get(i); | |
| 528 | + mapInterval.put(c.getXlBm(), c); | |
| 529 | + } | |
| 530 | + | |
| 531 | + | |
| 532 | + for (int i = 0; i < list.size(); i++) { | |
| 533 | + ScheduleRealInfo s=list.get(i); | |
| 534 | + Set<ChildTaskPlan> cts = s.getcTasks(); | |
| 535 | + if(cts != null && cts.size() > 0){ | |
| 536 | + list_s.add(s); | |
| 537 | + }else{ | |
| 538 | + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){ | |
| 539 | + list_s.add(s); | |
| 540 | + } | |
| 541 | + } | |
| 542 | + } | |
| 543 | + List<CalcStatistics> lMap = new ArrayList<CalcStatistics>(); | |
| 544 | + for (int i = 0; i < list.size(); i++) { | |
| 545 | + if(i<list.size()-1){ | |
| 546 | + if(list.get(i+1).getXlBm().equals(list.get(i).getXlBm())){ | |
| 547 | + lists.add(list.get(i)); | |
| 548 | + }else{ | |
| 549 | + lists.add(list.get(i)); | |
| 550 | + CalcInterval t=null; | |
| 551 | + if(mapInterval.get(lists.get(0).getXlBm())!=null){ | |
| 552 | + t=mapInterval.get(lists.get(0).getXlBm()); | |
| 553 | + } | |
| 554 | + | |
| 555 | + CalcStatistics s=staticTj(lists,t); | |
| 556 | + lMap.add(s); | |
| 557 | + lists=new ArrayList<ScheduleRealInfo>(); | |
| 558 | + } | |
| 559 | + }else{ | |
| 560 | + if(list.get(i).getXlBm().equals(list.get(i-1).getXlBm())){ | |
| 561 | + lists.add(list.get(i)); | |
| 562 | + CalcInterval t=null; | |
| 563 | + if(mapInterval.get(lists.get(0).getXlBm())!=null){ | |
| 564 | + t=mapInterval.get(lists.get(0).getXlBm()); | |
| 565 | + } | |
| 566 | + CalcStatistics s=staticTj(lists,t); | |
| 567 | + lMap.add(s); | |
| 568 | + }else{ | |
| 569 | + lists=new ArrayList<ScheduleRealInfo>(); | |
| 570 | + lists.add(list.get(i)); | |
| 571 | + CalcInterval t=null; | |
| 572 | + if(mapInterval.get(lists.get(0).getXlBm())!=null){ | |
| 573 | + t=mapInterval.get(lists.get(0).getXlBm()); | |
| 574 | + } | |
| 575 | + CalcStatistics s=staticTj(lists,t); | |
| 576 | + lMap.add(s); | |
| 577 | + } | |
| 578 | + } | |
| 579 | + } | |
| 580 | + // Collections.sort(lMap,new AccountXlbm()); | |
| 581 | + | |
| 582 | + if(line.trim().length() > 0){ | |
| 583 | + calcStatisticsRepository.deleteByDateAndLine(rq, line); | |
| 584 | + } else { | |
| 585 | + calcStatisticsRepository.deleteByDate(rq); | |
| 586 | + } | |
| 587 | + calcStatisticsRepository.saveAll(lMap); | |
| 588 | + | |
| 589 | + } | |
| 590 | + | |
| 591 | + result = "success"; | |
| 592 | + } catch (Exception e) { | |
| 593 | + // TODO: handle exception | |
| 594 | + throw e; | |
| 595 | + }finally{ | |
| 596 | + logger.info("result:"+result); | |
| 597 | + } | |
| 598 | + return result; | |
| 599 | + } | |
| 600 | + | |
| 601 | + public final CalcStatistics staticTj(List<ScheduleRealInfo> list,CalcInterval t){ | |
| 602 | + | |
| 603 | + List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>(); | |
| 604 | + for(int i=0;i<list.size();i++){ | |
| 605 | + ScheduleRealInfo s=list.get(i); | |
| 606 | + Set<ChildTaskPlan> cts = s.getcTasks(); | |
| 607 | + if(cts != null && cts.size() > 0){ | |
| 608 | + lists.add(s); | |
| 609 | + }else{ | |
| 610 | + if(s.getZdsjActual()!=null&& s.getFcsjActual()!=null){ | |
| 611 | + lists.add(s); | |
| 612 | + } | |
| 613 | + } | |
| 614 | + } | |
| 615 | +// Map<String, Object> map = new HashMap<String, Object>(); | |
| 616 | + CalcStatistics s = new CalcStatistics(); | |
| 617 | + if(list.size() > 0){ | |
| 618 | + ScheduleRealInfo sche = list.get(0); | |
| 619 | + s.setXl(sche.getXlBm()); | |
| 620 | + s.setXlName(sche.getXlName()); | |
| 621 | + s.setDate(sche.getScheduleDate()); | |
| 622 | + s.setDateStr(sche.getScheduleDateStr()); | |
| 623 | + s.setGsdm(sche.getGsBm()); | |
| 624 | + s.setFgsdm(sche.getFgsBm()); | |
| 625 | + | |
| 626 | + double jhyygl=culateService.culateJhgl(list);//计划营运公里 | |
| 627 | + double jhjcclc= culateService.culateJhJccgl(list);//计划进出场公里(计划空驶公里) | |
| 628 | + s.setJhyylc(jhyygl); | |
| 629 | + s.setJhkslc(jhjcclc); | |
| 630 | + s.setJhzlc(Arith.add(jhyygl, jhjcclc)); | |
| 631 | + | |
| 632 | + double ljgl= culateService.culateLjgl(lists); | |
| 633 | + double sjyygl= culateService.culateSjgl(lists); | |
| 634 | + double zyygl= Arith.add(sjyygl,ljgl); | |
| 635 | + | |
| 636 | + double ljksgl= culateService.culateLjksgl(lists); | |
| 637 | + double sjjccgl=culateService.culateJccgl(lists); | |
| 638 | + double sjksgl=culateService.culateKsgl(lists); | |
| 639 | + double zksgl=Arith.add(sjjccgl, sjksgl); | |
| 640 | + s.setSjyylc(zyygl); | |
| 641 | + s.setSjkslc(zksgl); | |
| 642 | + s.setSjzlc(Arith.add(zyygl, zksgl)); | |
| 643 | + | |
| 644 | + s.setLjkslc(ljksgl); | |
| 645 | + | |
| 646 | + s.setSslc(culateService.culateLbgl(list)); | |
| 647 | + s.setSsbc(culateService.culateLbbc(list)); | |
| 648 | + | |
| 649 | + //计划+临加-少驶=实驶 | |
| 650 | +// double jl=Arith.sub(Arith.add(jhyygl, ljgl),ssgl); | |
| 651 | +// if(jl==zyygl){ | |
| 652 | +// map.put("zt", 0); | |
| 653 | +// }else{ | |
| 654 | +// map.put("zt", 1); | |
| 655 | +// } | |
| 656 | + | |
| 657 | + s.setLzlc(culateService.culateCJLC(list, "路阻")); | |
| 658 | + s.setDmlc(culateService.culateCJLC(list, "吊慢")); | |
| 659 | + s.setGzlc(culateService.culateCJLC(list, "故障")); | |
| 660 | + s.setJflc(culateService.culateCJLC(list, "纠纷")); | |
| 661 | + s.setZslc(culateService.culateCJLC(list, "肇事")); | |
| 662 | + s.setQrlc(culateService.culateCJLC(list, "缺人")); | |
| 663 | + s.setQclc(culateService.culateCJLC(list, "缺车")); | |
| 664 | + s.setKxlc(culateService.culateCJLC(list, "客稀")); | |
| 665 | + s.setQhlc(culateService.culateCJLC(list, "气候")); | |
| 666 | + s.setYwlc(culateService.culateCJLC(list, "援外")); | |
| 667 | + double ssgl_pc=culateService.culateCJLC(list, "配车"); | |
| 668 | + double ssgl_by=culateService.culateCJLC(list, "保养"); | |
| 669 | + double ssgl_cj=culateService.culateCJLC(list, "抽减"); | |
| 670 | + double ssgl_qt=culateService.culateCJLC(list, "其他"); | |
| 671 | + s.setQtlc(Arith.add(Arith.add(ssgl_pc, ssgl_by),Arith.add(ssgl_cj, ssgl_qt))); | |
| 672 | + s.setLjlc(ljgl); | |
| 673 | + | |
| 674 | + s.setJhbcq(culateService.culateJhbc(list,"")); | |
| 675 | + s.setJhbcz(culateService.culateJhbc(list, "zgf")); | |
| 676 | + s.setJhbcw(culateService.culateJhbc(list, "wgf")); | |
| 677 | + s.setSjbcq(culateService.culateSjbc(lists,"")); | |
| 678 | + s.setSjbcz(culateService.culateSjbc(lists,"zgf")); | |
| 679 | + s.setSjbcw(culateService.culateSjbc(lists,"wgf")); | |
| 680 | + s.setLjbcq(culateService.culateLjbc(lists,"")); | |
| 681 | + s.setLjbcz(culateService.culateLjbc(lists,"zgf")); | |
| 682 | + s.setLjbcw(culateService.culateLjbc(lists,"wgf")); | |
| 683 | + s.setFzbcq(culateService.culateFzbc(lists, "")); | |
| 684 | + s.setFzbcz(culateService.culateFzbc(lists, "zgf")); | |
| 685 | + s.setFzbcw(culateService.culateFzbc(lists, "wgf")); | |
| 686 | + s.setDtbcq(0); | |
| 687 | + s.setDtbcz(0); | |
| 688 | + s.setDtbcw(0); | |
| 689 | + if(t==null){ | |
| 690 | + Map<String, Object> m_=culateService.culateDjg(lists, list.get(0).getXlBm()); | |
| 691 | + if(m_.containsKey("djgcsq") && m_.get("djgcsq")!=null) | |
| 692 | + s.setDjgq(Integer.valueOf(m_.get("djgcsq").toString())); | |
| 693 | + else | |
| 694 | + s.setDjgq(0); | |
| 695 | + if(m_.containsKey("djgcsz") && m_.get("djgcsz")!=null) | |
| 696 | + s.setDjgz(Integer.valueOf(m_.get("djgcsz").toString())); | |
| 697 | + else | |
| 698 | + s.setDjgz(0); | |
| 699 | + if(m_.containsKey("djgcsw") && m_.get("djgcsw")!=null) | |
| 700 | + s.setDjgw(Integer.valueOf(m_.get("djgcsw").toString())); | |
| 701 | + else | |
| 702 | + s.setDjgw(0); | |
| 703 | + if(m_.containsKey("djgsj") && m_.get("djgsj")!=null) | |
| 704 | + s.setDjgsj(Integer.valueOf(m_.get("djgsj").toString())); | |
| 705 | + else | |
| 706 | + s.setDjgsj(0); | |
| 707 | + }else{ | |
| 708 | + s.setDjgq(t.getDjgAll()); | |
| 709 | + s.setDjgz(t.getDjgZgf()); | |
| 710 | + s.setDjgw(t.getDjgWgf()); | |
| 711 | + s.setDjgsj(t.getDjgTime()); | |
| 712 | + } | |
| 713 | + } | |
| 714 | + return s; | |
| 715 | + } | |
| 716 | + | |
| 717 | + class AccountXlbm implements Comparator<Map<String, Object>>{ | |
| 718 | + @Override | |
| 719 | + public int compare(Map<String, Object> o1, Map<String, Object> o2) { | |
| 720 | + // TODO Auto-generated method stub | |
| 721 | +// PinyinHelper.convertToPinyinString(ppy.getName(), | |
| 722 | +// "" , PinyinFormat.WITHOUT_TONE) | |
| 723 | + return o1.get("xlNamePy").toString().compareTo( | |
| 724 | + o2.get("xlNamePy").toString()); | |
| 725 | + } | |
| 726 | + } | |
| 727 | + | |
| 728 | + class AccountXlbmStr implements Comparator<String>{ | |
| 729 | + @Override | |
| 730 | + public int compare(String o1, String o2) { | |
| 731 | + // TODO Auto-generated method stub | |
| 732 | + return o1.compareTo(o2); | |
| 733 | + } | |
| 734 | + } | |
| 735 | + | |
| 736 | + @Override | |
| 737 | + public List<CalcStatistics> calcStatisticsDaily(String gsdm, String fgsdm, | |
| 738 | + String line, String date, String date2, String xlName, String type,String nature) { | |
| 739 | + // TODO Auto-generated method stub | |
| 740 | + List<CalcStatistics> listAll = new ArrayList<CalcStatistics>(); | |
| 741 | + if(line.length() > 0){ | |
| 742 | + listAll = calcStatisticsRepository.selectByDateAndLineTj2(line, date, date2); | |
| 743 | + } else { | |
| 744 | + listAll = calcStatisticsRepository.selectByDateAndLineTj(line, date, date2, gsdm, fgsdm); | |
| 745 | + } | |
| 746 | + Map<String, Boolean> lineMap=lineService.lineNature(); | |
| 747 | + List<CalcStatistics> list = new ArrayList<CalcStatistics>(); | |
| 748 | + if(nature.equals("0")){ | |
| 749 | + list=listAll; | |
| 750 | + }else{ | |
| 751 | + for (int i = 0; i < listAll.size(); i++) { | |
| 752 | + CalcStatistics c=listAll.get(i); | |
| 753 | + if(nature.equals("1")){ | |
| 754 | + if(lineMap.get(c.getXl())){ | |
| 755 | + list.add(c); | |
| 756 | + } | |
| 757 | + }else{ | |
| 758 | + if(!lineMap.get(c.getXl())){ | |
| 759 | + list.add(c); | |
| 760 | + } | |
| 761 | + } | |
| 762 | + } | |
| 763 | + } | |
| 764 | + List<CalcStatistics> resList = new ArrayList<CalcStatistics>(); | |
| 765 | + Map<String, List<CalcStatistics>> keyMap = new HashMap<String, List<CalcStatistics>>(); | |
| 766 | + List<String> keyList = new ArrayList<String>(); | |
| 767 | + | |
| 768 | + for(CalcStatistics s : list){ | |
| 769 | + try { | |
| 770 | +// String key = PinyinHelper.convertToPinyinString(s.getXl(), "" , PinyinFormat.WITHOUT_TONE); | |
| 771 | + String key =s.getFgsdm()+s.getXl(); | |
| 772 | +// if(line.equals("")){ | |
| 773 | +// key =s.getFgsdm()+s.getXl(); | |
| 774 | +// }else{ | |
| 775 | +// key =s.getXl(); | |
| 776 | +// } | |
| 777 | + if(!keyMap.containsKey(key)){ | |
| 778 | + keyMap.put(key, new ArrayList<CalcStatistics>()); | |
| 779 | + keyList.add(key); | |
| 780 | + } | |
| 781 | + keyMap.get(key).add(s); | |
| 782 | + } catch (Exception e) { | |
| 783 | + // TODO Auto-generated catch block | |
| 784 | + e.printStackTrace(); | |
| 785 | + } | |
| 786 | + } | |
| 787 | + Collections.sort(keyList, new AccountXlbmStr()); | |
| 788 | + | |
| 789 | + for(String key : keyList){ | |
| 790 | + if(keyMap.get(key).size() > 0){ | |
| 791 | + CalcStatistics s = keyMap.get(key).get(0); | |
| 792 | + if(keyMap.get(key).size() > 1) | |
| 793 | + for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 794 | + CalcStatistics s_ = keyMap.get(key).get(i); | |
| 795 | + s = addStatistics(s, s_); | |
| 796 | + } | |
| 797 | +// if(line.equals("")){ | |
| 798 | + s.setFgsName(BasicData.businessFgsCodeNameMap.get(s.getFgsdm()+"_"+s.getGsdm())); | |
| 799 | + /*}else{ | |
| 800 | + List<Line> l=lineRepository.findLineByCode(line); | |
| 801 | + if(l.size()>0) | |
| 802 | + s.setFgsName(BasicData.businessFgsCodeNameMap.get(l.get(0).getBrancheCompany()+"_"+l.get(0).getCompany())); | |
| 803 | + }*/ | |
| 804 | + resList.add(s); | |
| 805 | + } | |
| 806 | + } | |
| 807 | + | |
| 808 | + if(resList.size() > 0){ | |
| 809 | + CalcStatistics temp = new CalcStatistics(); | |
| 810 | + temp.setXlName("合计"); | |
| 811 | + temp.setFgsName(""); | |
| 812 | + for(CalcStatistics s : resList){ | |
| 813 | + temp = addStatistics(temp, s); | |
| 814 | + } | |
| 815 | + resList.add(temp); | |
| 816 | + } | |
| 817 | + | |
| 818 | + List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>(); | |
| 819 | + for(CalcStatistics c : resList){ | |
| 820 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 821 | + m.put("fgsName", c.getFgsName()); | |
| 822 | + m.put("xlName", c.getXlName()); | |
| 823 | + m.put("jhzlc", c.getJhzlc()); | |
| 824 | + m.put("jhlc", c.getJhyylc()); | |
| 825 | + m.put("jcclc", c.getJhkslc()); | |
| 826 | + m.put("sjzgl", c.getSjzlc()); | |
| 827 | + m.put("sjgl", c.getSjyylc()); | |
| 828 | + m.put("sjksgl", c.getSjkslc()); | |
| 829 | + m.put("ssgl", c.getSslc()); | |
| 830 | + m.put("ssbc", c.getSsbc()); | |
| 831 | + m.put("ssgl_lz", c.getLzlc()); | |
| 832 | + m.put("ssgl_dm", c.getDmlc()); | |
| 833 | + m.put("ssgl_gz", c.getGzlc()); | |
| 834 | + m.put("ssgl_jf", c.getJflc()); | |
| 835 | + m.put("ssgl_zs", c.getZslc()); | |
| 836 | + m.put("ssgl_qr", c.getQrlc()); | |
| 837 | + m.put("ssgl_qc", c.getQclc()); | |
| 838 | + m.put("ssgl_kx", c.getKxlc()); | |
| 839 | + m.put("ssgl_qh", c.getQhlc()); | |
| 840 | + m.put("ssgl_yw", c.getYwlc()); | |
| 841 | + m.put("ssgl_other", c.getQtlc()); | |
| 842 | + m.put("ljgl", c.getLjlc()); | |
| 843 | + m.put("ljks", c.getLjkslc()); | |
| 844 | + m.put("jhbc", c.getJhbcq()); | |
| 845 | + m.put("jhbc_m", c.getJhbcz()); | |
| 846 | + m.put("jhbc_a", c.getJhbcw()); | |
| 847 | + m.put("sjbc", c.getSjbcq()); | |
| 848 | + m.put("sjbc_m", c.getSjbcz()); | |
| 849 | + m.put("sjbc_a", c.getSjbcw()); | |
| 850 | + m.put("ljbc", c.getLjbcq()); | |
| 851 | + m.put("ljbc_m", c.getLjbcz()); | |
| 852 | + m.put("ljbc_a", c.getLjbcw()); | |
| 853 | + m.put("fzbc", c.getFzbcq()); | |
| 854 | + m.put("fzbc_m", c.getFzbcz()); | |
| 855 | + m.put("fzbc_a", c.getFzbcw()); | |
| 856 | + m.put("dtbc", c.getDtbcq()); | |
| 857 | + m.put("dtbc_m", c.getDtbcz()); | |
| 858 | + m.put("dtbc_a", c.getDtbcw()); | |
| 859 | + m.put("djg", c.getDjgq()); | |
| 860 | + m.put("djg_m", c.getDjgz()); | |
| 861 | + m.put("djg_a", c.getDjgw()); | |
| 862 | + m.put("djg_time", c.getDjgsj()); | |
| 863 | + mapList.add(m); | |
| 864 | + } | |
| 865 | + | |
| 866 | + if (type != null && type.length() != 0 && type.equals("export")) { | |
| 867 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 868 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 869 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 870 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 871 | + m.put("date", date+"至"+date2); | |
| 872 | + ReportUtils ee = new ReportUtils(); | |
| 873 | + try { | |
| 874 | + String dateTime = ""; | |
| 875 | + if(date.equals(date2)){ | |
| 876 | + dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 877 | + } else { | |
| 878 | + dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 879 | + +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 880 | + } | |
| 881 | + listI.add(mapList.iterator()); | |
| 882 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 883 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_.xls", | |
| 884 | + path + "export/" + dateTime + "-" + xlName + "-统计日报.xls"); | |
| 885 | + } catch (Exception e) { | |
| 886 | + // TODO: handle exception | |
| 887 | + //e.printStackTrace(); | |
| 888 | + logger.info("" , e); | |
| 889 | + } | |
| 890 | + } | |
| 891 | + | |
| 892 | + return resList; | |
| 893 | + } | |
| 894 | + | |
| 895 | + @Override | |
| 896 | + public List<Map<String, Object>> calcStatisticsDaily2(String gsdm, String fgsdm, | |
| 897 | + String line, String date, String date2, String xlName, String type,String nature) { | |
| 898 | + // TODO Auto-generated method stub | |
| 899 | + SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd"); | |
| 900 | + Date beginDate = new Date(); | |
| 901 | + Calendar calendar = Calendar.getInstance(); | |
| 902 | + calendar.setTime(beginDate); | |
| 903 | + calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 4); | |
| 904 | + String d2 = dft.format(calendar.getTime()); //当前日期前4天 | |
| 905 | + calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) +1); | |
| 906 | + String d3= dft.format(calendar.getTime()); //当前日期前3天 | |
| 907 | + | |
| 908 | + String d1=""; | |
| 909 | + String d4=""; | |
| 910 | + try { | |
| 911 | + long t3 = dft.parse(d2).getTime(); | |
| 912 | + long t1=dft.parse(date).getTime(); | |
| 913 | + long t2=dft.parse(date2).getTime(); | |
| 914 | + | |
| 915 | + if(t1<=t3 && t2>t3){ | |
| 916 | + //所选日期区间区间既有实时数据也有历史数据 | |
| 917 | + d1=date; | |
| 918 | + d4=date2; | |
| 919 | + } else if (t1>t3&&t2>t3){ | |
| 920 | + d1=date; | |
| 921 | + d2=date2; | |
| 922 | + d3=date; | |
| 923 | + d4=date2; | |
| 924 | + }else{ | |
| 925 | + d1=date; | |
| 926 | + d2=date2; | |
| 927 | + //实时数据无需 | |
| 928 | + d3=""; | |
| 929 | + d4=""; | |
| 930 | + } | |
| 931 | + } catch (ParseException e1) { | |
| 932 | + // TODO Auto-generated catch block | |
| 933 | + e1.printStackTrace(); | |
| 934 | + } | |
| 935 | + | |
| 936 | + | |
| 937 | + List<CalcStatistics> listAll = new ArrayList<CalcStatistics>(); | |
| 938 | + if(line.length() > 0){ | |
| 939 | + listAll = calcStatisticsRepository.selectByDateAndLineTj2(line, d1, d2); | |
| 940 | + } else { | |
| 941 | + listAll = calcStatisticsRepository.selectByDateAndLineTj(line, d1, d2, gsdm, fgsdm); | |
| 942 | + } | |
| 943 | + Map<String, Boolean> lineMap=lineService.lineNature(); | |
| 944 | + List<CalcStatistics> list=new ArrayList<CalcStatistics>(); | |
| 945 | + | |
| 946 | + for (int i = 0; i < listAll.size(); i++) { | |
| 947 | + CalcStatistics s=listAll.get(i); | |
| 948 | + if(nature.equals("0")){ | |
| 949 | + list.add(s); | |
| 950 | + }else if(nature.equals("1")){ | |
| 951 | + if(lineMap.containsKey(s.getXl()) && lineMap.get(s.getXl())){ | |
| 952 | + list.add(s); | |
| 953 | + } | |
| 954 | + }else{ | |
| 955 | + if(lineMap.containsKey(s.getXl()) && !lineMap.get(s.getXl())){ | |
| 956 | + list.add(s); | |
| 957 | + } | |
| 958 | + } | |
| 959 | + } | |
| 960 | + List<CalcStatistics> resList = new ArrayList<CalcStatistics>(); | |
| 961 | + Map<String, List<CalcStatistics>> keyMap = new HashMap<String, List<CalcStatistics>>(); | |
| 962 | + List<String> keyList = new ArrayList<String>(); | |
| 963 | + | |
| 964 | + for(CalcStatistics s : list){ | |
| 965 | + try { | |
| 966 | +// String key = PinyinHelper.convertToPinyinString(s.getXlName(), "" , PinyinFormat.WITHOUT_TONE); | |
| 967 | + String key =s.getFgsdm()+s.getXl(); | |
| 968 | +// if(line.equals("")){ | |
| 969 | +// key =s.getFgsdm()+s.getXl(); | |
| 970 | +// }else{ | |
| 971 | +// key =s.getXl(); | |
| 972 | +// } | |
| 973 | + if(!keyMap.containsKey(key)){ | |
| 974 | + keyMap.put(key, new ArrayList<CalcStatistics>()); | |
| 975 | + keyList.add(key); | |
| 976 | + } | |
| 977 | + keyMap.get(key).add(s); | |
| 978 | + } catch (Exception e) { | |
| 979 | + // TODO Auto-generated catch block | |
| 980 | + e.printStackTrace(); | |
| 981 | + } | |
| 982 | + } | |
| 983 | + Collections.sort(keyList, new AccountXlbmStr()); | |
| 984 | + | |
| 985 | + for(String key : keyList){ | |
| 986 | + if(keyMap.get(key).size() > 0){ | |
| 987 | + CalcStatistics s = keyMap.get(key).get(0); | |
| 988 | + if(keyMap.get(key).size() > 1) | |
| 989 | + for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 990 | + CalcStatistics s_ = keyMap.get(key).get(i); | |
| 991 | + s = addStatistics(s, s_); | |
| 992 | + } | |
| 993 | + resList.add(s); | |
| 994 | + } | |
| 995 | + } | |
| 996 | + | |
| 997 | + if(resList.size() > 0){ | |
| 998 | + CalcStatistics temp = new CalcStatistics(); | |
| 999 | + temp.setXlName("合计"); | |
| 1000 | + temp.setXl("hj"); | |
| 1001 | + for(CalcStatistics s : resList){ | |
| 1002 | + temp = addStatistics(temp, s); | |
| 1003 | + } | |
| 1004 | + resList.add(temp); | |
| 1005 | + } | |
| 1006 | + //统计数据 | |
| 1007 | + List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>(); | |
| 1008 | + for(CalcStatistics c : resList){ | |
| 1009 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 1010 | + if(c.getXl().equals("hj")){ | |
| 1011 | + m.put("fgsName", ""); | |
| 1012 | + m.put("fgsBm", ""); | |
| 1013 | + }else{ | |
| 1014 | + m.put("fgsName", BasicData.businessFgsCodeNameMap.get(c.getFgsdm()+"_"+c.getGsdm())); | |
| 1015 | + m.put("fgsBm", c.getFgsdm()); | |
| 1016 | + } | |
| 1017 | + m.put("xlBm", c.getXl()); | |
| 1018 | + m.put("xlName", c.getXlName()); | |
| 1019 | + m.put("jhzlc", c.getJhzlc()); | |
| 1020 | + m.put("jhlc", c.getJhyylc()); | |
| 1021 | + m.put("jcclc", c.getJhkslc()); | |
| 1022 | + m.put("sjzgl", c.getSjzlc()); | |
| 1023 | + m.put("sjgl", c.getSjyylc()); | |
| 1024 | + m.put("sjksgl", c.getSjkslc()); | |
| 1025 | + m.put("ssgl", c.getSslc()); | |
| 1026 | + m.put("ssbc", c.getSsbc()); | |
| 1027 | + m.put("ssgl_lz", c.getLzlc()); | |
| 1028 | + m.put("ssgl_dm", c.getDmlc()); | |
| 1029 | + m.put("ssgl_gz", c.getGzlc()); | |
| 1030 | + m.put("ssgl_jf", c.getJflc()); | |
| 1031 | + m.put("ssgl_zs", c.getZslc()); | |
| 1032 | + m.put("ssgl_qr", c.getQrlc()); | |
| 1033 | + m.put("ssgl_qc", c.getQclc()); | |
| 1034 | + m.put("ssgl_kx", c.getKxlc()); | |
| 1035 | + m.put("ssgl_qh", c.getQhlc()); | |
| 1036 | + m.put("ssgl_yw", c.getYwlc()); | |
| 1037 | + m.put("ssgl_other", c.getQtlc()); | |
| 1038 | + m.put("ljgl", c.getLjlc()); | |
| 1039 | + m.put("ljks", c.getLjkslc()); | |
| 1040 | + m.put("jhbc", c.getJhbcq()); | |
| 1041 | + m.put("jhbc_m", c.getJhbcz()); | |
| 1042 | + m.put("jhbc_a", c.getJhbcw()); | |
| 1043 | + m.put("sjbc", c.getSjbcq()); | |
| 1044 | + m.put("sjbc_m", c.getSjbcz()); | |
| 1045 | + m.put("sjbc_a", c.getSjbcw()); | |
| 1046 | + m.put("ljbc", c.getLjbcq()); | |
| 1047 | + m.put("ljbc_m", c.getLjbcz()); | |
| 1048 | + m.put("ljbc_a", c.getLjbcw()); | |
| 1049 | + m.put("fzbc", c.getFzbcq()); | |
| 1050 | + m.put("fzbc_m", c.getFzbcz()); | |
| 1051 | + m.put("fzbc_a", c.getFzbcw()); | |
| 1052 | + m.put("dtbc", c.getDtbcq()); | |
| 1053 | + m.put("dtbc_m", c.getDtbcz()); | |
| 1054 | + m.put("dtbc_a", c.getDtbcw()); | |
| 1055 | + m.put("djg", c.getDjgq()); | |
| 1056 | + m.put("djg_m", c.getDjgz()); | |
| 1057 | + m.put("djg_a", c.getDjgw()); | |
| 1058 | + m.put("djg_time", c.getDjgsj()); | |
| 1059 | + double jl = Arith.sub(Arith.add(m.get("jhlc"), m.get("ljgl")), m.get("ssgl")); | |
| 1060 | + if (jl == Double.parseDouble(m.get("sjgl").toString())) { | |
| 1061 | + m.put("zt", 0); | |
| 1062 | + } else { | |
| 1063 | + m.put("zt", 1); | |
| 1064 | + } | |
| 1065 | + mapList.add(m); | |
| 1066 | + } | |
| 1067 | + | |
| 1068 | + //实时数据 | |
| 1069 | + List<Map<String, Object>> tjlist=new ArrayList<Map<String, Object>>(); | |
| 1070 | + if(!d4.equals("")){ | |
| 1071 | + tjlist= scheduleRealInfoService.statisticsDailyTjHb(gsdm, fgsdm, line, d3, d4, xlName, type,nature); | |
| 1072 | + } | |
| 1073 | + List<Map<String, Object>> mapListHj = new ArrayList<Map<String, Object>>(); | |
| 1074 | +// List<String> lineList=new ArrayList<String>(); | |
| 1075 | + Map<String, Object> kMap=new HashMap<String,Object>(); | |
| 1076 | + mapList.addAll(tjlist); | |
| 1077 | + for (int i = 0; i < mapList.size(); i++) { | |
| 1078 | + Map<String, Object> m =mapList.get(i); | |
| 1079 | +// if(line.equals("")){ | |
| 1080 | + if(kMap.get(m.get("fgsBm")+"_"+m.get("xlBm").toString())==null){ | |
| 1081 | + kMap.put(m.get("fgsBm")+"_"+m.get("xlBm").toString(), m.get("fgsBm")+"_"+m.get("xlBm").toString()); | |
| 1082 | + } | |
| 1083 | +// }else{ | |
| 1084 | +// if(kMap.get(m.get("xlBm").toString())==null){ | |
| 1085 | +// kMap.put(m.get("xlBm").toString(), m.get("xlBm").toString()); | |
| 1086 | +// } | |
| 1087 | +// } | |
| 1088 | + | |
| 1089 | + } | |
| 1090 | + for (Object xlbm : kMap.keySet()) { | |
| 1091 | + Map<String, Object> hjMap = new HashMap<String, Object>(); | |
| 1092 | + for (int i = 0; i < mapList.size(); i++) { | |
| 1093 | + Map<String, Object> lsMap=mapList.get(i); | |
| 1094 | + String xlbm_=""; | |
| 1095 | +// if(line.equals("")){ | |
| 1096 | + xlbm_=lsMap.get("fgsBm").toString()+"_"+lsMap.get("xlBm").toString(); | |
| 1097 | +// }else{ | |
| 1098 | +// xlbm_=lsMap.get("xlBm").toString(); | |
| 1099 | +// } | |
| 1100 | + if (xlbm_.equals(xlbm)) { | |
| 1101 | + if(hjMap.get("xlBm")==null){ | |
| 1102 | + hjMap.put("xlBm", lsMap.get("xlBm")); | |
| 1103 | + hjMap.put("xlName", lsMap.get("xlName")); | |
| 1104 | + hjMap.put("fgsName", lsMap.get("fgsName")); | |
| 1105 | + try { | |
| 1106 | + if(lsMap.get("xlBm").toString().equals("hj")){ | |
| 1107 | + hjMap.put("xlNamePy", "zzzzz"); | |
| 1108 | + }else{ | |
| 1109 | + hjMap.put("xlNamePy", PinyinHelper.convertToPinyinString(lsMap.get("fgsBm").toString()+lsMap.get("xlName").toString(), "", PinyinFormat.WITHOUT_TONE)); | |
| 1110 | + } | |
| 1111 | + } catch (PinyinException e) { | |
| 1112 | + // TODO Auto-generated catch block | |
| 1113 | + e.printStackTrace(); | |
| 1114 | + } | |
| 1115 | + } | |
| 1116 | + hjMap.put("jhzlc", Arith.add(lsMap.get("jhzlc"), hjMap.get("jhzlc")==null?"0":hjMap.get("jhzlc"))); | |
| 1117 | + hjMap.put("jhlc", Arith.add(lsMap.get("jhlc"), hjMap.get("jhlc")==null?"0":hjMap.get("jhlc"))); | |
| 1118 | + hjMap.put("jcclc",Arith.add(lsMap.get("jcclc"), hjMap.get("jcclc")==null?"0":hjMap.get("jcclc"))); | |
| 1119 | + hjMap.put("sjzgl",Arith.add(lsMap.get("sjzgl"), hjMap.get("sjzgl")==null?"0": hjMap.get("sjzgl"))); | |
| 1120 | + hjMap.put("sjgl", Arith.add(lsMap.get("sjgl"), hjMap.get("sjgl")==null?"0":hjMap.get("sjgl"))); | |
| 1121 | + hjMap.put("sjksgl", Arith.add(lsMap.get("sjksgl"), hjMap.get("sjksgl")==null?"0":hjMap.get("sjksgl"))); | |
| 1122 | + hjMap.put("ssgl", Arith.add(lsMap.get("ssgl"), hjMap.get("ssgl")==null?"0":hjMap.get("ssgl"))); | |
| 1123 | + hjMap.put("ssbc", Integer.parseInt(lsMap.get("ssbc").toString())+Integer.parseInt(hjMap.get("ssbc")==null?"0":hjMap.get("ssbc").toString())); | |
| 1124 | + hjMap.put("ssgl_lz", Arith.add(lsMap.get("ssgl_lz"), hjMap.get("ssgl_lz")==null?"0":hjMap.get("ssgl_lz"))); | |
| 1125 | + hjMap.put("ssgl_dm", Arith.add(lsMap.get("ssgl_dm"), hjMap.get("ssgl_dm")==null?"0":hjMap.get("ssgl_dm"))); | |
| 1126 | + hjMap.put("ssgl_gz", Arith.add(lsMap.get("ssgl_gz"), hjMap.get("ssgl_gz")==null?"0":hjMap.get("ssgl_gz"))); | |
| 1127 | + hjMap.put("ssgl_jf", Arith.add(lsMap.get("ssgl_jf"), hjMap.get("ssgl_jf")==null?"0":hjMap.get("ssgl_jf"))); | |
| 1128 | + hjMap.put("ssgl_zs", Arith.add(lsMap.get("ssgl_zs"), hjMap.get("ssgl_zs")==null?"0":hjMap.get("ssgl_zs"))); | |
| 1129 | + hjMap.put("ssgl_qr", Arith.add(lsMap.get("ssgl_qr"), hjMap.get("ssgl_qr")==null?"0":hjMap.get("ssgl_qr"))); | |
| 1130 | + hjMap.put("ssgl_qc", Arith.add(lsMap.get("ssgl_qc"), hjMap.get("ssgl_qc")==null?"0":hjMap.get("ssgl_qc"))); | |
| 1131 | + hjMap.put("ssgl_kx", Arith.add(lsMap.get("ssgl_kx"), hjMap.get("ssgl_kx")==null?"0":hjMap.get("ssgl_kx"))); | |
| 1132 | + hjMap.put("ssgl_qh", Arith.add(lsMap.get("ssgl_qh"), hjMap.get("ssgl_qh")==null?"0":hjMap.get("ssgl_qh"))); | |
| 1133 | + hjMap.put("ssgl_yw", Arith.add(lsMap.get("ssgl_yw"), hjMap.get("ssgl_yw")==null?"0":hjMap.get("ssgl_yw"))); | |
| 1134 | + hjMap.put("ssgl_other", Arith.add(lsMap.get("ssgl_other"), hjMap.get("ssgl_other")==null?"0":hjMap.get("ssgl_other"))); | |
| 1135 | + hjMap.put("ljgl", Arith.add(lsMap.get("ljgl"), hjMap.get("ljgl")==null?"0":hjMap.get("ljgl"))); | |
| 1136 | + hjMap.put("ljks", Arith.add(lsMap.get("ljks"), hjMap.get("ljks")==null?"0":hjMap.get("ljks"))); | |
| 1137 | + hjMap.put("jhbc", Integer.parseInt(lsMap.get("jhbc").toString())+ Integer.parseInt(hjMap.get("jhbc")==null?"0":hjMap.get("jhbc").toString())); | |
| 1138 | + hjMap.put("jhbc_m", Integer.parseInt(lsMap.get("jhbc_m").toString())+Integer.parseInt(hjMap.get("jhbc_m")==null?"0":hjMap.get("jhbc_m").toString())); | |
| 1139 | + hjMap.put("jhbc_a", Integer.parseInt(lsMap.get("jhbc_a").toString())+ Integer.parseInt(hjMap.get("jhbc_a")==null?"0":hjMap.get("jhbc_a").toString())); | |
| 1140 | + hjMap.put("sjbc", Integer.parseInt(lsMap.get("sjbc").toString())+ Integer.parseInt(hjMap.get("sjbc")==null?"0":hjMap.get("sjbc").toString())); | |
| 1141 | + hjMap.put("sjbc_m",Integer.parseInt(lsMap.get("sjbc_m").toString())+ Integer.parseInt(hjMap.get("sjbc_m")==null?"0":hjMap.get("sjbc_m").toString())); | |
| 1142 | + hjMap.put("sjbc_a", Integer.parseInt(lsMap.get("sjbc_a").toString())+ Integer.parseInt(hjMap.get("sjbc_a")==null?"0":hjMap.get("sjbc_a").toString())); | |
| 1143 | + hjMap.put("ljbc", Integer.parseInt(lsMap.get("ljbc").toString())+ Integer.parseInt(hjMap.get("ljbc")==null?"0":hjMap.get("ljbc").toString())); | |
| 1144 | + hjMap.put("ljbc_m", Integer.parseInt(lsMap.get("ljbc_m").toString())+ Integer.parseInt(hjMap.get("ljbc_m")==null?"0":hjMap.get("ljbc_m").toString())); | |
| 1145 | + hjMap.put("ljbc_a", Integer.parseInt(lsMap.get("ljbc_a").toString())+Integer.parseInt(hjMap.get("ljbc_a")==null?"0":hjMap.get("ljbc_a").toString())); | |
| 1146 | + hjMap.put("fzbc", Integer.parseInt(lsMap.get("fzbc").toString())+ Integer.parseInt(hjMap.get("fzbc")==null?"0":hjMap.get("fzbc").toString())); | |
| 1147 | + hjMap.put("fzbc_m",Integer.parseInt(lsMap.get("fzbc_m").toString())+ Integer.parseInt(hjMap.get("fzbc_m")==null?"0":hjMap.get("fzbc_m").toString())); | |
| 1148 | + hjMap.put("fzbc_a",Integer.parseInt(lsMap.get("fzbc_a").toString())+ Integer.parseInt(hjMap.get("fzbc_a")==null?"0":hjMap.get("fzbc_a").toString())); | |
| 1149 | + hjMap.put("dtbc", Integer.parseInt(lsMap.get("dtbc").toString())+ Integer.parseInt(hjMap.get("dtbc")==null?"0":hjMap.get("dtbc").toString())); | |
| 1150 | + hjMap.put("dtbc_m", Integer.parseInt(lsMap.get("dtbc_m").toString())+ Integer.parseInt(hjMap.get("dtbc_m")==null?"0":hjMap.get("dtbc_m").toString())); | |
| 1151 | + hjMap.put("dtbc_a", Integer.parseInt(lsMap.get("dtbc_a").toString())+ Integer.parseInt(hjMap.get("dtbc_a")==null?"0":hjMap.get("dtbc_a").toString())); | |
| 1152 | + hjMap.put("djg", Integer.parseInt(lsMap.get("djg").toString())+ Integer.parseInt(hjMap.get("djg")==null?"0":hjMap.get("djg").toString())); | |
| 1153 | + hjMap.put("djg_m", Integer.parseInt(lsMap.get("djg_m").toString())+ Integer.parseInt(hjMap.get("djg_m")==null?"0":hjMap.get("djg_m").toString())); | |
| 1154 | + hjMap.put("djg_a", Integer.parseInt(lsMap.get("djg_a").toString())+ Integer.parseInt(hjMap.get("djg_a")==null?"0":hjMap.get("djg_a").toString())); | |
| 1155 | + if(hjMap.get("djg_time")==null){ | |
| 1156 | + hjMap.put("djg_time", lsMap.get("djg_time")); | |
| 1157 | + }else{ | |
| 1158 | + if(Arith.add(lsMap.get("djg_time"),0)>Arith.add(hjMap.get("djg_time"), 0)){ | |
| 1159 | + hjMap.put("djg_time", lsMap.get("djg_time")); | |
| 1160 | + }else{ | |
| 1161 | + hjMap.put("djg_time",hjMap.get("djg_time")); | |
| 1162 | + } | |
| 1163 | + } | |
| 1164 | + double jl = Arith.sub(Arith.add(hjMap.get("jhlc"), hjMap.get("ljgl")), hjMap.get("ssgl")); | |
| 1165 | + if (jl == Double.parseDouble(hjMap.get("sjgl").toString())) { | |
| 1166 | + hjMap.put("zt", 0); | |
| 1167 | + } else { | |
| 1168 | + hjMap.put("zt", 1); | |
| 1169 | + } | |
| 1170 | + } | |
| 1171 | + } | |
| 1172 | + mapListHj.add(hjMap); | |
| 1173 | + } | |
| 1174 | + | |
| 1175 | + Collections.sort(mapListHj, new AccountXlbmByping()); | |
| 1176 | + | |
| 1177 | + /*if(!line.equals("")){ | |
| 1178 | + for (int i = 0; i < mapListHj.size(); i++) { | |
| 1179 | + if(mapListHj.get(i).get("xlBm").equals(line)){ | |
| 1180 | + List<Line> l=lineRepository.findLineByCode(line); | |
| 1181 | + if(l.size()>0) | |
| 1182 | + mapListHj.get(i).put("fgsName", BasicData.businessFgsCodeNameMap.get(l.get(0).getBrancheCompany()+"_"+l.get(0).getCompany())); | |
| 1183 | + } | |
| 1184 | + } | |
| 1185 | + }*/ | |
| 1186 | + if (type != null && type.length() != 0 && type.equals("export")) { | |
| 1187 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 1188 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 1189 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 1190 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 1191 | + m.put("date", date+"至"+date2); | |
| 1192 | + ReportUtils ee = new ReportUtils(); | |
| 1193 | + try { | |
| 1194 | + String dateTime = ""; | |
| 1195 | + if(date.equals(date2)){ | |
| 1196 | + dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 1197 | + } else { | |
| 1198 | + dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 1199 | + +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 1200 | + } | |
| 1201 | + listI.add(mapListHj.iterator()); | |
| 1202 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 1203 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_2.xls", | |
| 1204 | + path + "export/" + dateTime + "-" + xlName + "-统计日报.xls"); | |
| 1205 | + } catch (Exception e) { | |
| 1206 | + // TODO: handle exception | |
| 1207 | + //e.printStackTrace(); | |
| 1208 | + logger.info("" , e); | |
| 1209 | + } | |
| 1210 | + } | |
| 1211 | + | |
| 1212 | + return mapListHj; | |
| 1213 | + } | |
| 1214 | + | |
| 1215 | + public CalcStatistics addStatistics(CalcStatistics s, CalcStatistics s_){ | |
| 1216 | + s.setJhzlc(Arith.add(s.getJhzlc()!=null?s.getJhzlc():0, s_.getJhzlc())); | |
| 1217 | + s.setJhyylc(Arith.add(s.getJhyylc()!=null?s.getJhyylc():0, s_.getJhyylc())); | |
| 1218 | + s.setJhkslc(Arith.add(s.getJhkslc()!=null?s.getJhkslc():0, s_.getJhkslc())); | |
| 1219 | + s.setSjzlc(Arith.add(s.getSjzlc()!=null?s.getSjzlc():0, s_.getSjzlc())); | |
| 1220 | + s.setSjyylc(Arith.add(s.getSjyylc()!=null?s.getSjyylc():0, s_.getSjyylc())); | |
| 1221 | + s.setSjkslc(Arith.add(s.getSjkslc()!=null?s.getSjkslc():0, s_.getSjkslc())); | |
| 1222 | + s.setSslc(Arith.add(s.getSslc()!=null?s.getSslc():0, s_.getSslc())); | |
| 1223 | + s.setSsbc(s.getSsbc() + s_.getSsbc()); | |
| 1224 | + s.setLzlc(Arith.add(s.getLzlc()!=null?s.getLzlc():0, s_.getLzlc())); | |
| 1225 | + s.setDmlc(Arith.add(s.getDmlc()!=null?s.getDmlc():0, s_.getDmlc())); | |
| 1226 | + s.setGzlc(Arith.add(s.getGzlc()!=null?s.getGzlc():0, s_.getGzlc())); | |
| 1227 | + s.setJflc(Arith.add(s.getJflc()!=null?s.getJflc():0, s_.getJflc())); | |
| 1228 | + s.setZslc(Arith.add(s.getZslc()!=null?s.getZslc():0, s_.getZslc())); | |
| 1229 | + s.setQrlc(Arith.add(s.getQrlc()!=null?s.getQrlc():0, s_.getQrlc())); | |
| 1230 | + s.setQclc(Arith.add(s.getQclc()!=null?s.getQclc():0, s_.getQclc())); | |
| 1231 | + s.setKxlc(Arith.add(s.getKxlc()!=null?s.getKxlc():0, s_.getKxlc())); | |
| 1232 | + s.setQhlc(Arith.add(s.getQhlc()!=null?s.getQhlc():0, s_.getQhlc())); | |
| 1233 | + s.setYwlc(Arith.add(s.getYwlc()!=null?s.getYwlc():0, s_.getYwlc())); | |
| 1234 | + s.setQtlc(Arith.add(s.getQtlc()!=null?s.getQtlc():0, s_.getQtlc())); | |
| 1235 | + s.setLjlc(Arith.add(s.getLjlc()!=null?s.getLjlc():0, s_.getLjlc())); | |
| 1236 | + if(s_.getLjkslc() == null){ | |
| 1237 | + s_.setLjkslc(0d); | |
| 1238 | + } | |
| 1239 | + s.setLjkslc(Arith.add(s.getLjkslc()!=null?s.getLjkslc():0, s_.getLjkslc())); | |
| 1240 | + s.setJhbcq(s.getJhbcq() + s_.getJhbcq()); | |
| 1241 | + s.setJhbcz(s.getJhbcz() + s_.getJhbcz()); | |
| 1242 | + s.setJhbcw(s.getJhbcw() + s_.getJhbcw()); | |
| 1243 | + s.setSjbcq(s.getSjbcq() + s_.getSjbcq()); | |
| 1244 | + s.setSjbcz(s.getSjbcz() + s_.getSjbcz()); | |
| 1245 | + s.setSjbcw(s.getSjbcw() + s_.getSjbcw()); | |
| 1246 | + s.setLjbcq(s.getLjbcq() + s_.getLjbcq()); | |
| 1247 | + s.setLjbcz(s.getLjbcz() + s_.getLjbcz()); | |
| 1248 | + s.setLjbcw(s.getLjbcw() + s_.getLjbcw()); | |
| 1249 | + s.setFzbcq(s.getFzbcq() + s_.getFzbcq()); | |
| 1250 | + s.setFzbcz(s.getFzbcz() + s_.getFzbcz()); | |
| 1251 | + s.setFzbcw(s.getFzbcw() + s_.getFzbcw()); | |
| 1252 | + s.setDtbcq(s.getDtbcq() + s_.getDtbcq()); | |
| 1253 | + s.setDtbcz(s.getDtbcz() + s_.getDtbcz()); | |
| 1254 | + s.setDtbcw(s.getDtbcw() + s_.getDtbcw()); | |
| 1255 | + s.setDjgq(s.getDjgq() + s_.getDjgq()); | |
| 1256 | + s.setDjgz(s.getDjgz() + s_.getDjgz()); | |
| 1257 | + s.setDjgw(s.getDjgw() + s_.getDjgw()); | |
| 1258 | + s.setDjgsj(s.getDjgsj()>s_.getDjgsj()?s.getDjgsj():s_.getDjgsj()); | |
| 1259 | + return s; | |
| 1260 | + } | |
| 1261 | + | |
| 1262 | + @Transactional | |
| 1263 | + @Override | |
| 1264 | + public Map<String, Object> calcLineMileage(String date, String line) { | |
| 1265 | + Map<String, Object> resMap = new HashMap<String, Object>(); | |
| 1266 | + | |
| 1267 | + if(date.length() == 0){ | |
| 1268 | + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 1269 | + Date d = new Date(); | |
| 1270 | + d.setTime(d.getTime() - 4 * 1000 * 60 * 60 * 24); | |
| 1271 | + date = sdf.format(d); | |
| 1272 | + } | |
| 1273 | + | |
| 1274 | + resMap.put("date", date); | |
| 1275 | + resMap.put("line", line); | |
| 1276 | + if(date == null || date.trim().length() == 0){ | |
| 1277 | + resMap.put("status", ResponseCode.ERROR); | |
| 1278 | + resMap.put("remark", "日期不正确或为空"); | |
| 1279 | + return resMap; | |
| 1280 | + } else { | |
| 1281 | + date = date.trim(); | |
| 1282 | + } | |
| 1283 | + if(line == null){ | |
| 1284 | + line = ""; | |
| 1285 | + } else { | |
| 1286 | + line = line.trim(); | |
| 1287 | + } | |
| 1288 | + | |
| 1289 | + Map<String, Object> map = new HashMap<String, Object>(); | |
| 1290 | + List<CalcLineMileage> list = new ArrayList<CalcLineMileage>(); | |
| 1291 | + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 1292 | + Date dateTime = new Date(); | |
| 1293 | + | |
| 1294 | + try { | |
| 1295 | + | |
| 1296 | + String gsSql="select gs_bm, fgs_bm from bsth_c_s_sp_info_real where schedule_date_str = '"+date+"'"; | |
| 1297 | + if(line.trim().length() > 0) | |
| 1298 | + gsSql += " and xl_bm = '"+line+"'"; | |
| 1299 | + gsSql += " group by gs_bm, fgs_bm"; | |
| 1300 | + List<Map<String, String>> gsList=jdbcTemplate.query(gsSql, new RowMapper<Map<String, String>>() { | |
| 1301 | + @Override | |
| 1302 | + public Map<String, String> mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 1303 | + Map<String, String> m = new HashMap<String, String>(); | |
| 1304 | + m.put("gsdm", arg0.getString("gs_bm")); | |
| 1305 | + m.put("fgsdm", arg0.getString("fgs_bm")); | |
| 1306 | + return m; | |
| 1307 | + }}); | |
| 1308 | + | |
| 1309 | + map.put("date", date); | |
| 1310 | + map.put("date2", date); | |
| 1311 | + for(Map<String, String> tempMap : gsList){ | |
| 1312 | + map.put("gsdm", tempMap.get("gsdm").toString()); | |
| 1313 | + map.put("fgsdm", tempMap.get("fgsdm").toString()); | |
| 1314 | + List<Map<String, Object>> countByList = reportService.countByList(map); | |
| 1315 | + for(Map<String, Object> m : countByList){ | |
| 1316 | + if(!m.containsKey("xlName") || m.get("xlName")==null | |
| 1317 | + || m.get("xlName").toString().equals("合计")) | |
| 1318 | + continue; | |
| 1319 | + CalcLineMileage c = new CalcLineMileage(); | |
| 1320 | + c.setDate(sdf.parse(date)); | |
| 1321 | + c.setDateStr(date); | |
| 1322 | + c.setGsdm(map.get("gsdm").toString()); | |
| 1323 | + c.setGsName(m.get("gs").toString()); | |
| 1324 | + c.setFgsdm(map.get("fgsdm").toString()); | |
| 1325 | + c.setFgsName(m.get("fgs").toString()); | |
| 1326 | + c.setXl(m.get("line").toString()); | |
| 1327 | + c.setXlName(m.get("xlName").toString()); | |
| 1328 | + c.setJhzlc(Double.valueOf(m.get("jhzlc").toString())); | |
| 1329 | + c.setJhlc(Double.valueOf(m.get("jhlc").toString())); | |
| 1330 | + c.setJcclc(Double.valueOf(m.get("jcclc").toString())); | |
| 1331 | + c.setSjzgl(Double.valueOf(m.get("sjzgl").toString())); | |
| 1332 | + c.setJhnlc(Double.valueOf(m.get("jhnlc").toString())); | |
| 1333 | + c.setJhwlc(Double.valueOf(m.get("jhwlc").toString())); | |
| 1334 | + c.setJhnjcclc(Double.valueOf(m.get("jhnjcclc").toString())); | |
| 1335 | + c.setJhwjcclc(Double.valueOf(m.get("jhwjcclc").toString())); | |
| 1336 | + c.setJhwjcclcz(Double.valueOf(m.get("jhwjcclc_z").toString())); | |
| 1337 | + c.setZrwjcclc(Double.valueOf(m.get("zrwjcclc").toString())); | |
| 1338 | + c.setZrwjcclc1(Double.valueOf(m.get("zrwjcclc1").toString())); | |
| 1339 | + c.setZrwjcclc2(Double.valueOf(m.get("zrwjcclc2").toString())); | |
| 1340 | + c.setZrwjcclcqt(Double.valueOf(m.get("zrwjcclcqt").toString())); | |
| 1341 | + c.setKfks(Double.valueOf(m.get("kfks").toString())); | |
| 1342 | + c.setLbss(Double.valueOf(m.get("lbss").toString())); | |
| 1343 | + c.setSsglLz(Double.valueOf(m.get("ssgl_lz").toString())); | |
| 1344 | + c.setSsglDm(Double.valueOf(m.get("ssgl_dm").toString())); | |
| 1345 | + c.setSsglGz(Double.valueOf(m.get("ssgl_gz").toString())); | |
| 1346 | + c.setSsglJf(Double.valueOf(m.get("ssgl_jf").toString())); | |
| 1347 | + c.setSsglZs(Double.valueOf(m.get("ssgl_zs").toString())); | |
| 1348 | + c.setSsglQr(Double.valueOf(m.get("ssgl_qr").toString())); | |
| 1349 | + c.setSsglQc(Double.valueOf(m.get("ssgl_qc").toString())); | |
| 1350 | + c.setSsglKx(Double.valueOf(m.get("ssgl_kx").toString())); | |
| 1351 | + c.setSsglQh(Double.valueOf(m.get("ssgl_qh").toString())); | |
| 1352 | + c.setSsglYw(Double.valueOf(m.get("ssgl_yw").toString())); | |
| 1353 | + c.setSsglOther(Double.valueOf(m.get("ssgl_other").toString())); | |
| 1354 | + c.setLjyy(Double.valueOf(m.get("ljyy").toString())); | |
| 1355 | + c.setLjjcc(Double.valueOf(m.get("ljjcc").toString())); | |
| 1356 | + c.setLjkfks(Double.valueOf(m.get("ljkfks").toString())); | |
| 1357 | + c.setCreateDate(dateTime); | |
| 1358 | + list.add(c); | |
| 1359 | + } | |
| 1360 | + } | |
| 1361 | + | |
| 1362 | + if(line.length() > 0){ | |
| 1363 | + calcLineMileageRepository.deleteByDateAndLine(date, line); | |
| 1364 | + } else { | |
| 1365 | + calcLineMileageRepository.deleteByDate(date); | |
| 1366 | + } | |
| 1367 | + calcLineMileageRepository.saveAll(list); | |
| 1368 | + | |
| 1369 | + resMap.put("status", ResponseCode.SUCCESS); | |
| 1370 | + } catch (Exception e) { | |
| 1371 | + // TODO: handle exception | |
| 1372 | + resMap.put("status", ResponseCode.ERROR); | |
| 1373 | + logger.error("save erro.", e); | |
| 1374 | + e.printStackTrace(); | |
| 1375 | + } | |
| 1376 | + return resMap; | |
| 1377 | + } | |
| 1378 | + | |
| 1379 | + @Transactional | |
| 1380 | + @Override | |
| 1381 | + public Map<String, Object> calcBusMileage(String date, String line) { | |
| 1382 | + Map<String, Object> resMap = new HashMap<String, Object>(); | |
| 1383 | + | |
| 1384 | + if(date.length() == 0){ | |
| 1385 | + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 1386 | + Date d = new Date(); | |
| 1387 | + d.setTime(d.getTime() - 4 * 1000 * 60 * 60 * 24); | |
| 1388 | + date = sdf.format(d); | |
| 1389 | + } | |
| 1390 | + | |
| 1391 | + resMap.put("date", date); | |
| 1392 | + resMap.put("line", line); | |
| 1393 | + if(date == null || date.trim().length() == 0){ | |
| 1394 | + resMap.put("status", ResponseCode.ERROR); | |
| 1395 | + resMap.put("remark", "日期不正确或为空"); | |
| 1396 | + return resMap; | |
| 1397 | + } else { | |
| 1398 | + date = date.trim(); | |
| 1399 | + } | |
| 1400 | + if(line == null){ | |
| 1401 | + line = ""; | |
| 1402 | + } else { | |
| 1403 | + line = line.trim(); | |
| 1404 | + } | |
| 1405 | + | |
| 1406 | + Map<String, Object> map = new HashMap<String, Object>(); | |
| 1407 | + Map<String, Object> xlmap = new HashMap<String, Object>(); | |
| 1408 | + List<CalcBusMileage> list = new ArrayList<CalcBusMileage>(); | |
| 1409 | + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 1410 | + Date dateTime = new Date(); | |
| 1411 | + | |
| 1412 | + try { | |
| 1413 | + | |
| 1414 | + String gsSql="select gs_bm, max(gs_name) gs_name, fgs_bm from bsth_c_s_sp_info_real" | |
| 1415 | + + " where schedule_date_str = '"+date+"'"; | |
| 1416 | + if(line.trim().length() > 0) | |
| 1417 | + gsSql += " and xl_bm = '"+line+"'"; | |
| 1418 | + gsSql += " group by gs_bm, fgs_bm"; | |
| 1419 | + List<Map<String, String>> gsList=jdbcTemplate.query(gsSql, new RowMapper<Map<String, String>>() { | |
| 1420 | + @Override | |
| 1421 | + public Map<String, String> mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 1422 | + Map<String, String> m = new HashMap<String, String>(); | |
| 1423 | + m.put("gsdm", arg0.getString("gs_bm")); | |
| 1424 | + m.put("gsName", arg0.getString("gs_name")); | |
| 1425 | + m.put("fgsdm", arg0.getString("fgs_bm")); | |
| 1426 | + return m; | |
| 1427 | + }}); | |
| 1428 | + | |
| 1429 | + List<Line> xlList = lineRepository.findAllService(); | |
| 1430 | + for(Line l : xlList){ | |
| 1431 | + xlmap.put(l.getName(), l.getLineCode()); | |
| 1432 | + } | |
| 1433 | + | |
| 1434 | + map.put("date", date); | |
| 1435 | + map.put("date2", date); | |
| 1436 | + map.put("zs", "js"); | |
| 1437 | + for(Map<String, String> tempMap : gsList){ | |
| 1438 | + map.put("gsdm", tempMap.get("gsdm").toString()); | |
| 1439 | + map.put("fgsdm", tempMap.get("fgsdm").toString()); | |
| 1440 | + List<Map<String, Object>> countByList = reportService.countByBusList(map); | |
| 1441 | + for(Map<String, Object> m : countByList){ | |
| 1442 | + if(!m.containsKey("xlName") || m.get("xlName")==null | |
| 1443 | + || m.get("xlName").toString().equals("合计")) | |
| 1444 | + continue; | |
| 1445 | + CalcBusMileage c = new CalcBusMileage(); | |
| 1446 | + c.setDate(sdf.parse(date)); | |
| 1447 | + c.setDateStr(date); | |
| 1448 | + c.setGsdm(map.get("gsdm").toString()); | |
| 1449 | + c.setGsName(tempMap.get("gsName").toString()); | |
| 1450 | + c.setFgsdm(map.get("fgsdm").toString()); | |
| 1451 | + c.setFgsName(m.get("fgs").toString()); | |
| 1452 | + c.setXl(xlmap.get(m.get("xlName").toString()).toString()); | |
| 1453 | + c.setXlName(m.get("xlName").toString()); | |
| 1454 | + c.setNbbm(m.get("nbbm").toString()); | |
| 1455 | + c.setjGh(m.get("jGh").toString()); | |
| 1456 | + c.setjName(m.get("jName").toString()); | |
| 1457 | + c.setsGh(m.get("sGh").toString()); | |
| 1458 | + c.setsName(m.get("sName").toString()); | |
| 1459 | + c.setZlc(Double.valueOf(m.get("zlc").toString())); | |
| 1460 | + c.setJhnlc(Double.valueOf(m.get("jhnlc").toString())); | |
| 1461 | + c.setJhwlc(Double.valueOf(m.get("jhwlc").toString())); | |
| 1462 | + c.setJhnjcclc(Double.valueOf(m.get("jhnjcclc").toString())); | |
| 1463 | + c.setJhwjcclc(Double.valueOf(m.get("jhwjcclc").toString())); | |
| 1464 | + c.setJhwjcclcz(Double.valueOf(m.get("jhwjcclc_z").toString())); | |
| 1465 | + c.setKfks(Double.valueOf(m.get("kfks").toString())); | |
| 1466 | + c.setZrwjcclc(Double.valueOf(m.get("zrwjcclc").toString())); | |
| 1467 | + c.setZrwjcclc1(Double.valueOf(m.get("zrwjcclc1").toString())); | |
| 1468 | + c.setZrwjcclc2(Double.valueOf(m.get("zrwjcclc2").toString())); | |
| 1469 | + c.setZrwjcclcqt(Double.valueOf(m.get("zrwjcclcqt").toString())); | |
| 1470 | + c.setLjyy(Double.valueOf(m.get("ljyy").toString())); | |
| 1471 | + c.setLjjcc(Double.valueOf(m.get("ljjcc").toString())); | |
| 1472 | + if(m.containsKey("ljkfks") && m.get("ljkfks") != null){ | |
| 1473 | + c.setLjkfks(Double.valueOf(m.get("ljkfks").toString())); | |
| 1474 | + } else { | |
| 1475 | + c.setLjkfks(0d); | |
| 1476 | + } | |
| 1477 | + c.setDhl(Double.valueOf(m.get("dhl").toString())); | |
| 1478 | + c.setCdl(Double.valueOf(m.get("cdl").toString())); | |
| 1479 | + c.setYhl(Double.valueOf(m.get("yhl").toString())); | |
| 1480 | + c.setJzl(Double.valueOf(m.get("jzl").toString())); | |
| 1481 | + c.setHyl(Double.valueOf(m.get("hyl").toString())); | |
| 1482 | + c.setJhzlc(Double.valueOf(m.get("jhzlc").toString())); | |
| 1483 | + c.setCreateDate(dateTime); | |
| 1484 | + list.add(c); | |
| 1485 | + } | |
| 1486 | + } | |
| 1487 | + | |
| 1488 | + if(line.length() > 0){ | |
| 1489 | + calcBusMileageRepository.deleteByDateAndLine(date, line); | |
| 1490 | + } else { | |
| 1491 | + calcBusMileageRepository.deleteByDate(date); | |
| 1492 | + } | |
| 1493 | + calcBusMileageRepository.saveAll(list); | |
| 1494 | + | |
| 1495 | + resMap.put("status", ResponseCode.SUCCESS); | |
| 1496 | + } catch (Exception e) { | |
| 1497 | + // TODO: handle exception | |
| 1498 | + resMap.put("status", ResponseCode.ERROR); | |
| 1499 | + logger.error("save erro.", e); | |
| 1500 | + e.printStackTrace(); | |
| 1501 | + } | |
| 1502 | + return resMap; | |
| 1503 | + } | |
| 1504 | + | |
| 1505 | + @Override | |
| 1506 | + public List<Map<String, Object>> getLineMileage(String gsdm, String fgsdm, String line, | |
| 1507 | + String date, String date2, String xlName, String zt, String by, String type) { | |
| 1508 | + List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); | |
| 1509 | + List<CalcLineMileage> resList = new ArrayList<CalcLineMileage>(); | |
| 1510 | + List<CalcLineMileage> list = new ArrayList<CalcLineMileage>(); | |
| 1511 | + List<CalcLineMileage> calcs = new ArrayList<CalcLineMileage>(); | |
| 1512 | + List<String> keyList = new ArrayList<String>(); | |
| 1513 | + Map<String, List<CalcLineMileage>> keyMap = new HashMap<String, List<CalcLineMileage>>(); | |
| 1514 | + | |
| 1515 | + if(line == null || line.trim().length() == 0){ | |
| 1516 | + list = calcLineMileageRepository.selectByDateAndLineTj(line, date, date2, gsdm, fgsdm); | |
| 1517 | + } else { | |
| 1518 | + list = calcLineMileageRepository.selectByDateAndLineTj2(line, date, date2); | |
| 1519 | + } | |
| 1520 | + | |
| 1521 | + for(CalcLineMileage c : list){ | |
| 1522 | + String key = c.getXlName(); | |
| 1523 | + if(!keyMap.containsKey(key)){ | |
| 1524 | + keyMap.put(key, new ArrayList<CalcLineMileage>()); | |
| 1525 | + keyList.add(key); | |
| 1526 | + } | |
| 1527 | + keyMap.get(key).add(c); | |
| 1528 | + } | |
| 1529 | + | |
| 1530 | + for(String key : keyList){ | |
| 1531 | + CalcLineMileage c1 = keyMap.get(key).get(0); | |
| 1532 | + for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 1533 | + CalcLineMileage c2 = keyMap.get(key).get(i); | |
| 1534 | + c1 = addLineMileage(c1, c2); | |
| 1535 | + } | |
| 1536 | + calcs.add(c1); | |
| 1537 | + } | |
| 1538 | + | |
| 1539 | + CalcLineMileage temp = new CalcLineMileage(); | |
| 1540 | + temp.setXlName("合计"); | |
| 1541 | + for(CalcLineMileage c : calcs){ | |
| 1542 | + temp = addLineMileage(temp, c); | |
| 1543 | + resList.add(c); | |
| 1544 | + } | |
| 1545 | + if(resList.size() > 0) | |
| 1546 | + resList.add(temp); | |
| 1547 | + | |
| 1548 | + for(CalcLineMileage c : resList){ | |
| 1549 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 1550 | + if(c.getXlName().equals("合计")){ | |
| 1551 | + m.put("gsdm", ""); | |
| 1552 | + m.put("gs", ""); | |
| 1553 | + m.put("fgsdm", ""); | |
| 1554 | + m.put("fgs", ""); | |
| 1555 | + } else { | |
| 1556 | + m.put("gsdm", c.getGsdm()); | |
| 1557 | + m.put("gs", c.getGsName()); | |
| 1558 | + m.put("fgsdm", c.getFgsdm()); | |
| 1559 | + m.put("fgs", c.getFgsName()); | |
| 1560 | + } | |
| 1561 | + m.put("xlName", c.getXlName()); | |
| 1562 | + m.put("jhzlc", c.getJhzlc()); | |
| 1563 | + m.put("jhlc", c.getJhlc()); | |
| 1564 | + m.put("jcclc", c.getJcclc()); | |
| 1565 | + m.put("sjzgl", c.getSjzgl()); | |
| 1566 | + m.put("jhnlc", c.getJhnlc()); | |
| 1567 | + m.put("jhwlc", c.getJhwlc()); | |
| 1568 | + m.put("jhnjcclc", c.getJhnjcclc()); | |
| 1569 | + m.put("jhwjcclc", c.getJhwjcclc()); | |
| 1570 | + m.put("jhwjcclc_z", c.getJhwjcclcz()); | |
| 1571 | + m.put("zrwjcclc", c.getZrwjcclc()); | |
| 1572 | + m.put("zrwjcclc1", c.getZrwjcclc1()); | |
| 1573 | + m.put("zrwjcclc2", c.getZrwjcclc2()); | |
| 1574 | + m.put("zrwjcclcqt", c.getZrwjcclcqt()); | |
| 1575 | + m.put("kfks", c.getKfks()); | |
| 1576 | + m.put("lbss", c.getLbss()); | |
| 1577 | + m.put("ssgl_lz", c.getSsglLz()); | |
| 1578 | + m.put("ssgl_dm", c.getSsglDm()); | |
| 1579 | + m.put("ssgl_gz", c.getSsglGz()); | |
| 1580 | + m.put("ssgl_jf", c.getSsglJf()); | |
| 1581 | + m.put("ssgl_zs", c.getSsglZs()); | |
| 1582 | + m.put("ssgl_qr", c.getSsglQr()); | |
| 1583 | + m.put("ssgl_qc", c.getSsglQc()); | |
| 1584 | + m.put("ssgl_kx", c.getSsglKx()); | |
| 1585 | + m.put("ssgl_qh", c.getSsglQh()); | |
| 1586 | + m.put("ssgl_yw", c.getSsglYw()); | |
| 1587 | + m.put("ssgl_other", c.getSsglOther()); | |
| 1588 | + m.put("ljyy", c.getLjyy()); | |
| 1589 | + m.put("ljjcc", c.getLjjcc()); | |
| 1590 | + m.put("ljkfks", c.getLjkfks()); | |
| 1591 | + lMap.add(m); | |
| 1592 | + } | |
| 1593 | + | |
| 1594 | + if(type.equals("export")){ | |
| 1595 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 1596 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 1597 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 1598 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 1599 | + m.put("date", date); | |
| 1600 | + m.put("date1", date2); | |
| 1601 | +// String by=map.get("by").toString(); | |
| 1602 | + String xls=""; | |
| 1603 | + if(by.equals("sj")){ | |
| 1604 | + xls="countByLine.xls"; | |
| 1605 | + }else{ | |
| 1606 | + xls="countByLines.xls"; | |
| 1607 | + } | |
| 1608 | + ReportUtils ee = new ReportUtils(); | |
| 1609 | + try { | |
| 1610 | + String dateTime = ""; | |
| 1611 | + if(date.equals(date2)){ | |
| 1612 | + dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 1613 | + } else { | |
| 1614 | + dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 1615 | + +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 1616 | + } | |
| 1617 | + listI.add(lMap.iterator()); | |
| 1618 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 1619 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls, | |
| 1620 | + path + "export/"+dateTime+"-"+xlName+"-线路公里统计表.xls"); | |
| 1621 | + } catch (Exception e) { | |
| 1622 | + // TODO: handle exception | |
| 1623 | + e.printStackTrace(); | |
| 1624 | + } | |
| 1625 | + } | |
| 1626 | + | |
| 1627 | + return lMap; | |
| 1628 | + } | |
| 1629 | + | |
| 1630 | + @Override | |
| 1631 | + public List<Map<String, Object>> getBusMileage(String line, String date, | |
| 1632 | + String date2, String xlName, String zt, String by, String type) { | |
| 1633 | + List<CalcBusMileage> resList = new ArrayList<CalcBusMileage>(); | |
| 1634 | + List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); | |
| 1635 | + List<CalcBusMileage> list = calcBusMileageRepository.selectByDateAndLineTj2(line, date, date2); | |
| 1636 | + | |
| 1637 | + if(zt.equals("zbh")){ | |
| 1638 | + List<String> keyList = new ArrayList<String>(); | |
| 1639 | + Map<String, List<CalcBusMileage>> keyMap = new HashMap<>(); | |
| 1640 | + for(CalcBusMileage c : list){ | |
| 1641 | + String nbbm = c.getNbbm(); | |
| 1642 | + if(!keyMap.containsKey(nbbm)){ | |
| 1643 | + keyMap.put(nbbm, new ArrayList<CalcBusMileage>()); | |
| 1644 | + keyList.add(nbbm); | |
| 1645 | + } | |
| 1646 | + keyMap.get(nbbm).add(c); | |
| 1647 | + } | |
| 1648 | + for(String key : keyList){ | |
| 1649 | + CalcBusMileage c1 = keyMap.get(key).get(0); | |
| 1650 | + for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 1651 | + CalcBusMileage c2 = keyMap.get(key).get(i); | |
| 1652 | + c1.setZlc(Arith.add(c1.getZlc(), c2.getZlc())); | |
| 1653 | + c1.setJhnlc(Arith.add(c1.getJhnlc(), c2.getJhnlc())); | |
| 1654 | + c1.setJhwlc(Arith.add(c1.getJhwlc(), c2.getJhwlc())); | |
| 1655 | + c1.setJhnjcclc(Arith.add(c1.getJhnjcclc(), c2.getJhnjcclc())); | |
| 1656 | + c1.setJhwjcclc(Arith.add(c1.getJhwjcclc(), c2.getJhwjcclc())); | |
| 1657 | + c1.setKfks(Arith.add(c1.getKfks(), c2.getKfks())); | |
| 1658 | + c1.setZrwjcclc(Arith.add(c1.getZrwjcclc(), c2.getZrwjcclc())); | |
| 1659 | + c1.setZrwjcclc1(Arith.add(c1.getZrwjcclc1(), c2.getZrwjcclc1())); | |
| 1660 | + c1.setZrwjcclc2(Arith.add(c1.getZrwjcclc2(), c2.getZrwjcclc2())); | |
| 1661 | + c1.setZrwjcclcqt(Arith.add(c1.getZrwjcclcqt(), c2.getZrwjcclcqt())); | |
| 1662 | + c1.setLjyy(Arith.add(c1.getLjyy(), c2.getLjyy())); | |
| 1663 | + c1.setLjjcc(Arith.add(c1.getLjjcc(), c2.getLjjcc())); | |
| 1664 | + c1.setLjkfks(Arith.add(c1.getLjkfks(), c2.getLjkfks())); | |
| 1665 | + c1.setDhl(Arith.add(c1.getDhl(), c2.getDhl())); | |
| 1666 | + c1.setCdl(Arith.add(c1.getCdl(), c2.getCdl())); | |
| 1667 | + c1.setYhl(Arith.add(c1.getYhl(), c2.getYhl())); | |
| 1668 | + c1.setJzl(Arith.add(c1.getJzl(), c2.getJzl())); | |
| 1669 | + c1.setHyl(Arith.add(c1.getHyl(), c2.getHyl())); | |
| 1670 | + c1.setJhzlc(Arith.add(c1.getJhzlc(), c2.getJhzlc())); | |
| 1671 | + } | |
| 1672 | + resList.add(c1); | |
| 1673 | + } | |
| 1674 | + } else { | |
| 1675 | + List<String> keyList = new ArrayList<String>(); | |
| 1676 | + Map<String, List<CalcBusMileage>> keyMap = new HashMap<>(); | |
| 1677 | + for(CalcBusMileage c : list){ | |
| 1678 | + String key = c.getNbbm() + c.getjGh() + c.getjName() + c.getsGh() + c.getsName(); | |
| 1679 | + if(!keyMap.containsKey(key)){ | |
| 1680 | + keyMap.put(key, new ArrayList<CalcBusMileage>()); | |
| 1681 | + keyList.add(key); | |
| 1682 | + } | |
| 1683 | + keyMap.get(key).add(c); | |
| 1684 | + } | |
| 1685 | + for(String key : keyList){ | |
| 1686 | + CalcBusMileage c1 = keyMap.get(key).get(0); | |
| 1687 | + for(int i = 1; i < keyMap.get(key).size(); i++){ | |
| 1688 | + CalcBusMileage c2 = keyMap.get(key).get(i); | |
| 1689 | + c1.setZlc(Arith.add(c1.getZlc(), c2.getZlc())); | |
| 1690 | + c1.setJhnlc(Arith.add(c1.getJhnlc(), c2.getJhnlc())); | |
| 1691 | + c1.setJhwlc(Arith.add(c1.getJhwlc(), c2.getJhwlc())); | |
| 1692 | + c1.setJhnjcclc(Arith.add(c1.getJhnjcclc(), c2.getJhnjcclc())); | |
| 1693 | + c1.setJhwjcclc(Arith.add(c1.getJhwjcclc(), c2.getJhwjcclc())); | |
| 1694 | + c1.setKfks(Arith.add(c1.getKfks(), c2.getKfks())); | |
| 1695 | + c1.setZrwjcclc(Arith.add(c1.getZrwjcclc(), c2.getZrwjcclc())); | |
| 1696 | + c1.setZrwjcclc1(Arith.add(c1.getZrwjcclc1(), c2.getZrwjcclc1())); | |
| 1697 | + c1.setZrwjcclc2(Arith.add(c1.getZrwjcclc2(), c2.getZrwjcclc2())); | |
| 1698 | + c1.setZrwjcclcqt(Arith.add(c1.getZrwjcclcqt(), c2.getZrwjcclcqt())); | |
| 1699 | + c1.setLjyy(Arith.add(c1.getLjyy(), c2.getLjyy())); | |
| 1700 | + c1.setLjjcc(Arith.add(c1.getLjjcc(), c2.getLjjcc())); | |
| 1701 | + c1.setLjkfks(Arith.add(c1.getLjkfks(), c2.getLjkfks())); | |
| 1702 | + c1.setDhl(Arith.add(c1.getDhl(), c2.getDhl())); | |
| 1703 | + c1.setCdl(Arith.add(c1.getCdl(), c2.getCdl())); | |
| 1704 | + c1.setYhl(Arith.add(c1.getYhl(), c2.getYhl())); | |
| 1705 | + c1.setJzl(Arith.add(c1.getJzl(), c2.getJzl())); | |
| 1706 | + c1.setHyl(Arith.add(c1.getHyl(), c2.getHyl())); | |
| 1707 | + c1.setJhzlc(Arith.add(c1.getJhzlc(), c2.getJhzlc())); | |
| 1708 | + } | |
| 1709 | + resList.add(c1); | |
| 1710 | + } | |
| 1711 | + } | |
| 1712 | + | |
| 1713 | + for(CalcBusMileage c : resList){ | |
| 1714 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 1715 | + if(date.equals(date2)){ | |
| 1716 | + m.put("rq", date); | |
| 1717 | + } else { | |
| 1718 | + m.put("rq", date + "至" + date2); | |
| 1719 | + } | |
| 1720 | + m.put("fgs", c.getFgsName()); | |
| 1721 | + m.put("xlName", c.getXlName()); | |
| 1722 | + m.put("nbbm", c.getNbbm()); | |
| 1723 | + m.put("jGh", c.getjGh()); | |
| 1724 | + m.put("jName", c.getjName()); | |
| 1725 | + m.put("sGh", c.getsGh()); | |
| 1726 | + m.put("sName", c.getsName()); | |
| 1727 | + m.put("zlc", c.getZlc()); | |
| 1728 | + m.put("jhnlc", c.getJhnlc()); | |
| 1729 | + m.put("jhwlc", c.getJhwlc()); | |
| 1730 | + m.put("jhnjcclc", c.getJhnjcclc()); | |
| 1731 | + m.put("jhwjcclc", c.getJhwjcclc()); | |
| 1732 | + m.put("jhwjcclc_z", c.getJhwjcclcz()); | |
| 1733 | + m.put("kfks", c.getKfks()); | |
| 1734 | + m.put("zrwjcclc", c.getZrwjcclc()); | |
| 1735 | + m.put("zrwjcclc1", c.getZrwjcclc1()); | |
| 1736 | + m.put("zrwjcclc2", c.getZrwjcclc2()); | |
| 1737 | + m.put("zrwjcclcqt", c.getZrwjcclcqt()); | |
| 1738 | + m.put("ljyy", c.getLjyy()); | |
| 1739 | + m.put("ljjcc", c.getLjjcc()); | |
| 1740 | + m.put("ljkfks", c.getLjkfks()); | |
| 1741 | + m.put("dhl", c.getDhl()); | |
| 1742 | + m.put("cdl", c.getCdl()); | |
| 1743 | + m.put("yhl", c.getYhl()); | |
| 1744 | + m.put("jzl", c.getJzl()); | |
| 1745 | + m.put("hyl", c.getYhl()); | |
| 1746 | + m.put("jhzlc", c.getJhzlc()); | |
| 1747 | + lMap.add(m); | |
| 1748 | + } | |
| 1749 | + | |
| 1750 | + if(type.equals("export")){ | |
| 1751 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 1752 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 1753 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 1754 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 1755 | + m.put("date", date); | |
| 1756 | + m.put("date1", date2); | |
| 1757 | + String xls=""; | |
| 1758 | +// String by=map.get("by").toString(); | |
| 1759 | + | |
| 1760 | + if(zt.equals("zbh")){ | |
| 1761 | + if(by.equals("sj")){ | |
| 1762 | + xls="countByBus1.xls"; | |
| 1763 | + }else{ | |
| 1764 | + xls="countByBus1s.xls"; | |
| 1765 | + } | |
| 1766 | + }else{ | |
| 1767 | + | |
| 1768 | + if(by.equals("sj")){ | |
| 1769 | + xls="countByBus2.xls"; | |
| 1770 | + }else{ | |
| 1771 | + xls="countByBus2s.xls"; | |
| 1772 | + } | |
| 1773 | + } | |
| 1774 | + ReportUtils ee = new ReportUtils(); | |
| 1775 | + try { | |
| 1776 | + String dateTime = ""; | |
| 1777 | + if(date.equals(date2)){ | |
| 1778 | + dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 1779 | + } else { | |
| 1780 | + dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 1781 | + +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 1782 | + } | |
| 1783 | + listI.add(lMap.iterator()); | |
| 1784 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 1785 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls, | |
| 1786 | + path + "export/"+dateTime+"-"+xlName+"-路单数据统计表.xls"); | |
| 1787 | + } catch (Exception e) { | |
| 1788 | + // TODO: handle exception | |
| 1789 | + e.printStackTrace(); | |
| 1790 | + } | |
| 1791 | + } | |
| 1792 | + | |
| 1793 | + return lMap; | |
| 1794 | + } | |
| 1795 | + | |
| 1796 | + public CalcLineMileage addLineMileage(CalcLineMileage temp, CalcLineMileage c){ | |
| 1797 | + temp.setJhzlc(Arith.add(temp.getJhzlc()!=null?temp.getJhzlc():0, c.getJhzlc())); | |
| 1798 | + temp.setJhlc(Arith.add(temp.getJhlc()!=null?temp.getJhlc():0, c.getJhlc())); | |
| 1799 | + temp.setJcclc(Arith.add(temp.getJcclc()!=null?temp.getJcclc():0, c.getJcclc())); | |
| 1800 | + temp.setSjzgl(Arith.add(temp.getSjzgl()!=null?temp.getSjzgl():0, c.getSjzgl())); | |
| 1801 | + temp.setJhnlc(Arith.add(temp.getJhnlc()!=null?temp.getJhnlc():0, c.getJhnlc())); | |
| 1802 | + temp.setJhwlc(Arith.add(temp.getJhwlc()!=null?temp.getJhwlc():0, c.getJhwlc())); | |
| 1803 | + temp.setJhnjcclc(Arith.add(temp.getJhnjcclc()!=null?temp.getJhnjcclc():0, c.getJhnjcclc())); | |
| 1804 | + temp.setJhwjcclc(Arith.add(temp.getJhwjcclc()!=null?temp.getJhwjcclc():0, c.getJhwjcclc())); | |
| 1805 | + temp.setJhwjcclcz(Arith.add(temp.getJhwjcclcz()!=null?temp.getJhwjcclcz():0, c.getJhwjcclcz())); | |
| 1806 | + temp.setZrwjcclc(Arith.add(temp.getZrwjcclc()!=null?temp.getZrwjcclc():0, c.getZrwjcclc())); | |
| 1807 | + temp.setZrwjcclc1(Arith.add(temp.getZrwjcclc1()!=null?temp.getZrwjcclc1():0, c.getZrwjcclc1())); | |
| 1808 | + temp.setZrwjcclc2(Arith.add(temp.getZrwjcclc2()!=null?temp.getZrwjcclc2():0, c.getZrwjcclc2())); | |
| 1809 | + temp.setZrwjcclcqt(Arith.add(temp.getZrwjcclcqt()!=null?temp.getZrwjcclcqt():0, c.getZrwjcclcqt())); | |
| 1810 | + temp.setKfks(Arith.add(temp.getKfks()!=null?temp.getKfks():0, c.getKfks())); | |
| 1811 | + temp.setLbss(Arith.add(temp.getLbss()!=null?temp.getLbss():0, c.getLbss())); | |
| 1812 | + temp.setSsglLz(Arith.add(temp.getSsglLz()!=null?temp.getSsglLz():0, c.getSsglLz())); | |
| 1813 | + temp.setSsglDm(Arith.add(temp.getSsglDm()!=null?temp.getSsglDm():0, c.getSsglDm())); | |
| 1814 | + temp.setSsglGz(Arith.add(temp.getSsglGz()!=null?temp.getSsglGz():0, c.getSsglGz())); | |
| 1815 | + temp.setSsglJf(Arith.add(temp.getSsglJf()!=null?temp.getSsglJf():0, c.getSsglJf())); | |
| 1816 | + temp.setSsglZs(Arith.add(temp.getSsglZs()!=null?temp.getSsglZs():0, c.getSsglZs())); | |
| 1817 | + temp.setSsglQr(Arith.add(temp.getSsglQr()!=null?temp.getSsglQr():0, c.getSsglQr())); | |
| 1818 | + temp.setSsglQc(Arith.add(temp.getSsglQc()!=null?temp.getSsglQc():0, c.getSsglQc())); | |
| 1819 | + temp.setSsglKx(Arith.add(temp.getSsglKx()!=null?temp.getSsglKx():0, c.getSsglKx())); | |
| 1820 | + temp.setSsglQh(Arith.add(temp.getSsglQh()!=null?temp.getSsglQh():0, c.getSsglQh())); | |
| 1821 | + temp.setSsglYw(Arith.add(temp.getSsglYw()!=null?temp.getSsglYw():0, c.getSsglYw())); | |
| 1822 | + temp.setSsglOther(Arith.add(temp.getSsglOther()!=null?temp.getSsglOther():0, c.getSsglOther())); | |
| 1823 | + temp.setLjyy(Arith.add(temp.getLjyy()!=null?temp.getLjyy():0, c.getLjyy())); | |
| 1824 | + temp.setLjjcc(Arith.add(temp.getLjjcc()!=null?temp.getLjjcc():0, c.getLjjcc())); | |
| 1825 | + temp.setLjkfks(Arith.add(temp.getLjkfks()!=null?temp.getLjkfks():0, c.getLjkfks())); | |
| 1826 | + return temp; | |
| 1827 | + } | |
| 1828 | + | |
| 1829 | + @Override | |
| 1830 | + public List<List<String>> calcDetailMonthly(Map<String, Object> map) { | |
| 1831 | + List<Integer> destroy= new ArrayList<>(); | |
| 1832 | + String destroyStr = ""; | |
| 1833 | + if(map.get("destroy")!=null){ | |
| 1834 | + destroyStr = map.get("destroy").toString().trim(); | |
| 1835 | + String[] destroys = destroyStr.split(","); | |
| 1836 | + for (int i = 0; i < destroys.length; i++){ | |
| 1837 | + destroy.add(Integer.parseInt(destroys[i])); | |
| 1838 | + } | |
| 1839 | + } | |
| 1840 | + List<String> gsdm= new ArrayList<>(); | |
| 1841 | + String gsdmStr = ""; | |
| 1842 | + if(map.get("gsdm")!=null){ | |
| 1843 | + gsdmStr = map.get("gsdm").toString().trim(); | |
| 1844 | + String[] gsdms = gsdmStr.split(","); | |
| 1845 | + for (int i = 0; i < gsdms.length; i++){ | |
| 1846 | + gsdm.add(gsdms[i]); | |
| 1847 | + } | |
| 1848 | + } | |
| 1849 | + List<String> fgsdm= new ArrayList<>(); | |
| 1850 | + String fgsdmStr = ""; | |
| 1851 | + if(map.get("fgsdm")!=null){ | |
| 1852 | + fgsdmStr = map.get("fgsdm").toString().trim(); | |
| 1853 | + String[] fgsdms = fgsdmStr.split(","); | |
| 1854 | + for (int i = 0; i < fgsdms.length; i++){ | |
| 1855 | + fgsdm.add(fgsdms[i]); | |
| 1856 | + } | |
| 1857 | + } | |
| 1858 | +// String line= null; | |
| 1859 | + List<String> line= new ArrayList<>(); | |
| 1860 | + String lineStr = ""; | |
| 1861 | + if(map.get("lineCode")!=null){ | |
| 1862 | + lineStr = map.get("lineCode").toString().trim(); | |
| 1863 | + String[] lines = lineStr.split(","); | |
| 1864 | + for (int i = 0; i < lines.length; i++){ | |
| 1865 | + line.add(lines[i]); | |
| 1866 | + } | |
| 1867 | + } | |
| 1868 | + String startDate=""; | |
| 1869 | + if(map.get("startDate")!=null){ | |
| 1870 | + startDate=map.get("startDate").toString().trim(); | |
| 1871 | + } | |
| 1872 | + String endDate=""; | |
| 1873 | + if(map.get("endDate")!=null){ | |
| 1874 | + endDate=map.get("endDate").toString().trim(); | |
| 1875 | + } | |
| 1876 | + String type=""; | |
| 1877 | + if(map.get("type")!=null){ | |
| 1878 | + type=map.get("type").toString().trim(); | |
| 1879 | + } | |
| 1880 | + String statisticalObj=""; | |
| 1881 | + if(map.get("statisticalObj")!=null){ | |
| 1882 | + statisticalObj=map.get("statisticalObj").toString().trim(); | |
| 1883 | + } | |
| 1884 | + String itemDetails=""; | |
| 1885 | + if(map.get("itemDetails")!=null){ | |
| 1886 | + itemDetails=map.get("itemDetails").toString().trim(); | |
| 1887 | + } | |
| 1888 | +// Boolean item=false; | |
| 1889 | + /*String item=""; | |
| 1890 | + if(map.get("item")!=null){ | |
| 1891 | + if("dh".equals(map.get("item").toString().trim())) | |
| 1892 | + item=" where c.sfdc = 1"; | |
| 1893 | +// item=false; | |
| 1894 | + else if ("dh".equals(map.get("item").toString().trim())) | |
| 1895 | + item=" where c.sfdc = 0"; | |
| 1896 | +// item=true; | |
| 1897 | + else | |
| 1898 | + item=""; | |
| 1899 | + }*/ | |
| 1900 | + String timeType=map.get("timeType").toString().trim(); | |
| 1901 | + | |
| 1902 | + List<List<String>> resList = new ArrayList<>(); | |
| 1903 | + List<CalcWaybill> list = new ArrayList<CalcWaybill>(); | |
| 1904 | +// List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | |
| 1905 | + // 右边可变天数 | |
| 1906 | + TreeMap<String, List<CalcWaybillDetail>> keyMapList = new TreeMap<String, List<CalcWaybillDetail>>(); | |
| 1907 | + // 左边固定列 | |
| 1908 | + TreeMap<String, CalcWaybillDetail> keyMap = new TreeMap<String, CalcWaybillDetail>(); | |
| 1909 | + | |
| 1910 | + List<Map<String, CalcWaybillDetail>> dayList = new ArrayList<>(); | |
| 1911 | + int day = 0, day2 = 0; | |
| 1912 | + if("m".equals(timeType)){ | |
| 1913 | + day = Integer.parseInt(startDate.substring(8,10)); | |
| 1914 | + day2 = Integer.parseInt(endDate.substring(8,10)); | |
| 1915 | + for(int i=day; i<=day2; i++){ | |
| 1916 | + Map<String, CalcWaybillDetail> daym = new HashMap<>(); | |
| 1917 | + daym.put(startDate.substring(0,7)+"-"+(i<10?"0"+i:i),this.initCalcWaybillDetail()); | |
| 1918 | + dayList.add(daym); | |
| 1919 | + } | |
| 1920 | + } else if("y".equals(timeType)){ | |
| 1921 | + day = Integer.parseInt(startDate.substring(5,7)); | |
| 1922 | + day2 = Integer.parseInt(endDate.substring(5,7)); | |
| 1923 | + for(int i=day; i<=day2; i++){ | |
| 1924 | + Map<String, CalcWaybillDetail> daym = new HashMap<>(); | |
| 1925 | + daym.put(startDate.substring(0,5)+(i<10?"0"+i:i),this.initCalcWaybillDetail()); | |
| 1926 | + dayList.add(daym); | |
| 1927 | + } | |
| 1928 | + startDate += "-01"; | |
| 1929 | + endDate += "-31"; | |
| 1930 | + } | |
| 1931 | + | |
| 1932 | + int flag = 0; | |
| 1933 | + if("jsy".equals(statisticalObj)){ | |
| 1934 | + flag = 1; | |
| 1935 | + list = calcRepository.scheduleByJsy2(line, startDate, endDate, gsdm, fgsdm, destroy); | |
| 1936 | + } else if("cwy".equals(statisticalObj)){ | |
| 1937 | + flag = 2; | |
| 1938 | + list = calcRepository.scheduleBySpy2(line, startDate, endDate, gsdm, fgsdm, destroy); | |
| 1939 | + } else if("cl".equals(statisticalObj)){ | |
| 1940 | + flag = 3; | |
| 1941 | + list = calcRepository.scheduleByZbh2(line, startDate, endDate, gsdm, fgsdm, destroy); | |
| 1942 | + } else if("xl".equals(statisticalObj)){ | |
| 1943 | + flag = 4; | |
| 1944 | + list = calcRepository.scheduleByDateAndLineTjPx(line,startDate,endDate,gsdm,fgsdm, destroy); | |
| 1945 | + /*if(line.equals("")){ | |
| 1946 | + //查询所有线路 | |
| 1947 | + }else{ | |
| 1948 | + //查询单条线路 | |
| 1949 | + list = calcRepository.scheduleByDateAndLineTjPx2(line,startDate,endDate); | |
| 1950 | + }*/ | |
| 1951 | + } | |
| 1952 | + | |
| 1953 | + | |
| 1954 | + // List类转换 | |
| 1955 | + final List<CalcWaybillDetail> listNew = JSONArray.parseArray(JSON.toJSONString(list), CalcWaybillDetail.class); | |
| 1956 | + | |
| 1957 | + if(listNew.size() <= 0){ | |
| 1958 | + return resList; | |
| 1959 | + } | |
| 1960 | + Map<String,Ylb> ylbMap = new HashMap<>(); | |
| 1961 | + Map<String,Ylb> ylbCLMap = new HashMap<>(); | |
| 1962 | + Map<String,Dlb> dlbMap = new HashMap<>(); | |
| 1963 | + Map<String,Dlb> dlbCLMap = new HashMap<>(); | |
| 1964 | + | |
| 1965 | + final SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); | |
| 1966 | + | |
| 1967 | + // 只有在选择 车辆,驾驶员查询时才有 | |
| 1968 | + // 把油量和电量数据查出来,封装成Map,计算时直接取 | |
| 1969 | + if(flag != 2 ){ | |
| 1970 | + String linesql=""; | |
| 1971 | + if(!lineStr.equals("")){ | |
| 1972 | + linesql +=" and xlbm in("+lineStr+") "; | |
| 1973 | + } | |
| 1974 | + if(!gsdmStr.equals("")){ | |
| 1975 | + linesql +=" and ssgsdm in("+gsdmStr+") "; | |
| 1976 | + } | |
| 1977 | + if(!fgsdmStr.equals("")){ | |
| 1978 | + linesql +=" and fgsdm in("+fgsdmStr+") "; | |
| 1979 | + } | |
| 1980 | + String ylsql="SELECT * FROM bsth_c_ylb" | |
| 1981 | +// String ylsql="SELECT id,xlbm,nbbm,jsy,jzl,czyl,jzyl,yh,sh,fgsdm FROM bsth_c_ylb" | |
| 1982 | + + " WHERE rq >= '"+startDate+"' and rq <= '"+endDate+"' " | |
| 1983 | + + linesql; | |
| 1984 | + String dlSal= " SELECT * FROM bsth_c_dlb" | |
| 1985 | +// String dlSal= " SELECT id,xlbm,nbbm,jsy,cdl,czcd,jzcd,hd,sh,fgsdm FROM bsth_c_dlb" | |
| 1986 | + + " WHERE rq >= '"+startDate+"' and rq <= '"+endDate+"' " | |
| 1987 | + + linesql; | |
| 1988 | + List<Ylb> ylbList = jdbcTemplate.query(ylsql, new RowMapper<Ylb>() { | |
| 1989 | + @Override | |
| 1990 | + public Ylb mapRow(ResultSet arg0, int arg1) throws SQLException{ | |
| 1991 | + Ylb ylb = new Ylb(); | |
| 1992 | + Date rq = null; | |
| 1993 | + try{ | |
| 1994 | + rq = ft.parse(arg0.getString("rq")); | |
| 1995 | + } catch (ParseException e){ | |
| 1996 | + logger.error(e.toString(),e); | |
| 1997 | + } | |
| 1998 | +// Date rq = ft.parse(arg0.getString("rq")); | |
| 1999 | + ylb.setXlbm(arg0.getString("xlbm")); | |
| 2000 | + ylb.setJsy(arg0.getString("jsy")); | |
| 2001 | + ylb.setJname(arg0.getString("jname")); | |
| 2002 | + ylb.setNbbm(arg0.getString("nbbm")); | |
| 2003 | + ylb.setZlc(Double.parseDouble(arg0.getString("zlc"))); | |
| 2004 | + ylb.setJzl(Double.parseDouble(arg0.getString("jzl"))); | |
| 2005 | + ylb.setJzyl(Double.parseDouble(arg0.getString("jzyl"))); | |
| 2006 | + ylb.setCzyl(Double.parseDouble(arg0.getString("czyl"))); | |
| 2007 | + ylb.setYh(Double.parseDouble(arg0.getString("yh"))); | |
| 2008 | + ylb.setSh(Double.parseDouble(arg0.getString("sh"))); | |
| 2009 | + ylb.setRylx(arg0.getString("rylx")); | |
| 2010 | + ylb.setFgsdm(arg0.getString("fgsdm")); | |
| 2011 | + ylb.setRq(rq); | |
| 2012 | + return ylb; | |
| 2013 | + } | |
| 2014 | + }); | |
| 2015 | + List<Dlb> dlbList = jdbcTemplate.query(dlSal, new RowMapper<Dlb>() { | |
| 2016 | + @Override | |
| 2017 | + public Dlb mapRow(ResultSet arg0, int arg1) throws SQLException { | |
| 2018 | + Dlb dlb = new Dlb();Date rq = null; | |
| 2019 | + try{ | |
| 2020 | + rq = ft.parse(arg0.getString("rq")); | |
| 2021 | + } catch (ParseException e){ | |
| 2022 | + logger.error(e.toString(),e); | |
| 2023 | + } | |
| 2024 | + dlb.setXlbm(arg0.getString("xlbm")); | |
| 2025 | + dlb.setJsy(arg0.getString("jsy")); | |
| 2026 | + dlb.setJname(arg0.getString("jname")); | |
| 2027 | + dlb.setNbbm(arg0.getString("nbbm")); | |
| 2028 | + dlb.setZlc(Double.parseDouble(arg0.getString("zlc"))); | |
| 2029 | + dlb.setCdl(Double.parseDouble(arg0.getString("cdl"))); | |
| 2030 | + dlb.setJzcd(Double.parseDouble(arg0.getString("jzcd"))); | |
| 2031 | + dlb.setCzcd(Double.parseDouble(arg0.getString("czcd"))); | |
| 2032 | + dlb.setHd(Double.parseDouble(arg0.getString("hd"))); | |
| 2033 | + dlb.setSh(Double.parseDouble(arg0.getString("sh"))); | |
| 2034 | + dlb.setFgsdm(arg0.getString("fgsdm")); | |
| 2035 | + dlb.setRq(rq); | |
| 2036 | + return dlb; | |
| 2037 | + } | |
| 2038 | + }); | |
| 2039 | + | |
| 2040 | + for (Ylb y:ylbList) { | |
| 2041 | + if(ylbMap.containsKey(y.getRq().getTime()+"_"+y.getXlbm()+"_"+y.getJsy()+"_"+y.getNbbm())){ | |
| 2042 | + Ylb yo = ylbMap.get(y.getRq().getTime()+"_"+y.getXlbm()+"_"+y.getJsy()+"_"+y.getNbbm()); | |
| 2043 | + yo.setZlc(Arith.add(yo.getZlc(),y.getZlc())); | |
| 2044 | + yo.setCzyl(Arith.add(yo.getCzyl(),y.getCzyl())); | |
| 2045 | + yo.setJzyl(Arith.add(yo.getJzyl(),y.getJzyl())); | |
| 2046 | + yo.setJzl(Arith.add(yo.getJzl(),y.getJzl())); | |
| 2047 | + yo.setYh(Arith.add(yo.getYh(),y.getYh())); | |
| 2048 | + } else | |
| 2049 | + ylbMap.put(y.getRq().getTime()+"_"+y.getXlbm()+"_"+y.getJsy()+"_"+y.getNbbm(),y); | |
| 2050 | + | |
| 2051 | +// ylbMap.put(y.getRq().getTime()+"_"+y.getXlbm()+"_"+y.getJsy()+"_"+y.getJname()+"_"+y.getNbbm(),y); | |
| 2052 | +// ylbCLMap.put(y.getRq().getTime()+"_"+y.getXlbm()+"_"+y.getNbbm(),y); | |
| 2053 | + } | |
| 2054 | + for (Dlb d:dlbList) { | |
| 2055 | + if(dlbMap.containsKey(d.getRq().getTime()+"_"+d.getXlbm()+"_"+d.getJsy()+"_"+d.getNbbm())){ | |
| 2056 | + Dlb dold = dlbMap.get(d.getRq().getTime()+"_"+d.getXlbm()+"_"+d.getJsy()+"_"+d.getNbbm()); | |
| 2057 | + dold.setZlc(Arith.add(dold.getZlc(),d.getZlc())); | |
| 2058 | + dold.setHd(Arith.add(dold.getHd(),d.getHd())); | |
| 2059 | + dold.setCzcd(Arith.add(dold.getCzcd(),d.getCzcd())); | |
| 2060 | + dold.setJzcd(Arith.add(dold.getJzcd(),d.getJzcd())); | |
| 2061 | + dold.setCdl(Arith.add(dold.getCdl(),d.getCdl())); | |
| 2062 | + dold.setHd(Arith.add(dold.getHd(),d.getHd())); | |
| 2063 | + } else | |
| 2064 | + dlbMap.put(d.getRq().getTime()+"_"+d.getXlbm()+"_"+d.getJsy()+"_"+d.getNbbm(),d); | |
| 2065 | +// dlbMap.put(d.getRq().getTime()+"_"+d.getXlbm()+"_"+d.getJsy()+"_"+d.getJname()+"_"+d.getNbbm(),d); | |
| 2066 | +// dlbCLMap.put(d.getRq().getTime()+"_"+d.getXlbm()+"_"+d.getNbbm(),d); | |
| 2067 | + } | |
| 2068 | + } | |
| 2069 | + | |
| 2070 | + CalcWaybillDetail zjCalc = this.initCalcWaybillDetail(); | |
| 2071 | + zjCalc.setjName("合计"); | |
| 2072 | + // 横向数据的第几天下标 | |
| 2073 | + int dayIndex = 0; | |
| 2074 | + int dayIndexPrev = -1; | |
| 2075 | + // 报表纵向列数据生成 | |
| 2076 | + for (int i = 0; listNew.size() > i; i++) { | |
| 2077 | + CalcWaybillDetail cw = listNew.get(i); | |
| 2078 | + | |
| 2079 | + CalcWaybillDetail cwNext = new CalcWaybillDetail(); | |
| 2080 | + if(i<listNew.size()-1){ | |
| 2081 | + cwNext = listNew.get(i+1); | |
| 2082 | + } | |
| 2083 | + String xl = cw.getXl(); | |
| 2084 | + String jsy = cw.getjGh(); | |
| 2085 | + String cwy = cw.getsGh(); | |
| 2086 | + String cl = cw.getCl(); | |
| 2087 | + | |
| 2088 | + Ylb y = new Ylb(); | |
| 2089 | + Dlb d = new Dlb(); | |
| 2090 | + // 统计类型不同统计的左边列不同 | |
| 2091 | + // 赋值油、电量 | |
| 2092 | + if(flag != 2){ | |
| 2093 | + // 取了之后删除,防止重复取,应为添加的时候已经合并了 | |
| 2094 | + y = ylbMap.get(cw.getRq().getTime()+"_"+cw.getXl()+"_"+cw.getjGh()+"_"+cw.getCl()); | |
| 2095 | + ylbMap.remove(cw.getRq().getTime()+"_"+cw.getXl()+"_"+cw.getjGh()+"_"+cw.getCl()); | |
| 2096 | + d = dlbMap.get(cw.getRq().getTime()+"_"+cw.getXl()+"_"+cw.getjGh()+"_"+cw.getCl()); | |
| 2097 | + dlbMap.remove(cw.getRq().getTime()+"_"+cw.getXl()+"_"+cw.getjGh()+"_"+cw.getCl()); | |
| 2098 | + if(y != null){ | |
| 2099 | + cw.setZlc(y.getZlc()); | |
| 2100 | + cw.setYh(y.getYh()); | |
| 2101 | + cw.setJzl(y.getJzl()); | |
| 2102 | + if("0".equals(y.getRylx())){ | |
| 2103 | + cw.setJzl0(y.getJzl()); | |
| 2104 | + }else if("1".equals(y.getRylx())){ | |
| 2105 | + cw.setJzl10(y.getJzl()); | |
| 2106 | + } | |
| 2107 | + cw.setJzyl(y.getJzyl()); | |
| 2108 | + cw.setCzyl(y.getCzyl()); | |
| 2109 | + cw.setRylx(y.getRylx()); | |
| 2110 | + cw.setBglyh((y.getZlc()==0? 0:100*y.getYh()/y.getZlc())); | |
| 2111 | + } | |
| 2112 | + if(d != null) { | |
| 2113 | + cw.setZlc(d.getZlc()); | |
| 2114 | + cw.setHd(d.getHd()); | |
| 2115 | + cw.setJzcd(d.getJzcd()); | |
| 2116 | + cw.setCzcd(d.getCzcd()); | |
| 2117 | + cw.setCdl(d.getCdl()); | |
| 2118 | + cw.setBglyh((d.getZlc()==0? 0:100*d.getHd()/d.getZlc())); | |
| 2119 | + } | |
| 2120 | + } | |
| 2121 | + | |
| 2122 | + String key = "",keyNext = ""; | |
| 2123 | + if(flag == 1){ | |
| 2124 | + if(cw.getjGh() != null && cw.getjName() != null) | |
| 2125 | + key += cw.getjGh() + "/" + cw.getjName(); | |
| 2126 | + if(cwNext.getjGh() != null && cwNext.getjName() != null) | |
| 2127 | + keyNext += cwNext.getjGh() + "/" + cwNext.getjName(); | |
| 2128 | + } else if(flag == 2){ | |
| 2129 | + if(cw.getsGh() != null && cw.getsName() != null) | |
| 2130 | + key += cw.getsGh() + "/" + cw.getsName(); | |
| 2131 | + if(cwNext.getsGh() != null && cwNext.getsName() != null) | |
| 2132 | + keyNext += cwNext.getsGh() + "/" + cwNext.getsName(); | |
| 2133 | + } else if(flag == 3){ | |
| 2134 | + if(cw.getCl() != null) | |
| 2135 | + key += cw.getCl(); | |
| 2136 | + if(cwNext.getCl() != null) | |
| 2137 | + keyNext += cwNext.getCl(); | |
| 2138 | + } | |
| 2139 | + key = cw.getFgsdm()+"/"+cw.getXl() + "/" + key; | |
| 2140 | + keyNext = cw.getFgsdm()+"/"+cwNext.getXl() + "/" + keyNext; | |
| 2141 | + CalcWaybillDetail calc = new CalcWaybillDetail(); | |
| 2142 | + List<CalcWaybillDetail> calcList = new ArrayList<>(); | |
| 2143 | + // 是否一行数据的第一个、生成key,calc为刚添加,不去和cw相加 | |
| 2144 | + boolean ifFirst = false; | |
| 2145 | + if(keyMapList.containsKey(key)){ | |
| 2146 | + calc = keyMap.get(key); | |
| 2147 | + calcList = keyMapList.get(key); | |
| 2148 | + } else { | |
| 2149 | + // 深度拷贝对象 | |
| 2150 | + BeanUtils.copyProperties(cw,calc); | |
| 2151 | + keyMap.put(key, calc); | |
| 2152 | + dayIndex = 0; | |
| 2153 | + ifFirst = true; | |
| 2154 | + } | |
| 2155 | + | |
| 2156 | + CalcWaybillDetail dayc = null; | |
| 2157 | + if("m".equals(timeType)){ | |
| 2158 | + while (!dayList.get(dayIndex).containsKey(cw.getRqStr())){ | |
| 2159 | + calcList.add(new CalcWaybillDetail()); | |
| 2160 | + dayIndex++; | |
| 2161 | + } | |
| 2162 | + dayc = dayList.get(dayIndex).get(cw.getRqStr()); | |
| 2163 | + } else if("y".equals(timeType)){ | |
| 2164 | + while (!dayList.get(dayIndex).containsKey(cw.getRqStr().substring(0,7))){ | |
| 2165 | + calcList.add(new CalcWaybillDetail()); | |
| 2166 | + dayIndex++; | |
| 2167 | + } | |
| 2168 | + dayc = dayList.get(dayIndex).get(cw.getRqStr().substring(0,7)); | |
| 2169 | + } | |
| 2170 | + | |
| 2171 | + | |
| 2172 | + // 天数相加 | |
| 2173 | + this.summation(dayc, cw); | |
| 2174 | + // 左边固定列数据相加 | |
| 2175 | + if(!ifFirst) | |
| 2176 | + this.summation(calc, cw); | |
| 2177 | + // 左边合计相加 | |
| 2178 | + this.summation(zjCalc, cw); | |
| 2179 | + | |
| 2180 | + | |
| 2181 | + if(dayIndexPrev == dayIndex){ | |
| 2182 | + CalcWaybillDetail cwPrev = calcList.get(dayIndex); | |
| 2183 | + this.summation(cwPrev, cw); | |
| 2184 | + } else { | |
| 2185 | + CalcWaybillDetail cwd = new CalcWaybillDetail(); | |
| 2186 | + // 深度拷贝对象 | |
| 2187 | + BeanUtils.copyProperties(cw,cwd); | |
| 2188 | + calcList.add(cwd); | |
| 2189 | + calc.setTs(calc.getTs()+1); | |
| 2190 | + zjCalc.setTs(zjCalc.getTs()+1); | |
| 2191 | + } | |
| 2192 | + | |
| 2193 | + // 把下标 | |
| 2194 | + dayIndexPrev = dayIndex; | |
| 2195 | + // timeType 为m 月报表时,日期不一样就换列,为y 年报表是,月份不一样换列 | |
| 2196 | + if("m".equals(timeType) && cwNext != null && key.equals(keyNext) && !cw.getRqStr().equals(cwNext.getRqStr())){ | |
| 2197 | + dayIndex++; | |
| 2198 | + } else if("y".equals(timeType) && cwNext != null && key.equals(keyNext) && !cw.getRqStr().substring(0,7).equals(cwNext.getRqStr().substring(0,7))){ | |
| 2199 | + dayIndex++; | |
| 2200 | + } else if(!key.equals(keyNext)){ | |
| 2201 | + // 满数据的不用补空格 | |
| 2202 | + while (dayList.size() > dayIndex+1){ | |
| 2203 | + calcList.add(new CalcWaybillDetail()); | |
| 2204 | + dayIndex++; | |
| 2205 | + } | |
| 2206 | + // 换列了从头开始,上一个下标赋值为初始 | |
| 2207 | + dayIndexPrev = -1; | |
| 2208 | + } | |
| 2209 | + // 右边可变列添加数据 | |
| 2210 | + keyMapList.put(key,calcList); | |
| 2211 | + } | |
| 2212 | + | |
| 2213 | + // 表头和数据 | |
| 2214 | + Iterator iter = keyMap.entrySet().iterator(); | |
| 2215 | + | |
| 2216 | + List<String> list1 = new ArrayList<>(); | |
| 2217 | + list1.add("序号"); | |
| 2218 | + list1.add("所属公司"); | |
| 2219 | + list1.add("线路"); | |
| 2220 | + if(flag==1 ||flag==2 ){ | |
| 2221 | + list1.add("工号"); | |
| 2222 | + list1.add("姓名"); | |
| 2223 | + } else if(flag==3){ | |
| 2224 | + list1.add("自编号"); | |
| 2225 | + list1.add("车牌号"); | |
| 2226 | + list1.add("燃油类型"); | |
| 2227 | + } | |
| 2228 | + list1.add("计划公里"); | |
| 2229 | + list1.add("总公里"); | |
| 2230 | + list1.add("空驶公里"); | |
| 2231 | + list1.add("临加公里"); | |
| 2232 | + list1.add("烂班公里"); | |
| 2233 | + list1.add("m".equals(timeType)?"天数":"月数"); | |
| 2234 | + for(int i=day; i<=day2; i++){ | |
| 2235 | + list1.add((i<10?"0"+i:i)+("m".equals(timeType)?"日":"月")); | |
| 2236 | + } | |
| 2237 | + if("bgldh".equals(itemDetails) || "bglyh".equals(itemDetails)){ | |
| 2238 | + list1.add("平均"); | |
| 2239 | + } else | |
| 2240 | + list1.add("合计"); | |
| 2241 | + resList.add(list1); | |
| 2242 | + | |
| 2243 | + Map<String, String> carsMap = new HashMap<>(); | |
| 2244 | + List<Cars> carsList = carsRepository.findCars(); | |
| 2245 | + for (Cars c:carsList) { | |
| 2246 | + String sfdc = c.getSfdc()+""; | |
| 2247 | + carsMap.put(c.getInsideCode(), sfdc.equals("true")?"纯电动":"柴油"); | |
| 2248 | + } | |
| 2249 | + | |
| 2250 | + int i=1; | |
| 2251 | + DecimalFormat df = new DecimalFormat("0.00");//格式化小数 | |
| 2252 | + double allNum = 0.0; | |
| 2253 | + while (iter.hasNext()) { | |
| 2254 | + Map.Entry entry = (Map.Entry) iter.next(); | |
| 2255 | + // 获取key | |
| 2256 | + String key = (String) entry.getKey(); | |
| 2257 | + // 获取value | |
| 2258 | + CalcWaybillDetail c = (CalcWaybillDetail) entry.getValue(); | |
| 2259 | + | |
| 2260 | + List<CalcWaybillDetail> cList = keyMapList.get(key); | |
| 2261 | + | |
| 2262 | + List<String> listStr = new ArrayList<>(); | |
| 2263 | + listStr.add(i+""); | |
| 2264 | + i++; | |
| 2265 | + listStr.add(c.getFgsname()); | |
| 2266 | + listStr.add(c.getXlName()); | |
| 2267 | + if("jsy".equals(statisticalObj)){ | |
| 2268 | + listStr.add(c.getjGh()); | |
| 2269 | + listStr.add(c.getjName()); | |
| 2270 | + } else if("cwy".equals(statisticalObj)){ | |
| 2271 | + listStr.add(c.getsGh()); | |
| 2272 | + listStr.add(c.getsName()); | |
| 2273 | + } else if("cl".equals(statisticalObj)){ | |
| 2274 | + listStr.add(c.getCl()); | |
| 2275 | + listStr.add(BasicData.nbbmCompanyPlateMap.get(c.getCl())+""); | |
| 2276 | + listStr.add(carsMap.get(c.getCl())); | |
| 2277 | + } else if("xl".equals(statisticalObj)){ | |
| 2278 | + | |
| 2279 | + } | |
| 2280 | + listStr.add(df.format(c.getJhyylc()+c.getJhfyylc())); | |
| 2281 | + listStr.add(df.format(c.getSjyylc()+c.getSjfyylc()+c.getLjyylc()+c.getLjfyylc())); | |
| 2282 | +// listStr.add(df.format(c.getSjyylc()+c.getLjyylc())); | |
| 2283 | + listStr.add(df.format(c.getSjfyylc()+c.getLjfyylc())); | |
| 2284 | + listStr.add(df.format(c.getLjyylc()+c.getLjfyylc())); | |
| 2285 | + listStr.add(df.format(c.getLblc())); | |
| 2286 | + listStr.add(c.getTs()+""); | |
| 2287 | + c.setBglhd(c.getBglhd()/c.getTs()); | |
| 2288 | + c.setBglyh(c.getBglyh()/c.getTs()); | |
| 2289 | + // 把列合计的数添加到最后一个 | |
| 2290 | + cList.add(c); | |
| 2291 | + // DecimalFormat df = new DecimalFormat("0.00");//格式化小数 | |
| 2292 | + for (CalcWaybillDetail c1:cList) { | |
| 2293 | + if(StringUtils.isEmpty(c1.getXl())) { | |
| 2294 | + listStr.add(""); | |
| 2295 | + } else{ | |
| 2296 | + if("jzlAll".equals(itemDetails)){ | |
| 2297 | + listStr.add(df.format(c1.getJzl())); | |
| 2298 | + }else if("jzl0".equals(itemDetails)){ | |
| 2299 | + listStr.add(df.format(c1.getJzl0())); | |
| 2300 | + } else if("jzl-10".equals(itemDetails)){ | |
| 2301 | + listStr.add(df.format(c1.getJzl10())); | |
| 2302 | + } else if("yhl".equals(itemDetails)){ | |
| 2303 | + listStr.add(df.format(c1.getYh())); | |
| 2304 | + } else if("jccy".equals(itemDetails)){ | |
| 2305 | + listStr.add(df.format(c1.getJzyl())); | |
| 2306 | + } else if("cccy".equals(itemDetails)){ | |
| 2307 | + listStr.add(df.format(c1.getCzyl())); | |
| 2308 | + } else if("bglyh".equals(itemDetails)){ | |
| 2309 | + listStr.add(df.format(c1.getZlc()==0? 0:100*c1.getYh()/c1.getZlc())); | |
| 2310 | + } else if("dh".equals(itemDetails)){ | |
| 2311 | + listStr.add(df.format(c1.getHd())); | |
| 2312 | + } else if("cdl".equals(itemDetails)){ | |
| 2313 | + listStr.add(df.format(c1.getCdl())); | |
| 2314 | + } else if("cccd".equals(itemDetails)){ | |
| 2315 | + listStr.add(df.format(c1.getCzcd())); | |
| 2316 | + } else if("jccd".equals(itemDetails)){ | |
| 2317 | + listStr.add(df.format(c1.getJzcd())); | |
| 2318 | + } else if("bgldh".equals(itemDetails)){ | |
| 2319 | + listStr.add(df.format(c1.getZlc()==0? 0:100*c1.getHd()/c1.getZlc())); | |
| 2320 | +// listStr.add(df.format(c1.getBglhd())); | |
| 2321 | + } else if("zgl".equals(itemDetails)){ | |
| 2322 | + listStr.add(df.format((c1.getSjyylc()+c1.getSjfyylc()+c1.getLjfyylc()+c1.getLjyylc()))); | |
| 2323 | + } else if("jhgl".equals(itemDetails)){ | |
| 2324 | + listStr.add(df.format(c1.getJhyylc()+c1.getJhfyylc())); | |
| 2325 | + } else if("sjbc".equals(itemDetails)){ | |
| 2326 | + listStr.add(c1.getSjyybc()+c1.getSjfyybc()+""); | |
| 2327 | + } else if("jhbc".equals(itemDetails)){ | |
| 2328 | + listStr.add(c1.getJhyybc()+c1.getJhfyybc()+""); | |
| 2329 | + } | |
| 2330 | + } | |
| 2331 | + } | |
| 2332 | + allNum = allNum + Double.parseDouble(listStr.get(listStr.size()-1)); | |
| 2333 | + resList.add(listStr); | |
| 2334 | + } | |
| 2335 | + | |
| 2336 | + // 合计列 | |
| 2337 | + List<String> listEnd = new ArrayList<>(); | |
| 2338 | + listEnd.add("合计"); | |
| 2339 | + listEnd.add(df.format(zjCalc.getJhyylc()+zjCalc.getJhfyylc())); | |
| 2340 | + listEnd.add(df.format(zjCalc.getSjfyylc()+zjCalc.getSjyylc()+zjCalc.getLjyylc()+zjCalc.getLjfyylc()));//总公里 | |
| 2341 | +// listEnd.add(df.format(zjCalc.getSjyylc()+zjCalc.getLjyylc()));//营运 | |
| 2342 | + listEnd.add(df.format(zjCalc.getSjfyylc()+zjCalc.getLjfyylc())); | |
| 2343 | + listEnd.add(df.format(zjCalc.getLjfyylc()+zjCalc.getLjyylc())); | |
| 2344 | + listEnd.add(df.format(zjCalc.getLblc())); | |
| 2345 | + listEnd.add(zjCalc.getTs()+""); | |
| 2346 | + double all = 0.0; | |
| 2347 | + for (Map<String, CalcWaybillDetail> cmap:dayList) { | |
| 2348 | + for (Map.Entry<String, CalcWaybillDetail> cw : cmap.entrySet()) { | |
| 2349 | +// System.out.println("key = " + cw.getKey() + ", value = " + cw.getValue()); | |
| 2350 | + CalcWaybillDetail c1 = cw.getValue(); | |
| 2351 | + if("jzlAll".equals(itemDetails)){ | |
| 2352 | + listEnd.add(df.format(c1.getJzl())); | |
| 2353 | + } else if("jzl0".equals(itemDetails)){ | |
| 2354 | + listEnd.add(df.format(c1.getJzl0())); | |
| 2355 | + } else if("jzl-10".equals(itemDetails)){ | |
| 2356 | + listEnd.add(df.format(c1.getJzl10())); | |
| 2357 | + } else if("yhl".equals(itemDetails)){ | |
| 2358 | + listEnd.add(df.format(c1.getYh())); | |
| 2359 | + } else if("jccy".equals(itemDetails)){ | |
| 2360 | + listEnd.add(df.format(c1.getJzyl())); | |
| 2361 | + } else if("cccy".equals(itemDetails)){ | |
| 2362 | + listEnd.add(df.format(c1.getCzyl())); | |
| 2363 | + } else if("bglyh".equals(itemDetails)){ | |
| 2364 | + listEnd.add(df.format(c1.getZlc()==0? 0:100*c1.getYh()/c1.getZlc())); | |
| 2365 | + } else if("dh".equals(itemDetails)){ | |
| 2366 | + listEnd.add(df.format(c1.getHd())); | |
| 2367 | + } else if("cdl".equals(itemDetails)){ | |
| 2368 | + listEnd.add(df.format(c1.getCdl())); | |
| 2369 | + } else if("cccd".equals(itemDetails)){ | |
| 2370 | + listEnd.add(df.format(c1.getCzcd())); | |
| 2371 | + } else if("jccd".equals(itemDetails)){ | |
| 2372 | + listEnd.add(df.format(c1.getJzcd())); | |
| 2373 | + } else if("bgldh".equals(itemDetails)){ | |
| 2374 | +// listEnd.add(df.format(c1.getBglhd())); | |
| 2375 | + listEnd.add(df.format(c1.getZlc()==0? 0:100*c1.getHd()/c1.getZlc())); | |
| 2376 | + } else if("zgl".equals(itemDetails)){ | |
| 2377 | + listEnd.add((df.format(c1.getSjyylc()+c1.getSjfyylc()+c1.getLjfyylc()+c1.getLjyylc()))); | |
| 2378 | + } else if("jhgl".equals(itemDetails)){ | |
| 2379 | + listEnd.add((df.format(c1.getJhyylc()+c1.getJhfyylc()))); | |
| 2380 | + } else if("sjbc".equals(itemDetails)){ | |
| 2381 | + listEnd.add(c1.getSjyybc()+c1.getSjfyybc()+""); | |
| 2382 | + } else if("jhbc".equals(itemDetails)){ | |
| 2383 | + listEnd.add((c1.getJhyybc()+c1.getJhfyybc())+""); | |
| 2384 | + } | |
| 2385 | + } | |
| 2386 | + all = all + Double.parseDouble(listEnd.get(listEnd.size()-1)); | |
| 2387 | + } | |
| 2388 | + | |
| 2389 | + // 百公里电油耗时为平均数 | |
| 2390 | + if("bgldh".equals(itemDetails) || "bglyh".equals(itemDetails)){ | |
| 2391 | + allNum = allNum/keyMap.size(); | |
| 2392 | + all = all/dayList.size(); | |
| 2393 | + } | |
| 2394 | +// listEnd.add(df.format(allNum)+"/"+df.format(all)); | |
| 2395 | + listEnd.add(df.format(all)); | |
| 2396 | + resList.add(listEnd); | |
| 2397 | + | |
| 2398 | + return resList; | |
| 2399 | + } | |
| 2400 | + | |
| 2401 | + public CalcWaybillDetail initCalcWaybillDetail(){ | |
| 2402 | + CalcWaybillDetail calc = new CalcWaybillDetail(); | |
| 2403 | + calc.setJhyybc(0); | |
| 2404 | + calc.setJhyylc(0d); | |
| 2405 | + calc.setJhfyybc(0); | |
| 2406 | + calc.setJhfyylc(0d); | |
| 2407 | + calc.setSjyybc(0); | |
| 2408 | + calc.setSjyylc(0d); | |
| 2409 | + calc.setSjfyybc(0); | |
| 2410 | + calc.setSjfyylc(0d); | |
| 2411 | + calc.setLbbc(0); | |
| 2412 | + calc.setLblc(0d); | |
| 2413 | + calc.setLjbc(0); | |
| 2414 | + calc.setLjyylc(0d); | |
| 2415 | + calc.setZlc(0d); | |
| 2416 | + calc.setCzyl(0d); | |
| 2417 | + calc.setJzyl(0d); | |
| 2418 | + calc.setJzl(0d); | |
| 2419 | + calc.setJzl0(0d); | |
| 2420 | + calc.setJzl10(0d); | |
| 2421 | + calc.setYh(0d); | |
| 2422 | + calc.setCzcd(0d); | |
| 2423 | + calc.setJzcd(0d); | |
| 2424 | + calc.setCdl(0d); | |
| 2425 | + calc.setHd(0d); | |
| 2426 | + calc.setTs(0); | |
| 2427 | + return calc; | |
| 2428 | + } | |
| 2429 | + | |
| 2430 | + public CalcWaybillDetail summation(CalcWaybillDetail c1, CalcWaybillDetail c2){ | |
| 2431 | + c1.setJhyybc(c1.getJhyybc() + c2.getJhyybc()); | |
| 2432 | + c1.setJhyylc(Arith.add(c1.getJhyylc(), c2.getJhyylc())); | |
| 2433 | + c1.setJhfyybc(c1.getJhfyybc() + c2.getJhfyybc()); | |
| 2434 | + c1.setJhfyylc(Arith.add(c1.getJhfyylc(), c2.getJhfyylc())); | |
| 2435 | + c1.setSjyybc(c1.getSjyybc() + c2.getSjyybc()); | |
| 2436 | + c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getSjyylc())); | |
| 2437 | +// c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getLjyylc()));// 把临加的也算上了,后面不用加了 | |
| 2438 | + c1.setSjfyybc(c1.getSjfyybc() + c2.getSjfyybc()); | |
| 2439 | + c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getSjfyylc())); | |
| 2440 | +// c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getLjfyylc()));// 把临加的也算上了,后面不用加了 | |
| 2441 | + c1.setLbbc(c1.getLbbc() + c2.getLbbc()); | |
| 2442 | + c1.setLblc(Arith.add(c1.getLblc(), c2.getLblc())); | |
| 2443 | + c1.setLjbc(c1.getLjbc() + c2.getLjbc()); | |
| 2444 | + c1.setLjyylc(Arith.add(c1.getLjyylc(), c2.getLjyylc())); | |
| 2445 | + c1.setLjfyylc(Arith.add(c1.getLjfyylc(), c2.getLjfyylc())); | |
| 2446 | + c1.setZlc(Arith.add(c1.getZlc(),c2.getZlc())); | |
| 2447 | + c1.setCzyl(Arith.add(c1.getCzyl(),c2.getCzyl())); | |
| 2448 | + c1.setJzyl(Arith.add(c1.getJzyl(),c2.getJzyl())); | |
| 2449 | + c1.setJzl(Arith.add(c1.getJzl(),c2.getJzl())); | |
| 2450 | + c1.setJzl0(Arith.add(c1.getJzl0(),c2.getJzl0())); | |
| 2451 | + c1.setJzl10(Arith.add(c1.getJzl10(),c2.getJzl10())); | |
| 2452 | + c1.setYh(Arith.add(c1.getYh(),c2.getYh())); | |
| 2453 | + c1.setHd(Arith.add(c1.getHd(),c2.getHd())); | |
| 2454 | + c1.setCzcd(Arith.add(c1.getCzcd(),c2.getCzcd())); | |
| 2455 | + c1.setJzcd(Arith.add(c1.getJzcd(),c2.getJzcd())); | |
| 2456 | + c1.setCdl(Arith.add(c1.getCdl(),c2.getCdl())); | |
| 2457 | + c1.setTs(c1.getTs()+c2.getTs()); | |
| 2458 | +// c1.setDtbc(c1.getDtbc() + c2.getDtbc()); | |
| 2459 | + return c1; | |
| 2460 | + } | |
| 2461 | +} | |
| 2462 | + | |
| 2463 | +class AccountXlbmByping implements Comparator<Map<String, Object>> { | |
| 2464 | + @Override | |
| 2465 | + public int compare(Map<String, Object> o1, Map<String, Object> o2) { | |
| 2466 | + // TODO Auto-generated method stub | |
| 2467 | +// PinyinHelper.convertToPinyinString(ppy.getName(), | |
| 2468 | +// "" , PinyinFormat.WITHOUT_TONE) | |
| 2469 | + return o1.get("xlNamePy").toString().compareTo( | |
| 2470 | + o2.get("xlNamePy").toString()); | |
| 2471 | + } | |
| 2472 | +} | ... | ... |