Commit 57dd55fa5722357f78b7927519b729dbcfa62391

Authored by ljq
1 parent 84eee31a

娄高峰的浦交大屏接口

src/main/java/com/bsth/server_rs/bigdata/BigscreenService.java 0 → 100644
  1 +package com.bsth.server_rs.bigdata;
  2 +
  3 +import java.math.BigDecimal;
  4 +import java.sql.ResultSet;
  5 +import java.sql.SQLException;
  6 +import java.text.DecimalFormat;
  7 +import java.text.SimpleDateFormat;
  8 +import java.util.ArrayList;
  9 +import java.util.Date;
  10 +import java.util.HashMap;
  11 +import java.util.HashSet;
  12 +import java.util.Iterator;
  13 +import java.util.List;
  14 +import java.util.Map;
  15 +import java.util.Set;
  16 +
  17 +import javax.ws.rs.GET;
  18 +import javax.ws.rs.Path;
  19 +import javax.ws.rs.Produces;
  20 +import javax.ws.rs.core.MediaType;
  21 +
  22 +import org.apache.commons.lang.StringUtils;
  23 +import org.slf4j.Logger;
  24 +import org.slf4j.LoggerFactory;
  25 +import org.springframework.beans.factory.annotation.Autowired;
  26 +import org.springframework.jdbc.core.JdbcTemplate;
  27 +import org.springframework.jdbc.core.RowMapper;
  28 +import org.springframework.stereotype.Component;
  29 +
  30 +import com.alibaba.fastjson.JSON;
  31 +import com.alibaba.fastjson.JSONObject;
  32 +import com.bsth.entity.ChildTaskPlan;
  33 +import com.bsth.entity.ScheduleRealInfo;
  34 +import com.bsth.repository.ScheduleRealInfoRepository;
  35 +import com.bsth.util.Arith;
  36 +
  37 +@Component
  38 +@Path("/bigscreen")
  39 +@Produces({MediaType.APPLICATION_JSON})
  40 +public class BigscreenService {
  41 + Logger logger = LoggerFactory.getLogger(this.getClass());
  42 +
  43 + @Autowired
  44 + JdbcTemplate jdbcTemplate;
  45 +
  46 + @Autowired
  47 + ScheduleRealInfoRepository scheduleRealInfoRepository;
  48 +
  49 + DecimalFormat df = new DecimalFormat("0.00");
  50 +
  51 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  52 +
  53 + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
  54 +
  55 + /*
  56 + * 线路接口开始
  57 + */
  58 + private static String getNature(String natureCode){
  59 + String natureName="";
  60 + if("lj".equals(natureCode)){
  61 + natureName="路救";
  62 + }else if("bc".equals(natureCode)){
  63 + natureName="备车";
  64 + }else if("dbc".equals(natureCode)){
  65 + natureName="定班车";
  66 + }else if("yxl".equals(natureCode)){
  67 + natureName="夜宵路";
  68 + }else if("cgxl".equals(natureCode)){
  69 + natureName="常规线路";
  70 + }else if("gjxl".equals(natureCode)){
  71 + natureName="过江线路";
  72 + }else if("csbs".equals(natureCode)){
  73 + natureName="穿梭巴士";
  74 + }else if("tyxl".equals(natureCode)){
  75 + natureName="特约线路";
  76 + }else if("cctxl".equals(natureCode)){
  77 + natureName="村村通线路";
  78 + }else if("qt".equals(natureCode)){
  79 + natureName="其他";
  80 + }else {
  81 + natureName="";
  82 + }
  83 + return natureName;
  84 + }
  85 +
  86 + private static String getGs(String gs){
  87 + String name="";
  88 + if("05".equals(gs)){
  89 + name="杨高公司";
  90 + }else if("22".equals(gs)){
  91 + name="金高公司";
  92 + }else if("26".equals(gs)){
  93 + name="南汇公司";
  94 + }else if("55".equals(gs)){
  95 + name="上南公司";
  96 + }else{
  97 + name="";
  98 + }
  99 + return name;
  100 + }
  101 +
  102 + private static String getState(String carState){
  103 + if(carState.equals("1")){
  104 + return "在册未在用";
  105 + }else if(carState.equals("2")){
  106 + return "在册在用";
  107 + }else if(carState.equals("3")){
  108 + return "报废审核中";
  109 + }else if(carState.equals("4")){
  110 + return "报废待更新";
  111 + }else if(carState.equals("5")){
  112 + return "报废已更新";
  113 + }else{
  114 + return "";
  115 + }
  116 + }
  117 +
  118 + public static boolean isInOut(ScheduleRealInfo s){
  119 + boolean fage=false;
  120 + if(s.getBcType().equals("in")){
  121 + fage=true;
  122 + }
  123 + if(s.getBcType().equals("out")){
  124 + fage=true;
  125 + }
  126 + if(s.getBcType().equals("ldks")){
  127 + fage=true;
  128 + }
  129 +
  130 + return fage;
  131 + }
  132 +
  133 + public Map<String, Long> getEndtime(String date){
  134 + Map<String, Long> map=new HashMap<String,Long>();
  135 + String sql="select xl,endtime from bsth_c_calc_count "
  136 + + " where date='"+date+"' ";
  137 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  138 + new RowMapper<Map<String, Object>>(){
  139 + @Override
  140 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  141 + Map<String, Object> m=new HashMap<String, Object>();
  142 + m.put("line", rs.getString("xl"));
  143 + m.put("endtime", rs.getString("endtime"));
  144 + return m;
  145 + }
  146 + });
  147 + for (int i = 0; i < list.size(); i++) {
  148 + map.put(list.get(i).get("line").toString(),
  149 + Long.parseLong(list.get(i).get("endtime").toString()));
  150 + }
  151 + return map;
  152 + }
  153 +
  154 + @GET
  155 + @Path("/selectData/getBigScreen")
  156 + public JSONObject getBigScreen(){
  157 + Map<String, Object> resMap = new HashMap<String, Object>();
  158 +
  159 + Date dd = new Date();
  160 + String date = sd.format(dd); //yyyy-MM-dd 当天
  161 + Date dd2 = new Date();
  162 + dd2.setTime(dd.getTime() - 7l*1000*60*60*24);
  163 + String date2 = sd.format(dd2); //yyyy-MM-dd 7天前
  164 +
  165 + String[] dates = new String[8];
  166 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  167 +
  168 + for(int i = 0; i < 8; i++){
  169 + Date tempDate = new Date();
  170 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  171 + String format = sd.format(tempDate);
  172 + dates[i] = format;
  173 + datesMap.put(format, i);
  174 + }
  175 +
  176 + String gpLineSql = "select * from bsth_c_line_plate";
  177 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  178 + new RowMapper<Map<String, Object>>(){
  179 + @Override
  180 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  181 + Map<String, Object> m=new HashMap<String,Object>();
  182 + m.put("lineName", rs.getString("line_name"));
  183 + m.put("lineCode", rs.getString("line_code"));
  184 + return m;
  185 + }
  186 + });
  187 +
  188 + Set<String> gpSet = new HashSet<String>();
  189 + for(Map<String, Object> t : gpLineList){
  190 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  191 + gpSet.add(t.get("lineCode").toString().trim());
  192 + }
  193 + }
  194 +
  195 + String lineSql="SELECT b.start_opt,a.company,a.line_code,a.name,a.level,"
  196 + + " a.shanghai_linecode, a.nature from "
  197 + + " bsth_c_line a left join bsth_c_line_config b "
  198 + + " on a.id=b.line where "
  199 + + " a.shanghai_linecode is not null and a.shanghai_linecode !='' and a.destroy=0 "
  200 + + " and a.remove=0 and a.nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  201 + List<Map<String, Object>> lineList=jdbcTemplate.query(lineSql,
  202 + new RowMapper<Map<String, Object>>(){
  203 + @Override
  204 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  205 + Map<String, Object> m=new HashMap<String,Object>();
  206 + m.put("state", rs.getString("start_opt"));
  207 + m.put("company", rs.getString("company"));
  208 + m.put("companyName", getGs(rs.getString("company")));
  209 + m.put("lineCode",rs.getString("line_code"));
  210 + m.put("name", rs.getString("name"));
  211 + m.put("level", rs.getString("level"));
  212 + m.put("shanghaiLinecode", rs.getString("shanghai_linecode"));
  213 + m.put("nature", getNature(rs.getString("nature")));
  214 + return m;
  215 + }
  216 + });
  217 +
  218 + Set<String> yyLine = new HashSet<String>();
  219 + int level1 = 0, level2 = 0;
  220 + for(Map<String, Object> t : lineList){
  221 + if(t.get("level") != null){
  222 + if("1".equals(t.get("level").toString())){
  223 + ++level1;
  224 + } else if("2".equals(t.get("level").toString())){
  225 + ++level2;
  226 + }
  227 + }
  228 +
  229 + if(t.get("lineCode") != null){
  230 + yyLine.add(t.get("lineCode").toString());
  231 + }
  232 + }
  233 +
  234 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  235 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  236 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  237 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  238 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  239 + + " from bsth_c_calc_count "
  240 + + " where date >= '"+date2+"' and date <= '"+date+"'";
  241 +
  242 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  243 + new RowMapper<Map<String, Object>>(){
  244 + @Override
  245 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  246 + Map<String, Object> m=new HashMap<String,Object>();
  247 + m.put("lineCode",rs.getString("xl"));
  248 + m.put("lineName", rs.getString("xl_name"));
  249 + m.put("date", rs.getString("date"));
  250 +
  251 + m.put("jhbc", rs.getString("jhbc"));
  252 + m.put("sjbc", rs.getString("sjbc"));
  253 + m.put("bczxl", rs.getString("bczxl"));
  254 + m.put("jhbcz", rs.getString("jhbcz"));
  255 +
  256 + m.put("jhcc", rs.getString("jhcc"));
  257 + m.put("sjcc", rs.getString("sjcc"));
  258 + m.put("ccl", rs.getString("ccl"));
  259 + m.put("jhccz", rs.getString("jhccz"));
  260 +
  261 + m.put("jhyylc", rs.getString("jhyylc"));
  262 + m.put("sjyylc", rs.getString("sjyylc"));
  263 + m.put("jhyylcz", rs.getString("jhyylcz"));
  264 + m.put("jhkslc", rs.getString("jhkslc"));
  265 + m.put("sjkslc", rs.getString("sjkslc"));
  266 + m.put("jhkslcz", rs.getString("jhkslcz"));
  267 +
  268 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  269 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  270 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  271 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  272 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  273 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  274 +
  275 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  276 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  277 + m.put("smbczdl", rs.getString("smbczdl"));
  278 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  279 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  280 + m.put("smbczdlz", rs.getString("smbczdlz"));
  281 +
  282 + m.put("jhszfcs", rs.getString("jhszfcs"));
  283 + m.put("sjszfczds", rs.getString("sjszfczds"));
  284 + m.put("szfczdl", rs.getString("szfczdl"));
  285 +
  286 + Date date = new Date();
  287 + date.setTime(rs.getTimestamp("create_date").getTime());
  288 + m.put("createDate", sdf.format(date));
  289 + return m;
  290 + }
  291 + });
  292 +
  293 + List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();
  294 + List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();
  295 + List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();
  296 + List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();
  297 +
  298 + List<Map<String, Object>> ccList = createMap("计划出车率", dates);
  299 + List<Map<String, Object>> bcList = createMap("计划班次执行率", dates);
  300 + List<Map<String, Object>> smList = createMap("首末班发车准点率", dates);
  301 + List<Map<String, Object>> qqList = createMap("起讫站发车准点率", dates);
  302 + List<Map<String, Object>> gpList = createMap("挂牌线路发车准点率", dates);
  303 +
  304 + long sjbcs_z = 0l;//实时总班次
  305 + BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程
  306 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  307 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0;
  308 +
  309 + for(Map<String, Object> t : list){
  310 + if(yyLine.contains(t.get("lineCode").toString())){
  311 + String d = t.get("date").toString();
  312 + if(date.equals(d)){
  313 + sjbcs_z += Long.valueOf(t.get("sjbc").toString());
  314 + yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));
  315 +
  316 + jhcc += Long.valueOf(t.get("jhccz").toString());
  317 + sjcc += Long.valueOf(t.get("sjcc").toString());
  318 + jhbc += Long.valueOf(t.get("jhbc").toString());
  319 + sjbc += Long.valueOf(t.get("sjbc").toString());
  320 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  321 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  322 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  323 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  324 + if(gpSet.contains(t.get("lineCode").toString())){
  325 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  326 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  327 + }
  328 +
  329 + Map<String, Object> bc = new HashMap<String, Object>();
  330 + bc.put("type", "班次执行详情");
  331 + bc.put("lineName", t.get("lineName").toString());
  332 + bc.put("jh", t.get("jhbc").toString());
  333 + bc.put("sj", t.get("sjbc").toString());
  334 + bcDetail.add(bc);
  335 +
  336 + Map<String, Object> sm = new HashMap<String, Object>();
  337 + sm.put("type", "首站发车详情");
  338 + sm.put("lineName", t.get("lineName").toString());
  339 + sm.put("jh", t.get("jhsmbcs").toString());
  340 + sm.put("sj", t.get("sjsmbczds").toString());
  341 + smDetail.add(sm);
  342 +
  343 + Map<String, Object> qq = new HashMap<String, Object>();
  344 + qq.put("type", "起讫站发车准点详情");
  345 + qq.put("lineName", t.get("lineName").toString());
  346 + qq.put("jh", t.get("jhszfcs").toString());
  347 + qq.put("sj", t.get("sjszfczds").toString());
  348 + qqDetail.add(qq);
  349 +
  350 + if(gpSet.contains(t.get("lineCode").toString())){
  351 + Map<String, Object> gp = new HashMap<String, Object>();
  352 + gp.put("type", "起讫站发车准点详情");
  353 + gp.put("lineName", t.get("lineName").toString());
  354 + gp.put("jh", t.get("jhszfcs").toString());
  355 + gp.put("sj", t.get("sjszfczds").toString());
  356 + gpDetail.add(gp);
  357 + }
  358 + }
  359 +
  360 + Map<String, Object> ccMap = ccList.get(datesMap.get(d));
  361 + Map<String, Object> bcMap = bcList.get(datesMap.get(d));
  362 + Map<String, Object> smMap = smList.get(datesMap.get(d));
  363 + Map<String, Object> qqMap = qqList.get(datesMap.get(d));
  364 + Map<String, Object> gpMap = gpList.get(datesMap.get(d));
  365 +
  366 + ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));
  367 + ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));
  368 + bcMap.put("jh", Long.valueOf(bcMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));
  369 + bcMap.put("sj", Long.valueOf(bcMap.get("sj").toString()) + Long.valueOf(t.get("sjbc").toString()));
  370 + smMap.put("jh", Long.valueOf(smMap.get("jh").toString()) + Long.valueOf(t.get("jhsmbcs").toString()));
  371 + smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));
  372 + qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  373 + qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  374 + if(gpSet.contains(t.get("lineCode").toString())){
  375 + gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  376 + gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  377 + }
  378 +
  379 + }
  380 + }
  381 +
  382 + List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();
  383 + zxlList.addAll(ccList);
  384 + zxlList.addAll(bcList);
  385 + zxlList.addAll(smList);
  386 + zxlList.addAll(qqList);
  387 + zxlList.addAll(gpList);
  388 +
  389 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  390 + detailsList.addAll(bcDetail);
  391 + detailsList.addAll(smDetail);
  392 + detailsList.addAll(qqDetail);
  393 + detailsList.addAll(gpDetail);
  394 +
  395 + for(Map<String, Object> t : zxlList){
  396 + if(t.get("jh") != null && Long.valueOf(t.get("jh").toString()).longValue() > 0l){
  397 + t.put("ratio", new BigDecimal(t.get("sj").toString()).divide(new BigDecimal(t.get("jh").toString()),
  398 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue());
  399 + } else {
  400 + t.put("ratio", "0");
  401 + }
  402 + t.remove("jh");
  403 + t.remove("sj");
  404 + }
  405 +
  406 + List<Map<String, Object>> glList = new ArrayList<Map<String, Object>>();
  407 +
  408 + Date dd1 = new Date();
  409 + dd1.setTime(dd.getTime() - 1l*1000*60*60*24);
  410 + String date1 = sd.format(dd1); //前一天
  411 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date1);
  412 + List<ScheduleRealInfo> list_jh = new ArrayList<ScheduleRealInfo>();
  413 + List<ScheduleRealInfo> list_sj = new ArrayList<ScheduleRealInfo>();
  414 + for(ScheduleRealInfo s : findAll){
  415 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  416 + Set<ChildTaskPlan> cts = s.getcTasks();
  417 + if (cts != null && cts.size() > 0) {
  418 + list_sj.add(s);
  419 + } else {
  420 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  421 + list_sj.add(s);
  422 + }
  423 + }
  424 + }
  425 + }
  426 + double jhyygl = culateJhgl(list_jh);//计划营运公里
  427 + double sjgl = culateSjgl(list_sj);//实际公里
  428 + double sjljgl = culateLjgl(list_sj);//实际临加公里
  429 + double sjyygl = Arith.add(sjgl, sjljgl);//实际营运公里
  430 + double lz = culateCJLC(list_jh, "路阻");
  431 + double dm = culateCJLC(list_jh, "吊慢");
  432 + double gz = culateCJLC(list_jh, "故障");
  433 + double jf = culateCJLC(list_jh, "纠纷");
  434 + double zs = culateCJLC(list_jh, "肇事");
  435 + double qr = culateCJLC(list_jh, "缺人");
  436 + double qc = culateCJLC(list_jh, "缺车");
  437 + double qrqc = Arith.add(qr, qc);//缺人缺车
  438 + double kx = culateCJLC(list_jh, "客稀");
  439 + double qh = culateCJLC(list_jh, "气候");
  440 + double yw = culateCJLC(list_jh, "援外");
  441 + double lb_pc = culateCJLC(list_jh, "配车");
  442 + double lb_by = culateCJLC(list_jh, "保养");
  443 + double lb_cj = culateCJLC(list_jh, "抽减");
  444 + double lb_qt = culateCJLC(list_jh, "其他");
  445 + double qt = Arith.add(Arith.add(lb_pc, lb_by), Arith.add(lb_cj, lb_qt));//其他
  446 +
  447 + Map<String, Object> jhyyglMap = new HashMap<String, Object>();
  448 + jhyyglMap.put("name", "计划营运");
  449 + jhyyglMap.put("value", jhyygl);
  450 + glList.add(jhyyglMap);
  451 + Map<String, Object> sjyyglMap = new HashMap<String, Object>();
  452 + sjyyglMap.put("name", "实际营运");
  453 + sjyyglMap.put("value", sjyygl);
  454 + glList.add(sjyyglMap);
  455 + Map<String, Object> lzMap = new HashMap<String, Object>();
  456 + lzMap.put("name", "路阻");
  457 + lzMap.put("value", lz);
  458 + glList.add(lzMap);
  459 + Map<String, Object> dmMap = new HashMap<String, Object>();
  460 + dmMap.put("name", "吊慢");
  461 + dmMap.put("value", dm);
  462 + glList.add(dmMap);
  463 + Map<String, Object> gzMap = new HashMap<String, Object>();
  464 + gzMap.put("name", "故障");
  465 + gzMap.put("value", gz);
  466 + glList.add(gzMap);
  467 + Map<String, Object> jfMap = new HashMap<String, Object>();
  468 + jfMap.put("name", "纠纷");
  469 + jfMap.put("value", jf);
  470 + glList.add(jfMap);
  471 + Map<String, Object> zsMap = new HashMap<String, Object>();
  472 + zsMap.put("name", "肇事");
  473 + zsMap.put("value", zs);
  474 + glList.add(zsMap);
  475 + Map<String, Object> qrqcMap = new HashMap<String, Object>();
  476 + qrqcMap.put("name", "缺人缺车");
  477 + qrqcMap.put("value", qrqc);
  478 + glList.add(qrqcMap);
  479 + Map<String, Object> kxMap = new HashMap<String, Object>();
  480 + kxMap.put("name", "客稀");
  481 + kxMap.put("value", kx);
  482 + glList.add(kxMap);
  483 + Map<String, Object> qhMap = new HashMap<String, Object>();
  484 + qhMap.put("name", "气候");
  485 + qhMap.put("value", qh);
  486 + glList.add(qhMap);
  487 + Map<String, Object> ywMap = new HashMap<String, Object>();
  488 + ywMap.put("name", "援外");
  489 + ywMap.put("value", yw);
  490 + glList.add(ywMap);
  491 + Map<String, Object> qtMap = new HashMap<String, Object>();
  492 + qtMap.put("name", "其他");
  493 + qtMap.put("value", qt);
  494 + glList.add(qtMap);
  495 +
  496 +
  497 + resMap.put("lineCount", lineList.size());
  498 + resMap.put("level1Count", level1);
  499 + resMap.put("level2Count", level2);
  500 + resMap.put("sjbcs", sjbcs_z);
  501 + resMap.put("sjlcs", yygl_z.doubleValue());
  502 +
  503 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  504 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  505 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  506 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  507 + resMap.put("smbzdl", jhbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  508 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  509 + resMap.put("qqzzdl", jhbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  510 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  511 + resMap.put("gpzdl", jhbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  512 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  513 +
  514 + resMap.put("ratioList", zxlList);
  515 +
  516 + resMap.put("detailsList", detailsList);
  517 +
  518 + resMap.put("mileageList", glList);
  519 +
  520 + return JSON.parseObject(JSON.toJSONString(resMap));
  521 + }
  522 +
  523 + public List<Map<String, Object>> createMap(String type, String[] dates){
  524 + List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
  525 +
  526 + for(int i = 0; i < dates.length; i++){
  527 + Map<String, Object> tempMap = new HashMap<String, Object>();
  528 + tempMap.put("type", type);
  529 + String[] split = dates[i].split("-");
  530 + tempMap.put("type", split[1] + "/" + split[2]);
  531 + tempMap.put("jh", "0");
  532 + tempMap.put("sj", "0");
  533 + mapList.add(tempMap);
  534 + }
  535 +
  536 + return mapList;
  537 + }
  538 +
  539 + public double culateJhgl(List<ScheduleRealInfo> lists) {
  540 + // TODO Auto-generated method stub
  541 + double jhgl=0;
  542 + for (int i = 0; i < lists.size(); i++) {
  543 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  544 + if (!isInOut(scheduleRealInfo)) {
  545 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
  546 + jhgl=Arith.add(jhgl,scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig());
  547 + }
  548 + }
  549 + }
  550 + return jhgl;
  551 + }
  552 +
  553 + public double culateSjgl(List<ScheduleRealInfo> lists) {
  554 + // TODO Auto-generated method stub
  555 + double sjgl=0;
  556 + for (int i = 0; i < lists.size(); i++) {
  557 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  558 + if (!isInOut(scheduleRealInfo)) {
  559 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  560 + if(!scheduleRealInfo.isSflj()){
  561 + if(childTaskPlans.isEmpty()){
  562 + if(!(scheduleRealInfo.getStatus() == -1)){
  563 + double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
  564 + double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
  565 + if(jhlc-jhlcOrig>0){
  566 + sjgl=Arith.add(sjgl,jhlcOrig);
  567 + }else{
  568 + sjgl=Arith.add(sjgl,jhlc);
  569 + }
  570 +
  571 + }
  572 + }else{
  573 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  574 + while (it.hasNext()) {
  575 + ChildTaskPlan childTaskPlan = it.next();
  576 + if(childTaskPlan.getMileageType().equals("service")
  577 + &&"正常".equals(childTaskPlan.getType1())
  578 + && childTaskPlan.getCcId()==null){
  579 + if (!childTaskPlan.isDestroy()) {
  580 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  581 + sjgl=Arith.add(sjgl,jhgl);
  582 + }
  583 + }
  584 + }
  585 + }
  586 + }
  587 + }
  588 + }
  589 + return sjgl;
  590 + }
  591 +
  592 + public double culateLjgl(List<ScheduleRealInfo> lists) {
  593 + // TODO Auto-generated method stub
  594 + double ljgl=0;
  595 + for (int i = 0; i < lists.size(); i++) {
  596 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  597 + if (!isInOut(scheduleRealInfo)) {
  598 + if(!(scheduleRealInfo.getStatus() == -1)){
  599 + if(scheduleRealInfo.isSflj()){
  600 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  601 + if(childTaskPlans.isEmpty()){
  602 + ljgl=Arith.add(ljgl,scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());
  603 + }else{
  604 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  605 + while (it.hasNext()) {
  606 + ChildTaskPlan childTaskPlan = it.next();
  607 + if(childTaskPlan.getMileageType().equals("service") && childTaskPlan.getCcId()==null){
  608 + if (!childTaskPlan.isDestroy()) {
  609 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  610 + ljgl=Arith.add(ljgl,jhgl);
  611 + }
  612 + }
  613 + }
  614 + }
  615 + }else{
  616 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  617 + if(childTaskPlans.isEmpty()){
  618 + double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
  619 + double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
  620 + double zjlc=Arith.sub(jhlc, jhlcOrig);
  621 + if(zjlc>0){
  622 + ljgl=Arith.add(zjlc, ljgl);
  623 + }
  624 + }else{
  625 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  626 + while (it.hasNext()) {
  627 + ChildTaskPlan childTaskPlan = it.next();
  628 + if(childTaskPlan.getCcId()==null){
  629 + if("service".equals(childTaskPlan.getMileageType())&&"临加".equals(childTaskPlan.getType1())){
  630 + if (!childTaskPlan.isDestroy()) {
  631 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  632 + ljgl=Arith.add(ljgl,jhgl);
  633 + }
  634 + }
  635 + }
  636 + }
  637 + }
  638 + }
  639 + }
  640 +
  641 + }
  642 + }
  643 + return ljgl;
  644 + }
  645 +
  646 + public double culateCJLC(List<ScheduleRealInfo> list, String item) {
  647 + // TODO Auto-generated method stub
  648 + double sum = 0;
  649 + Set<ChildTaskPlan> cts;
  650 + for(ScheduleRealInfo sch : list){
  651 + if (sch.isSflj())
  652 + continue;
  653 + cts = sch.getcTasks();
  654 + if(isInOut(sch))
  655 + continue;
  656 + //有子任务
  657 + if (cts != null && cts.size() > 0) {
  658 + for(ChildTaskPlan c : cts){
  659 + if(c.getCcId()==null){
  660 + if(c.getMileageType().equals("service")){
  661 + if(item.equals("其他")){
  662 + if(c.isDestroy() &&
  663 + ((c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item)||
  664 + (c.getDestroyReason()==null?"": c.getDestroyReason()).equals("")))
  665 + sum = Arith.add(sum, c.getMileage());
  666 + }else{
  667 + if(c.isDestroy() && (c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item))
  668 + sum = Arith.add(sum, c.getMileage());
  669 + }
  670 + }
  671 + }
  672 + }
  673 + }
  674 +
  675 + //主任务烂班
  676 + else if(sch.getStatus() == -1 && !sch.isCcService()){
  677 + if(sch.getAdjustExps().equals(item) ||
  678 + (StringUtils.isEmpty(sch.getAdjustExps()) && item.equals("其他"))){
  679 + sum = Arith.add(sum, sch.getJhlcOrig());
  680 + }
  681 + }
  682 + else if(item.equals("其他")){
  683 + double diff = Arith.sub(sch.getJhlcOrig(), sch.getJhlc());
  684 + if(diff > 0){
  685 + sum = Arith.add(sum, diff);
  686 + }
  687 + }
  688 + }
  689 + return sum;
  690 + }
  691 +}