Commit eb82d022d9d0b20eb33652f87625c59393b29093

Authored by 娄高锋
1 parent 66d75254

签卡率计算方法调整:取执行中与已完成的班次(除烂班)数做分母,其中正常签卡数做分子

src/main/java/com/bsth/entity/ScheduleRealInfo.java
... ... @@ -181,6 +181,16 @@ public class ScheduleRealInfo implements Serializable{
181 181 private boolean ccService;
182 182 private Integer lpChange;
183 183  
  184 + /**
  185 + * rfid状态
  186 + */
  187 + private int rfidState;
  188 +
  189 + /**
  190 + * 起点站rfid状态
  191 + */
  192 + private int firstRfidState;
  193 +
184 194 @Override
185 195 public int hashCode() {
186 196 return (this.id + this.scheduleDateStr + this.xlBm + this.fcsj).hashCode();
... ... @@ -631,6 +641,22 @@ public class ScheduleRealInfo implements Serializable{
631 641 this.jhlcOrig = jhlcOrig;
632 642 }
633 643  
  644 + public int getRfidState() {
  645 + return rfidState;
  646 + }
  647 +
  648 + public void setRfidState(int rfidState) {
  649 + this.rfidState = rfidState;
  650 + }
  651 +
  652 + public int getFirstRfidState() {
  653 + return firstRfidState;
  654 + }
  655 +
  656 + public void setFirstRfidState(int firstRfidState) {
  657 + this.firstRfidState = firstRfidState;
  658 + }
  659 +
634 660 @Transient
635 661 private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");
636 662 /**
... ...
src/main/java/com/bsth/server_rs/bigdata/BigscreenService.java
... ... @@ -257,26 +257,6 @@ public class BigscreenService {
257 257 }
258 258  
259 259  
260   - String cardSignSql="select xl_bm,xl_name,schedule_date_str,bcs,qks,rkgzs,ckgzs"
261   - + " from card_signing "
262   - + " where schedule_date_str >= '"+date2+"' and schedule_date_str <= '"+date+"'";
263   - List<Map<String, Object>> cardSignList=jdbcTemplate.query(cardSignSql,
264   - new RowMapper<Map<String, Object>>(){
265   - @Override
266   - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
267   - Map<String, Object> m=new HashMap<String,Object>();
268   - m.put("lineCode",rs.getString("xl_bm"));
269   - m.put("lineName", rs.getString("xl_name"));
270   - m.put("date", rs.getString("schedule_date_str"));
271   - m.put("bcs", rs.getString("bcs"));
272   - m.put("qks", rs.getString("qks"));
273   - m.put("rkgzs", rs.getString("rkgzs"));
274   - m.put("ckgzs", rs.getString("ckgzs"));
275   - return m;
276   - }
277   - });
278   -
279   -
280 260 String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
281 261 + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
282 262 + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
... ... @@ -368,8 +348,6 @@ public class BigscreenService {
368 348 sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
369 349 jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
370 350 sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
371   -// bcs_qk += Long.valueOf(t.get("jhbc").toString());
372   - bcs_qk += Long.valueOf(t.get("sjbc").toString());
373 351 if(gpSet.contains(t.get("lineCode").toString())){
374 352 jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
375 353 sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
... ... @@ -411,7 +389,6 @@ public class BigscreenService {
411 389 Map<String, Object> smMap = smList.get(datesMap.get(d));
412 390 Map<String, Object> qqMap = qqList.get(datesMap.get(d));
413 391 Map<String, Object> gpMap = gpList.get(datesMap.get(d));
414   - Map<String, Object> qkMap = qkList.get(datesMap.get(d));
415 392  
416 393 ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));
417 394 ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));
... ... @@ -421,8 +398,6 @@ public class BigscreenService {
421 398 smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));
422 399 qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
423 400 qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
424   -// qkMap.put("jh", Long.valueOf(qkMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));
425   - qkMap.put("jh", Long.valueOf(qkMap.get("jh").toString()) + Long.valueOf(t.get("sjbc").toString()));
426 401 if(gpSet.contains(t.get("lineCode").toString())){
427 402 gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
428 403 gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
... ... @@ -431,19 +406,36 @@ public class BigscreenService {
431 406 }
432 407 }
433 408  
434   - for(Map<String, Object> t : cardSignList){
435   - if(yyLine.contains(t.get("lineCode").toString())){
436   - String d = t.get("date").toString();
437   - if(date.equals(d)){
438   -// bcs_qk += Long.valueOf(t.get("bcs").toString());
439   - qks += Long.valueOf(t.get("qks").toString());
440   - }
441   - Map<String, Object> qkMap = qkList.get(datesMap.get(d));
442   -// qkMap.put("jh", Long.valueOf(qkMap.get("jh").toString()) + Long.valueOf(t.get("bcs").toString()));
443   - qkMap.put("sj", Long.valueOf(qkMap.get("sj").toString()) + Long.valueOf(t.get("qks").toString()));
  409 +
  410 + //计算签卡率
  411 + for(String d : dates){
  412 + if(d!=null && d.trim().length() > 0){
  413 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(d);
  414 + Map<String, Object> qkMap = qkList.get(datesMap.get(d));
  415 + long jh = 0, sj = 0;
  416 + for(ScheduleRealInfo s : findAll){
  417 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  418 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  419 + ++jh;
  420 + String sty = decimalToBinary(s.getRfidState());
  421 + Integer state = Integer.parseInt(sty);
  422 + if ((state & 4) == 4) {
  423 + ++sj;
  424 + }
  425 + }
  426 + }
  427 + }
  428 + qkMap.put("jh", jh);
  429 + qkMap.put("sj", sj);
  430 +
  431 + if(date.equals(d)){
  432 + bcs_qk = jh;
  433 + qks = sj;
  434 + }
444 435 }
445 436 }
446 437  
  438 +
447 439 List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();
448 440 zxlList.addAll(ccList);
449 441 zxlList.addAll(bcList);
... ... @@ -696,27 +688,6 @@ public class BigscreenService {
696 688 }
697 689  
698 690  
699   - String cardSignSql="select xl_bm,xl_name,schedule_date_str,bcs,qks,rkgzs,ckgzs"
700   - + " from card_signing "
701   - + " where schedule_date_str >= '"+date2+"' and schedule_date_str <= '"+date+"'"
702   - + " and gs_bm = '"+gsdm+"'";
703   - List<Map<String, Object>> cardSignList=jdbcTemplate.query(cardSignSql,
704   - new RowMapper<Map<String, Object>>(){
705   - @Override
706   - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
707   - Map<String, Object> m=new HashMap<String,Object>();
708   - m.put("lineCode",rs.getString("xl_bm"));
709   - m.put("lineName", rs.getString("xl_name"));
710   - m.put("date", rs.getString("schedule_date_str"));
711   - m.put("bcs", rs.getString("bcs"));
712   - m.put("qks", rs.getString("qks"));
713   - m.put("rkgzs", rs.getString("rkgzs"));
714   - m.put("ckgzs", rs.getString("ckgzs"));
715   - return m;
716   - }
717   - });
718   -
719   -
720 691 String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
721 692 + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
722 693 + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
... ... @@ -808,8 +779,6 @@ public class BigscreenService {
808 779 sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
809 780 jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
810 781 sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
811   -// bcs_qk += Long.valueOf(t.get("jhbc").toString());
812   - bcs_qk += Long.valueOf(t.get("sjbc").toString());
813 782 if(gpSet.contains(t.get("lineCode").toString())){
814 783 jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
815 784 sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
... ... @@ -851,7 +820,6 @@ public class BigscreenService {
851 820 Map<String, Object> smMap = smList.get(datesMap.get(d));
852 821 Map<String, Object> qqMap = qqList.get(datesMap.get(d));
853 822 Map<String, Object> gpMap = gpList.get(datesMap.get(d));
854   - Map<String, Object> qkMap = qkList.get(datesMap.get(d));
855 823  
856 824 ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));
857 825 ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));
... ... @@ -861,8 +829,6 @@ public class BigscreenService {
861 829 smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));
862 830 qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
863 831 qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
864   -// qkMap.put("jh", Long.valueOf(qkMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));
865   - qkMap.put("jh", Long.valueOf(qkMap.get("jh").toString()) + Long.valueOf(t.get("sjbc").toString()));
866 832 if(gpSet.contains(t.get("lineCode").toString())){
867 833 gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
868 834 gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
... ... @@ -871,19 +837,38 @@ public class BigscreenService {
871 837 }
872 838 }
873 839  
874   - for(Map<String, Object> t : cardSignList){
875   - if(yyLine.contains(t.get("lineCode").toString())){
876   - String d = t.get("date").toString();
877   - if(date.equals(d)){
878   -// bcs_qk += Long.valueOf(t.get("bcs").toString());
879   - qks += Long.valueOf(t.get("qks").toString());
880   - }
881   - Map<String, Object> qkMap = qkList.get(datesMap.get(d));
882   -// qkMap.put("jh", Long.valueOf(qkMap.get("jh").toString()) + Long.valueOf(t.get("bcs").toString()));
883   - qkMap.put("sj", Long.valueOf(qkMap.get("sj").toString()) + Long.valueOf(t.get("qks").toString()));
  840 +
  841 + //计算签卡率
  842 + for(String d : dates){
  843 + if(d!=null && d.trim().length() > 0){
  844 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(d);
  845 + Map<String, Object> qkMap = qkList.get(datesMap.get(d));
  846 + long jh = 0, sj = 0;
  847 + for(ScheduleRealInfo s : findAll){
  848 + if(s.getGsBm() != null && s.getGsBm().trim().equals(gsdm)){
  849 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  850 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  851 + ++jh;
  852 + String sty = decimalToBinary(s.getRfidState());
  853 + Integer state = Integer.parseInt(sty);
  854 + if ((state & 4) == 4) {
  855 + ++sj;
  856 + }
  857 + }
  858 + }
  859 + }
  860 + }
  861 + qkMap.put("jh", jh);
  862 + qkMap.put("sj", sj);
  863 +
  864 + if(date.equals(d)){
  865 + bcs_qk = jh;
  866 + qks = sj;
  867 + }
884 868 }
885 869 }
886 870  
  871 +
887 872 List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();
888 873 zxlList.addAll(ccList);
889 874 zxlList.addAll(bcList);
... ... @@ -2111,27 +2096,6 @@ public class BigscreenService {
2111 2096 });
2112 2097  
2113 2098  
2114   - String cardSignSql="select gs_bm,xl_bm,xl_name,schedule_date_str,bcs,qks,rkgzs,ckgzs"
2115   - + " from card_signing "
2116   - + " where schedule_date_str = '"+date+"'";
2117   - List<Map<String, Object>> cardSignList=jdbcTemplate.query(cardSignSql,
2118   - new RowMapper<Map<String, Object>>(){
2119   - @Override
2120   - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
2121   - Map<String, Object> m=new HashMap<String,Object>();
2122   - m.put("gs",rs.getString("gs_bm")!=null?gsMap.get(rs.getString("gs_bm")):"");
2123   - m.put("lineCode",rs.getString("xl_bm"));
2124   - m.put("lineName", rs.getString("xl_name"));
2125   - m.put("date", rs.getString("schedule_date_str"));
2126   - m.put("bcs", rs.getString("bcs"));
2127   - m.put("qks", rs.getString("qks"));
2128   - m.put("rkgzs", rs.getString("rkgzs"));
2129   - m.put("ckgzs", rs.getString("ckgzs"));
2130   - return m;
2131   - }
2132   - });
2133   -
2134   -
2135 2099 Map<String, Integer> sortMap = new HashMap<String, Integer>();
2136 2100 sortMap.put("杨高", 0);
2137 2101 sortMap.put("上南", 1);
... ... @@ -2167,8 +2131,6 @@ public class BigscreenService {
2167 2131 mapPut(m, "sjsmbc", t.get("sjsmbczds").toString());
2168 2132 mapPut(m, "jhqqbc", t.get("jhszfcs").toString());
2169 2133 mapPut(m, "sjqqzd", t.get("sjszfczds").toString());
2170   -// mapPut(m, "bcs", t.get("jhbc").toString());
2171   - mapPut(m, "bcs", t.get("sjbc").toString());
2172 2134 if(gpSet.contains(t.get("lineCode").toString())){
2173 2135 mapPut(m, "jhgpqqbc", t.get("jhszfcs").toString());
2174 2136 mapPut(m, "sjgpqqzd", t.get("sjszfczds").toString());
... ... @@ -2185,8 +2147,6 @@ public class BigscreenService {
2185 2147 mapPut(pjMap, "sjsmbc", t.get("sjsmbczds").toString());
2186 2148 mapPut(pjMap, "jhqqbc", t.get("jhszfcs").toString());
2187 2149 mapPut(pjMap, "sjqqzd", t.get("sjszfczds").toString());
2188   -// mapPut(pjMap, "bcs", t.get("jhbc").toString());
2189   - mapPut(pjMap, "bcs", t.get("sjbc").toString());
2190 2150 if(gpSet.contains(t.get("lineCode").toString())){
2191 2151 mapPut(pjMap, "jhgpqqbc", t.get("jhszfcs").toString());
2192 2152 mapPut(pjMap, "sjgpqqzd", t.get("sjszfczds").toString());
... ... @@ -2196,23 +2156,31 @@ public class BigscreenService {
2196 2156 }
2197 2157 }
2198 2158  
2199   - for(Map<String, Object> t : cardSignList){
2200   - if(yyLine.contains(t.get("lineCode").toString())){
2201   - if(sortMap.get(t.get("gs")) != null){
2202   - Map<String, Object> m = resList.get(sortMap.get(t.get("gs")));
2203   -// mapPut(m, "bcs", t.get("bcs").toString());
2204   - mapPut(m, "qks", t.get("qks").toString());
2205   -// mapPut(m, "rkgzs", t.get("rkgzs").toString());
2206   -// mapPut(m, "ckgzs", t.get("ckgzs").toString());
2207   - }
2208   -
2209   -// mapPut(pjMap, "bcs", t.get("bcs").toString());
2210   - mapPut(pjMap, "qks", t.get("qks").toString());
2211   -// mapPut(pjMap, "rkgzs", t.get("rkgzs").toString());
2212   -// mapPut(pjMap, "ckgzs", t.get("ckgzs").toString());
2213   - }
2214   - }
2215 2159  
  2160 + //计算签卡率
  2161 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  2162 + long jh = 0, sj = 0;
  2163 + for(ScheduleRealInfo s : findAll){
  2164 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  2165 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  2166 + if(s.getGsBm()!=null && sortMap.get(gsMap.get(s.getGsBm())!=null?s.getGsBm():"") != null){
  2167 + Map<String, Object> m = resList.get(sortMap.get(gsMap.get(s.getGsBm())));
  2168 + ++jh;
  2169 + mapPut(m, "bcs", 1);
  2170 + String sty = decimalToBinary(s.getRfidState());
  2171 + Integer state = Integer.parseInt(sty);
  2172 + if ((state & 4) == 4) {
  2173 + ++sj;
  2174 + mapPut(m, "qks", 1);
  2175 + }
  2176 + }
  2177 + }
  2178 + }
  2179 + }
  2180 + mapPut(pjMap, "bcs", jh);
  2181 + mapPut(pjMap, "qks", sj);
  2182 +
  2183 +
2216 2184 for(Map<String, Object> m : resList){
2217 2185 m.put("date", date);
2218 2186  
... ... @@ -2814,7 +2782,7 @@ public class BigscreenService {
2814 2782 }
2815 2783  
2816 2784 for(ScheduleRealInfo s : list_s){
2817   - if(!(isInOut(s)) && !s.isCcService()){
  2785 + if(!isInOut(s) && !s.isCcService()){
2818 2786 String[] split = s.getFcsj().split(":");
2819 2787 Long time = Long.valueOf(split[0]) * 60 + Long.valueOf(split[1]);
2820 2788 String minfcsj = minfcsjMap.get(s.getXlBm())!=null?minfcsjMap.get(s.getXlBm()).toString():"02:00";
... ... @@ -2836,6 +2804,8 @@ public class BigscreenService {
2836 2804 }
2837 2805 }
2838 2806  
  2807 + List<ScheduleRealInfo> notYetList = new ArrayList<ScheduleRealInfo>();
  2808 +
2839 2809 long sum = scheduleMap.keySet().size(), zwd = 0;//早未到数
2840 2810 long yg_z = 0, sn_z = 0, jg_z = 0, nh_z = 0;
2841 2811 long yg_zwd = 0, sn_zwd = 0, jg_zwd = 0, nh_zwd = 0;
... ... @@ -2867,6 +2837,7 @@ public class BigscreenService {
2867 2837 } else if("26".equals(s.getGsBm())){
2868 2838 nh_zwd += 1;
2869 2839 }
  2840 + notYetList.add(s);
2870 2841 }
2871 2842 }
2872 2843 }
... ... @@ -2881,15 +2852,12 @@ public class BigscreenService {
2881 2852 resMap.put("notYet_22", jg_zwd);
2882 2853 resMap.put("sum_26", nh_z);
2883 2854 resMap.put("notYet_26", nh_zwd);
  2855 + resMap.put("notYetList", notYetList);
2884 2856 return resMap;
2885 2857 }
2886 2858  
2887 2859 public static void main(String[] args){
2888   - double a = 0.10;
2889   - double b = 0.0;
2890   - BigDecimal a1 = new BigDecimal(a);
2891   - BigDecimal b1 = new BigDecimal(b);
2892   - System.out.println(a1.compareTo(b1));
  2860 +
2893 2861 }
2894 2862  
2895 2863 public List<Map<String, Object>> createMap(String type, String[] dates){
... ... @@ -3158,5 +3126,17 @@ public class BigscreenService {
3158 3126 return o1.getFcsjActualTime().compareTo(o2.getFcsjActualTime());
3159 3127 }
3160 3128 }
  3129 +
  3130 + public static String decimalToBinary(int n) {
  3131 + String str = "";
  3132 + if(n == 0){
  3133 + return str = "0";
  3134 + }
  3135 + while (n != 0) {
  3136 + str = n % 2 + str;
  3137 + n = n / 2;
  3138 + }
  3139 + return str;
  3140 + }
3161 3141  
3162 3142 }
... ...